
#106 overall
6.033 Computer System Engineering
MIT OpenCourseWare
4 recommenders · 6 threads · recommended in 5 years, 2010–2025 · score 4.1
MIT OpenCourseWare course on computer system engineering, covering techniques for controlling complexity in hardware and software systems, including client-server design, operating systems, performance, networks, naming, security and privacy, fault tolerance, and recovery. Lecture videos from an older offering are also available on YouTube.
Commenters call it a principled introduction to core systems concepts and a good prerequisite for operating systems work, and one says it drove their career into systems development.
CS Fundamentals & Systemsintermediatefreevideo lectures#systems engineering#operating systems#networking#fault tolerance#MIT OCW
Recommendations by year
20062026
Wow, no idea highlights existed. Glad you used this opportunity to …uhh… highlight it via this great post.
I was at MIT just before this switch, and treasure having gotten to take these deep dive courses, even if .002 and .003 kicked my ass.
6.004 (followed up by 6.033) is probably the course that really drove my career into systems dev.
I was in Course 2 (Mechanical Engineering), but 6.004 and 6.033 were two of my favorite classes at MIT. As I remember, we spent 2 lectures covering many mistakes made in the Therac-25. We also covered the Ariane 5's first launch failure. We also covered a bunch of systems that made good design trade-offs and discussed their design spaces.
OP here. I think the best would be to do the labs in posted link, after watching the great video lectures (which have quizzes but are lacking labs) in the free online Stanford course: https://lagunita.stanford.edu/courses/Engineering/Networking...
AFAIK this combination would be the best free computer networking course out there, specially if combined with the MIT 6.033 systems engineering videos, to understand complex systems design concepts in a wider context, and how they were applied, in particular, to the internet and the ethernet.
Also, regarding ethernet, there is a realy good old presentation by Metcalfe in youtube: https://youtu.be/Fj7r3vYAjGY
I would start with the MIT OCW course 6.033 "Computer System Engineering" [1] (old videos [2]):
This class covers topics on the engineering of computer software and hardware systems. Topics include techniques for controlling complexity; strong modularity using client-server design, operating systems; performance, networks; naming; security and privacy; fault-tolerant systems, atomicity and coordination of concurrent activities, and recovery; impact of computer systems on society.
[1] https://ocw.mit.edu/courses/electrical-engineering-and-compu...
[2] https://www.youtube.com/playlist?list=PL6535748F59DCA484
You are welcome.
Please note that the MIT 6.828 is really tough but will turn you into a bad-ass C hacker.
It relies on MIT 6.004 - Computation Structures [1] (has edx mooc [2,3,4]) and MIT 6.033 - Computer Systems Engineering [5] as pre-requisites given that they teach you the fundamentals of computer architecture (digital abstraction, gates, circuits, processors, assembler, memory, cashes, pipelining, virtual memory, interrupts/io, buses, what have you) and system design (basically, managing complexity); they are not programming courses, but I recommend them if you have the time and interest, they are an awesome and principled way of learning the core concepts that you really need to have down before dabbling with OSs.
[1] https://ocw.mit.edu/courses/electrical-engineering-and-compu...
[2] https://courses.edx.org/courses/course-v1:MITx+6.004.1x_3+3T...
[3] https://courses.edx.org/courses/course-v1:MITx+6.004.2x+3T20...
[4] https://courses.edx.org/courses/course-v1:MITx+6.004.3x+2T20...
[5] https://ocw.mit.edu/courses/electrical-engineering-and-compu...
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!