#150 overall
The Hardware/Software Interface
Coursera
4 recommenders · 3 threads · recommended in 1 year, 2015 · score 2.9
An advanced Coursera course from the University of Washington on how software interacts with hardware, covering C, memory, assembly, and the machine-level view of programs. It is based on the CS:APP textbook by Bryant and O'Hallaron.
Commenters call it their favorite online course and praise its assignments, and one notes it is a great companion to the CS:APP book.
CS Fundamentals & Systemsadvancedfreevideo lectures#computer systems#c#assembly#memory#cs:app#borriello
Recommendations by year
20062026
My Coursera profile lists 67 courses, I have completed ~15 of them and with a passing grade ~8 of them. My most favorite one, which for me was the hardest as well, was The Hardware/Software Interface by Gaetano Borriello and Luis Ceze[1]. I also liked Computer Networks[2] even though it's an introductory course, Functional Programming Principles in Scala[3] which is surprisingly easy unlike the follow up course[4], High Performance Scientific Computing[5], Software Security[6] and Cryptography[7] although I prefer Boneh's class. For non-IT related courses I liked Think Again: How to Reason and Argue[8], Crafting an Effective Writer: Tools of the Trade (Fundamental English Writing)[9], Child Nutrition and Cooking[10] and Work Smarter, Not Harder: Time Management for Personal & Professional Productivity[11].
I often take time to think why I have so many started but not finished courses. Most of them are abandoned on the first week and my assumption is that when I enroll my expectations for the course content and the workload needed are wrong.
Occasionally, I abandon courses because they demand too much time to get something working on linux or because of luck of time. The thing that I noticed about me is that when I get a little behind the schedule then it's almost certainly that I will abandon the course. Additionally, when I try to commit on two courses at the same time then it's certain that I will abandon at least one (usually both).
[1]: https://www.coursera.org/course/hwswinterface
[2]: https://www.coursera.org/course/comnetworks
[3]: https://www.coursera.org/course/progfun
[4]: https://www.coursera.org/course/reactive
[5]: https://www.coursera.org/course/scicomp
[6]: https://www.coursera.org/course/softwaresec
[7]: https://www.coursera.org/course/cryptography
[8]: https://www.coursera.org/course/thinkagain
[9]: https://www.coursera.org/course/basicwriting
[10]: https://www.coursera.org/learn/childnutrition/home/welcome
[11]: https://www.coursera.org/learn/work-smarter-not-harder/home/...
The Hardware/Software Interface - https://class.coursera.org/hwswinterface-002
This course is amazing, especially for the assignments.
If I am not mistaken, the book is called Computer Systems: A Programmer's Perspective (CS:APP) by Randal E. Bryant and David R. O'Hallaron. It's very nicely written, and 3rd edition just came out this year. Coursera also has an archive of a great course based on this book from University of Washington - 'The Hardware/Software Interface'.
If you like this, coursera has a great course called the "Hardware Software Interface".
http://coursera.org/course/hwswinterface
The course takes a similar approach of starting with analyzing how C interacts with memory.