Jake Gutierrez's Notes
T

Computer Systems

Status: #in-progress

General Outline

Nand2Tetris Part 1 Retrospective

Part 1 involves the hardware side of computers. From building simple OR, and AND gates from NAND gates to building the CPU and an Assembler. This part was great for connecting the dots between logic gates and assembly. However, it was very surface level.

Since the authors state the course can be taken after an introductory programming course, the content itself is introductory to the hardware and low-level side of computers. For instance, the book doesn't cover how the NAND gate itself is implemented and is up to the reader to figure that out more-or-less. This summarizes a complaint myself, and many others, had with this course was that it was very surface level. Part 2 of the book deals with Jack, a Java-like programming language, which may does its job of teaching concepts, but Jack is not a programming language used in day-to-day applications.

After Part 1

[[Teach Yourself CS]] mentions Part 1 of this course in its curriculum whereas OSSU has both parts. [[Teach Yourself CS]] says to do Part 1 of this course and then go back to CS:APP to refine that knowledge.

Personally, I'd like to go in to the nitty-gritty, which might not be the best if I were to complete Part 2 of this course. I'd like to get more into C for the sake of [[Intro to Operating Systems]] and going through CS:APP seems like the best route to take. Additionally, I have somewhat lost interest in doing Part 2 of Nand2Tetris

Intro to Computer Systems Syllabus

TopicLecturesReadingsRecitationLab
OverviewPart 11
Bits, Bytes and IntsPart 1 | Part 22.1-2.3Data Lab and Data RepresentationsData Lab
Floating PointPart 12.4
Machine ProgBasics
Control
Procedures
Data
Advanced
3.1-3.5
3.6
3.7
3.8-3.9
3.10
Bomb LabBomb Lab
Code OptimizationPart 15Attack Lab and StacksAttack Lab
The Memory HierarchyPart 16.1-6.3C Review
Cache MemoriesPart 16.4-6.7Cache Lab and BlockingCache Lab
LinkingPart 17
ECFExceptions & Process
Signals
8.1-8.4
8.5-8.8
System I/OPart 110Shell LabShell Lab
Virtual MemoryConcepts
Systems
9.1-9.6
9.7-9.8
Storage AllocationBasic
Advanced
9.9
9.9-9.11
Malloc Lab
Debugging Malloc Lab
Malloc Lab
Network ProgrammingPart 1
Part 2
11.1-11.4
11.5-11.6
Concurrent ProgrammingPart 112.1-12.3
SynchronizationBasic
Advanced
12.1-12.3
12.4;12.5.1-3
Proxy LabProxy Lab
Thread-Level ParallelismPart 112.6
The Future of ComputingPart 1
Table Of Contents