Hacker Courses The online courses programmers keep recommending, ranked from 20 years of public forum comments.
i
#30 overallEvergreen

15-213 Introduction to Computer Systems

Carnegie Mellon University

12 recommenders · 15 threads · recommended in 11 years, 2009–2024 · score 19.1

Go to course ↗

Carnegie Mellon's undergraduate introduction to computer systems, covering how programs run at the level of machine code, memory, linking, and the operating system, built around labs such as the bomb lab and malloc lab. It is based on the CSAPP textbook and its lectures and labs are publicly available.

Commenters call it one of the best-taught courses they've taken, praise its labs and online lecture presentation, and recommend it as a foundation in systems programming and x86 assembly.

CS Fundamentals & Systemsintermediatefreemixed#computer systems#x86#assembly#c#memory#csapp

Recommendations by year

20062026

What commenters said (17)

  1. Strongly recommendswadkar2020in “Ask HN: What's the best resource for learning modern x64 assembly?”

    Came here to recommend the same. You can find the 15-213 course videos online. I have done the course and can’t recommend it enough. Do the labs, sincerely. You’ll learn a lot!

  2. Strongly recommendsqntty2016in “Computer Science courses with video lectures”

    I'm currently working through CMU's 15-213. I highly recommend lectures 5-9 for anyone who never learned how processors handle functions calls on the lowest level. Part of the effectiveness of the class is CMU's interface for displaying the classes which is the best online class experience I've ever encountered.

  3. Strongly recommends213er2015in “CMU Binary Bomb meets Symbolic Execution and Radare”

    I did this lab as part of CMU's excellent intro to systems class (15-213, which also happens to be the zip code of CMU). Its one of the best courses offered in the CS department. As far as bomb lamb itself, I had a lot of fun doing this lab and getting to use gdb.

    For anyone interested, here is the class and labs - https://www.cs.cmu.edu/~213/.

  4. Strongly recommendsLocke16892010in “Ask HN: Do CS students enjoy C anymore?”

    At Northwestern this course is called "Introduction to Computer Systems." To this day it is the best class I've taken at Northwestern. I guess I'm glad the professor decided to take the course with him when he left CMU.

  5. Strongly recommendsfortes2009in “The 75% answer”

    Although I'm not a fan of lower-level programming (I'm a UI guy), I loved 15-213. One of my favorite (and best-taught) courses.

  6. Recommendshackermailman2024in “Ask HN: Learning Linux from Scratch”

    There's some good lectures from CMU if you search for 15-213 on YouTube. The lectures explain how x86-64 works and enough about operating systems you know how virtual memory and signals work. Then any OS resource listed here or try MITs it has YouTube lectures https://pdos.csail.mit.edu/6.828/2021/schedule.html

  7. Recommendsdoktrin2023in “NSA Ghidra software reverse engineering framework”
    I'm out of my depth when it comes to loading something up in a debugger or whatever (is ghidra a debugger or what's the difference?)

    When you hear "debugger", think "breakpoints". It's any tool that lets you do things like set breakpoints and step through code execution.

    Most debuggers will let you view machine code or bytecode respectively, but they won't decompile binaries or bytecode into the original higher level language.

    Ghidra does include a basic debugger, but it can also do lots of other stuff (including decompilation).

    I don't know if that makes me teachable or beyond help, but I'd be an eager student.

    It would probably help to get some baseline familiarity with systems programming. Check out the "15-213" CS course. The lectures are on YT, the reference book is probably online, and the labs are here :

    https://www.cs.cmu.edu/~213/labs.html

  8. Recommendscepher2021in “RISC-V: The New Architecture on the Block”

    That class looks amazing. Took a higher level computer systems course in undergrad that roughly followed http://csapp.cs.cmu.edu/ (great course).

  9. Recommendswdencker2021in “Ask HN: What are the best maintained how-to sites for Linux?”

    For an academic take on "how-to Linux", I'd recommend CMU's CS 15-213 course [1]. The systems class I took in college borrowed liberally from it, IIRC.

    Also, I'm putting together a master list [2] of the best resources from this thread and the other one OP mentioned. Let me know if I'm missing anything!

    [1] https://www.cs.cmu.edu/~213/schedule.html

    [2] https://trove.to/wes/trove/learn-linux

  10. Recommendshackermailman2018in “Ask HN: Most effective path to become a solid systems practitioner?”

    Click on 'old video' to see the lectures, this covers x86 arch from a programmer's perspective, such as writing cache friendly code http://www.cs.cmu.edu/~./213/schedule.html Database lectures here including a really good advanced playlist on building your own dbms https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA/pla... From there the book Programming Rust is a great book about systems programming. There's also an OS class https://www.rust-class.org/pages/classes.html or you can try taking some CS theory classes https://www.youtube.com/channel/UCWnu2XymDtORV--qG2uG5eQ/pla...

    Andrew S Tanenbaum has a Distributed Systems and OS book too that most universities still use.

  11. Recommendscglouch2017in “Implementing Malloc: Students and Systems Programming [pdf]”

    The course itself is great too - CMU actually posts the video lectures on their website, and the labs are available as well:

    http://www.cs.cmu.edu/afs/cs/academic/class/15213-s16/www/sc...

    http://csapp.cs.cmu.edu/3e/labs.html

  12. Recommendshackermailman2017in “Computer Science Education”

    Carnagie Mellon has some open too http://www.cs.cmu.edu/~213/schedule.html (Lectures) https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.a...

    That book you can get the global 3rd version from Abe Books for $20something since you aren't in Can/USA

    There's other courses in there, like this awesome math/compsci course https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.a... (click on the RSS(Subscribe) logo in the upper right, can download them). They also have some fully open courses like this db course with lectures on youtube http://15721.courses.cs.cmu.edu/spring2016/

  13. Recommendsscott_s2012in “Learning C with gdb”

    Our Computing Systems course had two projects that absolutely required using gdb:

    http://courses.cs.vt.edu/~cs3214/fall2011/bomblab/bomblab-cs...

    http://courses.cs.vt.edu/~cs3214/fall2011/buflab/buflab-cs32...

    Our version of the course was adapted from the CMU course: http://csapp.cs.cmu.edu/ I thought it was an excellent course. It taught students both concepts and skills that I had picked up in a much more ad-hoc manner.

  14. Recommendshga2010in “What are the best programming books around?”

    For low level software architecture, at the level of the firmware that drives processors (plus the electronics that are below that), as NonEUCitizen recommended MIT's 6.004 is a good bet (http://ocw.mit.edu/courses/electrical-engineering-and-comput...).

    For the medium level, assembly language and on up a fair bit (at least to C), CMU's got what looks like a great course and book: http://www.cs.cmu.edu/~213/ There's enough meat on the web page for the course that it should give you an idea if you want to get the book.

    For the higher levels, in addition to the MIT Computer System Engineering courses mentioned by Mithrandir (http://news.ycombinator.com/item?id=1850311), especially 6.033, check out this classic from the '70s: Lions' Commentary on UNIX 6th Edition, with Source Code (http://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6th...).

    Me and a lot of other people learned the basics from it, and while it's certainly dated, it has the advantage of being lucid and complete while not being too big or overwhelming, and of course nowadays if you want to go so far as running a Version 6 UNIX there are PDP-11 simulators that you can use for the purpose. I.e. it's a good foundation, like SICP is for languages and TAOCP is for algorithms (although there are less detailed and difficult books to get you started on algorithms that you might want to try first).

    Good luck and enjoy!

  15. Recommendshga2010in “Ask HN: Start-up success as a non-technical?”

    "I personally would never be the first programmer in someone else's company, many other hackers are similar."

    Including myself; the one time I inadvertently violated that it ended in tears (the idiot penny pinching salesman who was the founder tried to put off really hiring the first programmer until he got at least 1 other programmer ... and the first got a better offer; I think the only benefit I got out of that was by the end of it I could port code between subtly different versions of UNIX in my sleep (1H83)). In that case, it turned out to be impossible to hire the 2nd programmer and the start-up never started up.

    As for your sequencing recommendation, I think it's better to learn foundational CS with something like SICP/6.001 and then reifying it with C (this CMU course looks damned good: http://www.cs.cmu.edu/~213/index.html). I think it's easier to make your mental tool box bigger if you can do it this way.

  16. Mentionsgeorgecmu2022in “Introduction to Algorithms (2020)”

    Here's a comment I left on a different thread a few months ago, which you may find useful if you're looking for CS contents:

    ---

    There are a lot of book recommendations, but I would not focus on books if I wanted to get the equivalent of a solid CS education. Instead I would work through university lecture slides, assignments, and exams -- basically fast forward through a CS undergrad leveraging what you already know. I'm partial to CMU's CS syllabus for obvious reasons, but I find that it's also one of the most open and available resources on the web; i.e. not locked in on an intranet, etc.

    With pre-existing background in software development the basic syllabus is more than doable in a 3-4 months. There are two sequences below: programming and theoretical fundamentals; you can do them in parallel.

    Programming:

    15-211: Introduction to Data Structures. Used to be in C++; now looks like it's in Java. https://www.cs.cmu.edu/~mjs/121/lectures.html

    15-212: Principles of Programming. Still in ML. https://www.cs.cmu.edu/~me/212/schedule.html | https://www.cs.cmu.edu/~fp/courses/96-212/ (unlocked assignment pages)

    15-213: Intro to Computer Systems. I hesitate to recommend this; 90% of the value in this course is in the labs and assignments, so it's difficult to do on one's own, but I would at least go through the slides and try to work through exams. https://www.cs.cmu.edu/~213/schedule.html

    Theoretical:

    15-251: Great Ideas in Theoretical Computer Science. Used to be Discrete Math with a heavy CS lean; it may have evolved. https://www.cs.cmu.edu/~15251/schedule.html

    15-451: Algorithms. Here's a decade worth of lectures, exams and assignments - take your pick: https://www.cs.cmu.edu/~15451/ The 2013 course looks pretty complete: https://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15451-f...

    Next steps:

    Since you are interested in VR, etc, you should probably look into the Computer Graphics courses. Note that the undergrad and grad courses are combined; the only difference is the expectations:

    15-462: Computer Graphics http://15462.courses.cs.cmu.edu/fall2020/ Exam problems and solutions are gold: http://15462.courses.cs.cmu.edu/fall2020content/exams/finals...

    15-463: Computational Photography http://graphics.cs.cmu.edu/courses/15-463/

    15-464: Technical Animation http://graphics.cs.cmu.edu/nsp/course/15464-s21/www/syllabus... http://graphics.cs.cmu.edu/nsp/course/15464-s21/www/assignme...

    Hope this helps. Good luck!

  17. Criticizesgeorgecmu2021in “Ask HN: I'm looking for a good book on the fundamentals of CS”

    There are a lot of book recommendations, but I would not focus on books if I wanted to get the equivalent of a solid CS education. Instead I would work through university lecture slides, assignments, and exams -- basically fast forward through a CS undergrad leveraging what you already know.

    I'm partial to CMU's CS syllabus for obvious reasons, but I find that it's also one of the most open and available resources on the web; i.e. not locked in on an intranet, etc.

    With pre-existing background in software development the basic syllabus is more than doable in a 3-4 months. There are two sequences below: programming and theoretical fundamentals; you can do them in parallel.

    Programming:

    15-211: Introduction to Data Structures. Used to be in C++; now looks like it's in Java. https://www.cs.cmu.edu/~mjs/121/lectures.html

    15-212: Principles of Programming. Still in ML. https://www.cs.cmu.edu/~me/212/schedule.html | https://www.cs.cmu.edu/~fp/courses/96-212/ (unlocked assignment pages)

    15-213: Intro to Computer Systems. I hesitate to recommend this; 90% of the value in this course is in the labs and assignments, so it's difficult to do on one's own, but I would at least go through the slides and try to work through exams. https://www.cs.cmu.edu/~213/schedule.html

    Theoretical:

    15-251: Great Ideas in Theoretical Computer Science. Used to be Discrete Math with a heavy CS lean; it may have evolved. https://www.cs.cmu.edu/~15251/schedule.html

    15-451: Algorithms. Here's a decade worth of lectures, exams and assignments - take your pick: https://www.cs.cmu.edu/~15451/ The 2013 course looks pretty complete: https://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15451-f...

    Next steps:

    Since you are interested in VR, etc, you should probably look into the Computer Graphics courses. Note that the undergrad and grad courses are combined; the only difference is the expectations:

    15-462: Computer Graphics http://15462.courses.cs.cmu.edu/fall2020/ Exam problems and solutions are gold: http://15462.courses.cs.cmu.edu/fall2020content/exams/finals...

    15-463: Computational Photography http://graphics.cs.cmu.edu/courses/15-463/

    15-464: Technical Animation http://graphics.cs.cmu.edu/nsp/course/15464-s21/www/syllabus... http://graphics.cs.cmu.edu/nsp/course/15464-s21/www/assignme...

    Hope this helps. Good luck!

Related courses

Keyboard

In the course grid
←↑→↓
Move between courses
Home End
Start / end of row (with Ctrl: first / last)
PgUp PgDn
Jump several rows
Enter
Open course
S
Save / unsave course
1–5
Best, Trending, Hidden gems, Evergreen, Saved
[ ]
Previous / next topic
On a course page
← →
Previous / next course in your list
S
Save / unsave
O
Open the course website
Esc
Back to the grid
Everywhere
/
Search
T
Light / dark theme
?
This help