Here I share the notes I took while taking Introduction to Computer Systems. This class was taught by Junchen Jiang and Yanjing Li. Both professors were alright and responsive on the Ed forum to questions.
This class was about teaching how a computer’s system actually works from individual bits to whole operating systems running. The class was taught by asynchronous lectures, with professors releasing the week’s videos on Monday. We were graded on 4 programming projects (no collaboration), weekly homeworks, and 2 exams. There were also optional labs that I did regarding SVN, GDB, valgrind, and pthreads. The class was taught using Computer Systems: Programmer’s Perspective
This class covered:
Here I share my lecture notes. I don’t share any code. The projects were really fun. First was a lot of bitwise manipulation puzzles, second was using Assembly to disarm a bomb, third was modeling cache memory, and last was modeling a Unix shell. Fun stuff!
This class was extremely difficult and time intensive. I really enjoyed the class and it taught interesting topics that I wish I spent more time learning how everything worked because these concepts are literally running all computers. I feel like this class probably best prepared me to potentially code in a more computer science focused career in the future.
Here’s a cheat sheet on x86-64 as well as an intro to SVN version control.