Hacker Courses The online courses programmers keep recommending, ranked from 20 years of public forum comments.
i
15-122 Principles of Imperative Computation
Image: nand2tetris.org
#132 overall

15-122 Principles of Imperative Computation

Carnegie Mellon University

3 recommenders · 4 threads · recommended in 4 years, 2016–2023 · score 3.3

Search for it ↗

An intermediate-to-introductory CMU course that teaches reasoning about low-level software by building abstractions in C using contracts and correctness proofs. Commenters note its lecture materials and course notes are publicly available.

Commenters call it mind-blowing for teaching them how to reason about their programs, and praise the course notes as excellent.

CS Fundamentals & Systemsbeginnerfreeself-paced text#c programming#contracts#program correctness#carnegie mellon#imperative computation

Recommendations by year

20062026

What commenters said (5)

  1. Strongly recommendssgeisenh2023in “Principles of Imperative Computation”

    "Principles of Imperative Programming" is a misnomer.

    The course is really about developing techniques for reasoning about low-level software. You build up abstractions in C by leveraging contracts and writing proofs of correctness based on those contracts.

    Explore the "Learning Objectives" section to read about what the course really entails: https://www.cs.cmu.edu/~15122/about.shtml#LO

    This was the first computer science course that I took at CMU and it was absolutely mind blowing for me. I had previously taken AP CS and had played around with making games in flash and writing little programs for my graphing calculator. But this course taught me how to reason about my programs (and why that might be valuable, to begin with).

  2. Recommendsdebanjan162022in “Introduction to Algorithms (2020)”

    Yes, even for their intro course 15-122 the course notes are excellent.

  3. Recommendshackermailman2018in “Contracts For Getting More Programs Less Wrong [video]”

    I took his 15-122 course[1] back when the lectures were still open. Excellent material, especially if you're writing something like Ethereum contracts. He is a freelance computer science prof now so if you live around Raleigh, NC you can take courses with him for compilers, coq, contracts.

    [1]https://www.cs.cmu.edu/~15122/schedule.shtml

  4. Recommendshackermailman2016in “Rust is mostly safety”

    You can also check out some CMU public calendars and read their lecture notes about safe standards in programming or get introduced to contracts just so you get better at eyeballing your own libraries to look for obvious errors https://www.cs.cmu.edu/~rjsimmon/15122-s16/schedule.html

    They also have distributed programming course lecture notes that are open to the public with golang specific info on how to deal with race conditions.

    You'll have the same experience in Rust if you research why they've done certain things, but can quickly get lost on the mailing list unless you've read books like EoPL http://www.eopl3.com/

  5. Mentionsphilonoist2022in “SICP: JavaScript Edition available for pre-order”

    SICP should be shelved into the museum of the great CS courses. It served its purpose in its generation (the early batches like 1990s were already electrical engineers).Even Discrete-Math was just an experimental collection of concepts for them[1]. My mad respect and admiration to those professors at MIT.

    We moved on. Assuming we have completed nand2tetris[https://www.nand2tetris.org/], we should instead be focussing on something like HtDP[2], or maybe like how they do at Brown using Pyret[3] or my favourite, how they teach programming at CMU - C with training wheels[5][6]

    SICP as a second course, will then be fun to those passionate about mariad applications in the midst of innovation decades.

    Javascript (and sometimes Python) won't give you the insight these courses were designed for. To learn programming? Absoutely NO.

    [1]http://www.aduni.org/courses/ [2]https://news.ycombinator.com/item?id=18890417 [3]https://www.pyret.org/ [4]https://www.cs.cmu.edu/afs/cs/local/sml/common/smlguide/inde... [5]https://news.ycombinator.com/item?id=15499160 [6]https://bitbucket.org/c0-lang/docs/wiki/Home

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