Skip to content

Details

Let's Teach Ourselves Computer Science - Computer Systems! After finishing "Composing Programs", it's now time to dive into how computers really work!

We will follow Randall E. Bryant and David R. O'Hallaron's legendary book "Computer Systems: A Programmer's Perspective" (aka CS:APP). We will be using the "Third Global Edition" which can be found here:
https://www.cs.sfu.ca/~ashriram/Courses/CS295/assets/books/CSAPP_2016.pdf

For this session, please read Ch. 1 (A Tour of Computer Systems) ideally before the meeting. It's less important this week as it's only the overview chapter, but in general the idea of the Meetup is to read the material beforehand and discuss it during the session, especially the things we didn't yet understand.

In the professional world, this book is often described as the difference between a coder (someone who writes syntax) and a software engineer (someone who understands the system).
It is extremely useful if you want to learn about/work in, e.g. embedded systems, cybersecurity or backend development. And I think it will be just good "general knowledge" for anyone who is (planning on) working professionally with computers.

The book uses the C programming language (from what I understand, one needs to know just the basics, and the book teaches the really hard stuff -- pointer arithmetic and memory allocation, for example -- from scratch) and teaches the x86-64 assembly language, which is the most used assembly language for PCs, especially with Intel or AMD processors. So get ready to learn some hardcore low level programming together -- it's gonna be great ๐Ÿ˜ƒ

Here are the contents:

  1. A Tour of Computer Systems
  2. Representing and Manipulating Information
  3. Machine-Level Representation of Programs
  4. Processor Architecture
  5. Optimizing Program Performance
  6. The Memory Hierarchy
  7. Linking
  8. Exceptional Control Flow
  9. Virtual Memory
  10. System-Level I/O
  11. Network Programming
  12. Concurrent Programming

Related topics

Book Club
Learning
Computer Programming
Software Development
Computer Science

You may also like