CS50 review part I
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.
Introduction to binary and algorithms, and pseudocode
C, compiling, functions, overflow
Week 1 continued
C, compiling, CS50 tools, debugging, string and arrays, cryptography
Strings, searching, sorting, running time, sorting
Swapping, strings, memory, images
Structs, memory, debugging, data structures, stacks and queues, trees.
The privilege of a university education is a great one; the more widely it is extended the better for any country. – Winston Churchill