Developing the basics: Programming myself, post eleven


CS50 review part I

<< Read the previous post from this series  See the next post in the series>>

The Harvard University computer science course CS50

This course has been highlighted by a lot of resources as a great jump off point for programming and I have to give it its due, this fame is well deserved. If you are coming to programming with no prior background it will take you through the concepts of computer science and familiarize you with the most important aspects. The lectures move fast, especially if you watch them in 1.5x speed as I did, as they are pretty bloody long typically 1hr 45 minutes, so you need to really concentrate which can be difficult. If you take 3 minutes after the lecture to try and summarize to yourself the points of each lesson you will retain what comes at you better for gaining some very useful and practical information about computer science.

What is especially awesome in the course are the “shorts” which go into the details of the concepts mentioned in the lecture and really help to cement what you need to know. This really is an enormous course to cover and does a great job of covering such a massive subject, from the lectures alone you will get a decent insight into a broad range of topics. It starts off teaching you about the C language which it uses to familiarize you with Linux, compiling and all the programming concepts like datatypes, operands and all the other foundational parts of programming. Then as an unexpected treat, the lectures move into other aspects of computer science, like the internet and other programming languages such as Python HTML and CSS. So you get a really great overview of a lot of different things.

The problem sets are very well thought out and really make you put your new knowledge into action improving your problem-solving skills. My biggest problem though is this course will take quite a lot of time and effort to finish. The problem sets are challenging and will take a lot of time to do, I mainly took the lectures, to be honest, and left out most of the problem sets, which is terrible… but being against the clock I found I didn’t have enough time for all this too. I do plan to go back to them simply because they are the main part of this course in terms of learning programming. If I was a full-time student though this would be the perfect course, as it has it all: problem-solving, background, and good explanations. But if you are going to go for this and see it through, it will take some dedication.

I will be covering more on CS50 in the coming weeks, but here as an introduction, you are welcome to check out my raw sketch notes, to inspire you, help you revise the course, and hopefully not horrify you too much with my handwriting and drawing skills.

Week 0

Introduction to binary and algorithms, and pseudocode

cs50 week 0

Week 1

C, compiling, functions, overflow

cs50 week 1 notes

Week 1 continued

C, compiling, CS50 tools, debugging, string and arrays, cryptography

CS50 week 1 part 2

Week 2

Strings, searching, sorting, running time, sorting

CS50 week 2

Week 3

Swapping, strings, memory, images

CS50 notes

Week 4

Structs, memory, debugging, data structures, stacks and queues, trees.

CS50 week 4


The privilege of a university education is a great one; the more widely it is extended the better for any country. – Winston Churchill