CS50 — Week 0 (Scratch):
As a complete novice to the world of Computer Science, I was fascinated (and intimidated) by all there was to learn. The hot topics of Artificial Intelligence and Machine Learning have shown that Computer Science is a massive field which continues to grow.
Week 0 was a very broad introduction to Computer Science and covered topics such as the binary counting system, what algorithms were and technical syntax which would be used throughout the course and in the future (such as Loops, Variables, Boolean expressions, etc.).
Perhaps most importantly, Week 0 introduced computational thinking. Computational thinking means to think like a computer scientist when they solve problems and express it in such a way that a computer can execute the program.
I wanted to gain a better grasp on computational thinking and the BBC neatly define it using four pillars. Firstly, break a large problem into smaller, more manageable problems (decomposition). Next, solve these smaller problems by utilising previous knowledge or experience (pattern recognition). Following this, hone in on the important details which are key to solving the problem and ignore superfluous details that will not be required (abstraction). The final pillar of computational thinking is creating a step-by-step process to solve the smaller problems and combining them together to solve the large problem (algorithms).
Week 0 utilised a block-based visual programming language called Scratch which is a fantastic way to introduce programming for people of all ages. It requires a very basic understanding of what the blocks do and which blocks can be connected together and is extremely user friendly. I thought of and implemented my own project as part of the weekly problem set and thoroughly enjoyed the process. It was challenging to actually think of a unique project without basing it on the examples given and relatively time-consuming to implement. Whilst I had a number of ideas on what my project could entail, I decided to create a game for my two young nephews which would encourage them to learn how to count. To keep them (and other potential users) interested, I used dinosaurs as characters which would interact with users. I will link the address to my Scratch project below if it is of any interest to anyone else too.
It was a very rewarding experience completing this project because I could see the value and benefits of what I created when my nephews were able to play with it and learn from it. Week 0, despite its simplicity, really consolidated my interest in the world of Computer Science and my desire to learn how to program in other languages, such as C, Python and JavaScript (all languages which would be covered later on in the CS50 syllabus).
Going forward, I will be documenting topics which are explored in the lectures and documenting my programs for the labs and problem sets. There will be spoilers so please beware.
Thank you for reading!
Link to Scratch project for my dinosaur counting game: https://scratch.mit.edu/projects/488584829/editor/