#79 overallEvergreen
CS 61C Great Ideas in Computer Architecture
UC Berkeley
5 recommenders · 6 threads · recommended in 6 years, 2007–2023 · score 5.7
CS 61C, UC Berkeley's introductory computer architecture course, covers how machines work from C and assembly through CPU design, including number representation such as floating point. Its lectures are available free as video recordings, with some lectures varying between years.
Commenters call it a transformative foundation for understanding how computers actually work, and recommend it especially for learning C and C++ and machine-level behavior.
CS Fundamentals & Systemsbeginnerfreevideo lectures#computer architecture#assembly#mips#c#floating point#berkeley
Recommendations by year
20062026
I did not appreciate it at the time but CS 61 abc absolutely transformed by foundational understanding of computer science and the concepts they push are absolutely and non-negotiably important for someone to learn.
My only recommendation is to learn programming in a more useful and productive language like C++, as the thing you do not want to do in CS61A is to simultaneously learn to program and learn the concepts in those courses. The right way to think about it is those courses are trying to make you go “ohh that’s how things actually work”.
Welcome to the best lectures of your life:
http://webcast.berkeley.edu/course_details_new.php?seriesid=...
also available via iTunes U. I'm currently listening to them on my commute. Note, if you do actually go through the whole course -- you'll need to listen to a different year for lecture 24 or so -- that one is skipped. One of the highlights of my day is actually coming home and re-looking up what he's talking about.
(Oh, and of course you can just listen to the two Floating Point lectures. It has to do with the non-uniform -- or at least non-linearly uniform mapping of numbers, represented with a significand/mantissa and an exponent, onto the set of real numbers + the fact that the exponent used is in base 2, in the hardware, so the floating point numbers are spread about in a particular way. The difference between real numbers, as you tick up the odometer with each bit, varies depending on where you are in the number line (with big numbers, it's actually much more, with smaller numbers it's pretty minimal, but not unnoticeable as seen with this example. Does that make sense? Maybe I'm off about this... Anyway, still obviously recommend the lectures. And now, I'm going to read up more on ALUs and MUXs..)
(As you know) most of the lower div EECS courses inherit slide decks and the coverage is set by the department. CS70 has a wonderful set of notes which should be a book. I regularly go through the CS61C, CS152 and CS252 decks; those are great Berkeley classes. CS162 has a good set and then Kubi has his which even better. Hilfinger's CS61A notes were quite good. The deck the EE40 prof used was based on a previous semester and it was pretty good. It's just that the class is an insane amount of material and work.
There was an intent behind the work. All of the lower div classes are hard with a massive amount of content. But you can show up a Berkeley from a substandard high school on the wrong side of the tracks and blow it out of the water; a buddy of mine was like that and went to Columbia for his PhD. It's very simple. You just have to work. Immediately. Day one. I don't think Berkeley EECS rewards creativity. Indeed I think EECS punishes creativity. But EECS teaches its students to work their asses off, regardless of whether they came from Lick Wilmerding or Skyline.
Go Bears.
You need to understand how machines work if you want to be a good C/C++ programmer. I suggest Berkeley's CS 61C video lectures: https://www.youtube.com/playlist?list=PL58D76972AD4CB040.
I would recommend the CS 61C course videos from Berkeley: http://www.youtube.com/playlist?list=PL01C2A0DE46A54CA9
It uses MIPS assembly, which you can run on a simulator. I don't think many machine architecture classes teach x86 because it's more complex. The MIPS knowledge from that course has translated easily to x86 in my tiny experience of peering into my compiler's assembly output.
free computer science video lectures: http://www.lecturefox.com/computerscience
The first on the list is great: Dr. Garcia presents the outstanding computer science lecture Machine Structures (C, Assembly, CPU design...) at the University of California Berkeley.