100 Days of Code - Python Boot Camp Review (First 31 Days!)
Published: 2021-09-09 03:38:22

I'm a beginner at Python, so I've been looking into how to get better at it. I did some searching and found great reviews and recommendations for [100 Days of Code - The Complete Python Pro Bootcamp for 2021](https://www.udemy.com/course/100-days-of-code/) by Dr. Angela Yu. This will be my own review for her course.

So, far I have consistently done the first 31 days of the course. I allowed myself weekends to rest, because even when I was in school I had those days off! I also built in review and lights days for this Python Course so as to not burn out. 

**100 Days of Code Days 1-7**

For the first week I felt like it was my second or third time encountering some concepts at the beginning stage. When I first started with a phone app to learn Beginner Python, I primed myself for the basic concepts such as variables, data types, loops, lists, etc. During the 100 Days of Code course, I found that some things I learned in a week taking [Python for Beginners: A to Z Concise Hands-on Course](https://www.udemy.com/course/the-concise-python-3-bootcamp-2020-for-absolute-beginners/) by Wajih Bukhari were now clearer, or more in depth.

I found the blank notes template that Angela provided for note-taking very useful. There are headings for Concept, Filename, Day #, Summary, as well as labeled number lines for code and indents. The importance of indents was really drilled into me during Day 3's If / Elif / Else Lectures. Those indents really make or break the code blocks!

Some concepts, like print(f"This is a f string you can put {int}, {float}, and {str} all in the same line.") make more sense to me now. This time around, the reason for why people used f-strings clicked for me. It really is a time saver to not have to format the different data types individually.

Day 4 had an important lesson regarding reading documentation. Lists may have certain commands like .append or .extend, but there isn't a need to memorize the exact syntax. It is better to remember what the module can do, and then being able to look at the documentation for the exact command.

Day 6 with the Reeborg's World robot coding challenges were definitely hurdles I had to overcome, but the process of going through it made me understand Day 5's Loops introduction better.

Day 7's Hangman project was difficult for me and made me mindful of how I indent things, since it impacts overall functionality of the code.

**100 Days of Code Days 8-14**

This was the second week, the first 14 days were labeled Beginner level. During this time, I learned more in depth about Dictionaries and Functions. A mantra that Angela repeated throughout the course was "You won't learn anything by watching me code." And she's right. The main growth I gained was by doing the projects myself, during the "Pause this Video" moments.

The Blackjack Capstone project on Day 11 in particular was difficult, but it built upon all previous lessons, as promised. This course's strength is in the steady building of experience, day by day. 

**100 Days of Code Days 15-19**

I entered Intermediate stage on Day 15, where we made the transition from lessons done in replit.com/ to a full IDLE like PyCharm. At this point, it got past the beginner concepts I was exposed to and moved to things like Object Oriented Programing. For Day 16, learning OOP was a bit of a struggle, but on Day 17, more practice and instruction helped me to understand it better.

On Day 18 was when we started with Python's built in turtle module and GUI or Graphical User Interface. As a Graphic Designer, this was exciting to learn. As with previous projects, we broke down the steps to get a goal accomplished. Completing Day 18's challenge to digitally recreate a Hirst painting was satisfying as I saw the turtle draw each row of dots according to the code I had written.

![Hirst painting using Python](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wj5x8rwlwl24zpepu7oa.png)

Day 19 built more on the turtle module with a turtle race game. Overall, the course builds on previous knowledge. I felt I had come a long way from just beginner. 

**100 Days of Code Days 20-23**

The Snake Game, Pong, and Turtle Crossing each had their own challenges, but guided by the course instruction, it was broken down into bit-sized pieces. OOP initialization was something I had to make sure I understood in order to complete those game project based days. I've seen tutorials on how to make these games on Youtube, but I like that these game projects are within the scope of this course, and after I have learned the needed prerequisites.

**100 Days of Code Days 24-26**

Day 24 was a guide to working with Files, Directories, and Paths. It was on this day that I learned to Read/Write files in Python. This was very exciting as I could see how useful it could be for automation.

Day 25 was working with CSV and Pandas. Prior to this, I had only seen and followed along with a Youtube tutorial on how to manipulate DataFrames. It didn't hurt to take this day and refresh that knowledge. Repeated exposure and experience with a module was very useful to me as a beginner. 

Day 26 was learning List Comprehension, which felt like it leveled up my understanding of Lists and made it more concise. 

**100 Days of Code Days 27-31**

Day 27 was learning Tkinter for Python and felt like a GUI level-up. I finally learned what **args (arguments) and **kwargs (keyword arguments) were. When I was looking into implementing a GUI for a phone app, during a Youtube tutorial series, the author mentioned "kwargs" and I had no idea what that was, it sounded like an RPG monster to me. Now I know they are arguments that go into functions. 

Days 28-31 were even more Tkinter projects, each time the difficulty got higher and built off previous lessons. Learning how to use Tkinter's .grid() to layout the GUI was the most helpful.

So far this course's value is in the day by day projects. I can't transfer the knowledge learned within, I can only recommend the self-guided studying experience of going though it. It's worth the value that its all laid-out, and it does not discount using outside sources such as StackOverflow or Google. I used to do that in the past, but now I better understand the *why* of the code. I used to think syntax was very important, now I know its about thinking a certain way, breaking down the problem and figuring out what libraries, modules, and tools can help to solve the end goal. I have the other 2/3rd's left, and I look forward to how much I'll grow.