mirror of
https://github.com/mohitmishra786/amILearningEnough.git
synced 2025-12-18 12:54:42 +03:00
300 lines
15 KiB
Markdown
300 lines
15 KiB
Markdown
# Top University Courses in Systems Programming, Compilers, and Low-Level Computing
|
|
|
|
## Compilers & Language Design
|
|
1. MIT 6.035 - Computer Language Engineering
|
|
- Course Materials: [MIT OCW](https://ocw.mit.edu/courses/6-035-computer-language-engineering-spring-2010/)
|
|
- Projects: [Course Projects Repository](https://github.com/6035/sp22)
|
|
|
|
2. Stanford CS143 - Compilers
|
|
- Course Videos: [YouTube Playlist](https://www.youtube.com/playlist?list=PLoCMsyE1cvdUZRe1udlyjpzTww1U5olL2)
|
|
- Course Materials: [Stanford EDU](https://web.stanford.edu/class/cs143/)
|
|
- Additional Resources: [Course Reader](https://web.stanford.edu/class/cs143/materials/CS143%20Course%20Reader.pdf)
|
|
|
|
3. Berkeley CS164 - Programming Languages and Compilers
|
|
- Course Materials: [Berkeley Course Page](https://inst.eecs.berkeley.edu/~cs164/)
|
|
- Video Lectures: [Berkeley Webcasts](https://archive.org/details/ucberkeley-webcast-PL3A16CFC42CA6EF4F)
|
|
- Projects Repository: [GitHub](https://github.com/Berkeley-CS164)
|
|
|
|
4. CMU 15-411 - Compiler Design
|
|
- Course Materials: [CMU Course Page](https://www.cs.cmu.edu/~fp/courses/15411-f13/)
|
|
- Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLZDJBn_w9jJwMAQ9QL_P6AI_q8ZNr4Dsx)
|
|
- Lab Resources: [Course Labs](https://www.cs.cmu.edu/~411/)
|
|
|
|
5. Cornell CS4120 - Introduction to Compilers
|
|
- Course Website: [Cornell Course Page](https://www.cs.cornell.edu/courses/cs4120/)
|
|
- Lecture Notes: [Course Materials](https://www.cs.cornell.edu/courses/cs4120/2022sp/schedule.html)
|
|
|
|
## Operating Systems
|
|
6. MIT 6.828 - Operating System Engineering
|
|
- Course Materials: [MIT OCW](https://pdos.csail.mit.edu/6.828/2020/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLfciLKR3SgqNJKKIKUliWoNBBH1VHL3AP)
|
|
- xv6 Resources: [xv6 Book](https://pdos.csail.mit.edu/6.828/2020/xv6/book-riscv-rev1.pdf)
|
|
|
|
7. Stanford CS140 - Operating Systems
|
|
- Course Materials: [Stanford EDU](http://web.stanford.edu/~ouster/cgi-bin/cs140-spring20/)
|
|
- Reference Documentation: [Course Reader](http://web.stanford.edu/~ouster/cs140/)
|
|
- PintOS Project: [Project Repository](https://web.stanford.edu/class/cs140/projects/pintos/pintos.html)
|
|
|
|
8. Berkeley CS162 - Operating Systems and System Programming
|
|
- Course Materials: [Berkeley Course Page](https://cs162.org/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLRdybCcWDFzCag9A0h1m9QYaujD0xefgM)
|
|
- Projects: [CS162 GitHub](https://github.com/Berkeley-CS162)
|
|
|
|
9. Harvard CS161 - Operating Systems
|
|
- Course Materials: [Harvard EDU](https://read.seas.harvard.edu/cs161/2021/)
|
|
- OS/161 Resources: [OS/161 Documentation](http://os161.eecs.harvard.edu/)
|
|
|
|
10. MIT 6.S081 - Operating System Engineering (RISC-V Focus)
|
|
- Course Materials: [MIT Course Page](https://pdos.csail.mit.edu/6.S081/2020/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLTsf9UeqkReZHXWY9yJvTwLJWYYPcKEqx)
|
|
- Lab Assignments: [Course Labs](https://pdos.csail.mit.edu/6.S081/2020/labs/)
|
|
|
|
## Computer Architecture & Assembly
|
|
11. MIT 6.004 - Computation Structures
|
|
- Course Materials: [MIT OCW](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu)
|
|
- Lab Assignments: [Course Labs](https://6004.mit.edu/web/spring20/resources/labs)
|
|
|
|
12. Berkeley CS61C - Great Ideas in Computer Architecture
|
|
- Course Materials: [Berkeley Course Page](https://cs61c.org/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLDoI-XvXO0aquWw8sNGXwEEz_iFR8Fv7Zf)
|
|
- Labs & Projects: [Course Resources](https://inst.eecs.berkeley.edu/~cs61c/resources.html)
|
|
|
|
13. CMU 15-213 - Introduction to Computer Systems
|
|
- Course Materials: [CMU Course Page](http://www.cs.cmu.edu/~213/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLbY-cFJNzq7z_tQGq-rxtq_n_QM5zbU7T)
|
|
- Lab Assignments: [Course Labs](http://csapp.cs.cmu.edu/3e/labs.html)
|
|
|
|
14. Stanford CS107 - Computer Organization & Systems
|
|
- Course Materials: [Stanford EDU](https://web.stanford.edu/class/cs107/)
|
|
- Course Reader: [CS107 Reader](https://web.stanford.edu/class/cs107/resources.html)
|
|
|
|
## Performance Engineering & Systems Optimization
|
|
15. MIT 6.172 - Performance Engineering of Software Systems
|
|
- Course Materials: [MIT OCW](https://ocw.mit.edu/courses/6-172-performance-engineering-of-software-systems-fall-2018/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLUl4u3cNGP63VIBQVWguXxZZi0566y7Wf)
|
|
- Projects: [Course Projects](https://ocw.mit.edu/courses/6-172-performance-engineering-of-software-systems-fall-2018/pages/projects/)
|
|
|
|
16. Stanford CS315A - Parallel Computer Architecture and Programming
|
|
- Course Materials: [Stanford Course Page](http://cs315a.stanford.edu/)
|
|
- Additional Resources: [Course Notes](http://cs315a.stanford.edu/notes/)
|
|
|
|
17. CMU 15-418 - Parallel Computer Architecture and Programming
|
|
- Course Materials: [CMU Course Page](http://15418.courses.cs.cmu.edu/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLpIxOj-HnDsO4LjmRzgRys_0cA5jKAhRH)
|
|
|
|
## Distributed Systems
|
|
18. MIT 6.824 - Distributed Systems
|
|
- Course Materials: [MIT Course Page](https://pdos.csail.mit.edu/6.824/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB)
|
|
- Labs: [Course Labs](https://pdos.csail.mit.edu/6.824/labs/lab-mr.html)
|
|
|
|
19. Stanford CS244b - Distributed Systems
|
|
- Course Materials: [Stanford Course Page](http://www.scs.stanford.edu/20sp-cs244b/)
|
|
- Reading List: [Course Readings](http://www.scs.stanford.edu/20sp-cs244b/readings/)
|
|
|
|
## Security & Systems
|
|
20. MIT 6.858 - Computer Systems Security
|
|
- Course Materials: [MIT Course Page](https://css.csail.mit.edu/6.858/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
|
- Labs: [Security Labs](https://css.csail.mit.edu/6.858/2022/labs/)
|
|
|
|
21. Stanford CS155 - Computer and Network Security
|
|
- Course Materials: [Stanford Course Page](https://cs155.stanford.edu/)
|
|
- Projects: [Course Projects](https://cs155.stanford.edu/projects/)
|
|
|
|
## Systems Programming & Low-Level Programming
|
|
22. Harvard CS50 - Introduction to Computer Science (Heavy C Focus)
|
|
- Course Materials: [CS50 Website](https://cs50.harvard.edu/x/)
|
|
- Video Lectures: [YouTube Playlist](https://www.youtube.com/playlist?list=PLhQjrBD2T382_R182iC2gNZI9HzWFMC_8)
|
|
- Problem Sets: [CS50 Problems](https://cs50.harvard.edu/x/2024/psets/)
|
|
|
|
23. Stanford CS107E - Computer Systems from the Ground Up
|
|
- Course Materials: [Stanford Course Page](https://cs107e.github.io/)
|
|
- Labs: [Course Labs](https://cs107e.github.io/labs/)
|
|
|
|
24. CMU 15-123 - Principles of Imperative Computation
|
|
- Course Materials: [CMU Course Page](https://www.cs.cmu.edu/~15123-f21/)
|
|
- Resources: [Course Resources](https://www.cs.cmu.edu/~15123-f21/resources.html)
|
|
|
|
## Advanced Topics
|
|
25. Stanford CS240 - Advanced Topics in Operating Systems
|
|
- Course Materials: [Stanford EDU](http://web.stanford.edu/class/cs240/)
|
|
- Reading List: [Course Readings](http://web.stanford.edu/class/cs240/readings.html)
|
|
|
|
# Complete Systems Programming Educational Resources
|
|
|
|
## Additional Learning Resources
|
|
|
|
### Free Textbooks & Online Books
|
|
1. Operating Systems: Three Easy Pieces
|
|
- [Online Book](https://pages.cs.wisc.edu/~remzi/OSTEP/)
|
|
- [GitHub Resources](https://github.com/remzi-arpacidusseau/ostep-projects)
|
|
|
|
2. Computer Systems: A Programmer's Perspective
|
|
- [Course Website](http://csapp.cs.cmu.edu/)
|
|
- [Lab Assignments](http://csapp.cs.cmu.edu/3e/labs.html)
|
|
|
|
3. The Craft of Programming
|
|
- [Online Book](https://craftofprogramming.wordpress.com/)
|
|
- [Practice Problems](https://github.com/craftofprogramming/craftofprogramming)
|
|
|
|
4. xv6: a simple, Unix-like teaching operating system
|
|
- [RISC-V Book](https://pdos.csail.mit.edu/6.828/2020/xv6/book-riscv-rev1.pdf)
|
|
- [x86 Book](https://pdos.csail.mit.edu/6.828/2018/xv6/book-rev11.pdf)
|
|
- [Source Code](https://github.com/mit-pdos/xv6-riscv)
|
|
|
|
5. Programming from the Ground Up
|
|
- [PDF Book](https://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf)
|
|
- [Source Code](https://savannah.nongnu.org/projects/pgubook/)
|
|
|
|
### Development Environments & Virtual Machines
|
|
1. MIT JOS Operating System Lab
|
|
- [Setup Instructions](https://pdos.csail.mit.edu/6.828/2018/tools.html)
|
|
- [VM Image](https://pdos.csail.mit.edu/6.828/2018/jos.git)
|
|
|
|
2. Stanford PintOS
|
|
- [Project Resources](https://web.stanford.edu/class/cs140/projects/pintos/pintos.html)
|
|
- [Setup Guide](https://web.stanford.edu/class/cs140/projects/pintos/pintos_1.html)
|
|
|
|
3. Harvard OS/161
|
|
- [Setup Guide](http://os161.eecs.harvard.edu/documentation/setup.html)
|
|
- [System Guide](http://os161.eecs.harvard.edu/documentation/sys161.html)
|
|
|
|
4. Berkeley RISC-V Toolchain
|
|
- [Installation Guide](https://inst.eecs.berkeley.edu/~cs61c/fa17/tools/riscv-tools.html)
|
|
- [Docker Image](https://hub.docker.com/r/riscv/riscv-gnu-toolchain)
|
|
|
|
### Practice Problems & Assignments
|
|
1. CMU Computer Systems Performance Problems
|
|
- [Problem Sets](http://csapp.cs.cmu.edu/3e/students.html)
|
|
- [Solutions Manual](http://csapp.cs.cmu.edu/3e/instructors.html)
|
|
|
|
2. MIT OCW Problem Sets
|
|
- [6.004 Problems](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/pages/assignments/)
|
|
- [6.828 Problems](https://pdos.csail.mit.edu/6.828/2018/homework/)
|
|
|
|
3. Stanford Practice Problems
|
|
- [CS107 Practice](https://web.stanford.edu/class/archive/cs/cs107/cs107.1216/practice/)
|
|
- [CS110 Problems](https://web.stanford.edu/class/archive/cs/cs110/cs110.1204/practice-problems/)
|
|
|
|
### Advanced Architecture & Computer Systems
|
|
26. University of Washington CSE351 - The Hardware/Software Interface
|
|
- Course Materials: [Course Website](https://courses.cs.washington.edu/courses/cse351/)
|
|
- Labs: [Course Labs](https://courses.cs.washington.edu/courses/cse351/21sp/labs/)
|
|
|
|
27. EPFL CS-323 - Introduction to Operating Systems
|
|
- Course Materials: [Course Website](https://dcl.epfl.ch/site/education/cs323)
|
|
- Projects: [Course Projects](https://github.com/EPFL-CS323)
|
|
|
|
28. UC Berkeley CS152 - Computer Architecture and Engineering
|
|
- Course Materials: [Course Website](https://inst.eecs.berkeley.edu/~cs152/sp22/)
|
|
- Labs: [RISC-V Labs](https://inst.eecs.berkeley.edu/~cs152/sp22/labs/)
|
|
|
|
### Systems Programming & Performance
|
|
29. UIUC CS241 - System Programming
|
|
- Course Materials: [Course Website](https://courses.engr.illinois.edu/cs241/)
|
|
- Projects: [Course Projects](https://github.com/illinois-cs241)
|
|
|
|
30. UW-Madison CS537 - Introduction to Operating Systems
|
|
- Course Materials: [Course Website](https://pages.cs.wisc.edu/~remzi/Classes/537/Spring2021/)
|
|
- Projects: [Course Projects](https://github.com/remzi-arpacidusseau/ostep-projects)
|
|
|
|
31. ETH Zürich - Systems Programming and Computer Architecture
|
|
- Course Materials: [Course Website](https://systems.ethz.ch/)
|
|
- Projects: [Course Projects](https://systems.ethz.ch/education/courses.html)
|
|
|
|
### Embedded Systems & Real-Time Computing
|
|
32. MIT 6.111 - Introductory Digital Systems Laboratory
|
|
- Course Materials: [MIT OCW](https://ocw.mit.edu/courses/6-111-introductory-digital-systems-laboratory-fall-2002/)
|
|
- Labs: [Lab Materials](https://ocw.mit.edu/courses/6-111-introductory-digital-systems-laboratory-fall-2002/pages/labs/)
|
|
|
|
33. Stanford CS341 - Embedded Systems Workshop
|
|
- Course Materials: [Course Website](http://cs341.stanford.edu/)
|
|
- Projects: [Project Resources](http://cs341.stanford.edu/projects.html)
|
|
|
|
### Advanced Topics
|
|
34. MIT 6.826 - Principles of Computer Systems
|
|
- Course Materials: [Course Website](https://6826.csail.mit.edu/2020/)
|
|
- Reading List: [Course Readings](https://6826.csail.mit.edu/2020/schedule.html)
|
|
|
|
35. Berkeley CS262A - Advanced Topics in Computer Systems
|
|
- Course Materials: [Course Website](https://people.eecs.berkeley.edu/~kubitron/cs262/)
|
|
- Reading List: [Research Papers](https://people.eecs.berkeley.edu/~kubitron/cs262/readings.html)
|
|
|
|
### Online Learning Platforms with Systems Programming Courses
|
|
1. Coursera
|
|
- [Computer Architecture](https://www.coursera.org/learn/comparch)
|
|
- [Operating Systems and You](https://www.coursera.org/learn/os-you)
|
|
|
|
2. edX
|
|
- [Computer Science: Programming with a Purpose](https://www.edx.org/course/computer-science-programming-purpose-princetonx-cos126x)
|
|
- [Computation Structures](https://www.edx.org/course/computation-structures-part-1-digital-circuits)
|
|
|
|
### GitHub Repositories with Learning Resources
|
|
1. [The Missing Semester of Your CS Education](https://github.com/missing-semester/missing-semester)
|
|
- Command-line tools
|
|
- Version control
|
|
- Debugging tools
|
|
|
|
2. [OS-Study](https://github.com/ossu/computer-science#core-systems)
|
|
- Curated list of free courses
|
|
- Project-based learning
|
|
- Community support
|
|
|
|
3. [Awesome C](https://github.com/aleksandar-todorovic/awesome-c)
|
|
- Frameworks
|
|
- Libraries
|
|
- Resources
|
|
|
|
4. [Awesome Low Level Programming](https://github.com/gurugio/lowlevelprogramming-university)
|
|
- Assembly
|
|
- Operating Systems
|
|
- Compiler Construction
|
|
|
|
### Development Tools & Resources
|
|
1. Debugging Tools
|
|
- GDB Tutorial: [Guide](https://sourceware.org/gdb/current/onlinedocs/gdb/)
|
|
- Valgrind: [Documentation](https://valgrind.org/docs/)
|
|
- LLDB: [Tutorial](https://lldb.llvm.org/tutorial.html)
|
|
|
|
2. Performance Analysis Tools
|
|
- Perf: [Tutorial](https://perf.wiki.kernel.org/index.php/Tutorial)
|
|
- VTune: [Guide](https://software.intel.com/content/www/us/en/develop/tools/vtune-profiler.html)
|
|
- DTrace: [Documentation](http://dtrace.org/blogs/about/)
|
|
|
|
3. Compiler Tools
|
|
- LLVM: [Getting Started](https://llvm.org/docs/GettingStarted.html)
|
|
- GCC: [Documentation](https://gcc.gnu.org/onlinedocs/)
|
|
|
|
### Practice Projects
|
|
1. Build Your Own X
|
|
- [Operating System](https://github.com/cfenollosa/os-tutorial)
|
|
- [Compiler](https://github.com/jamiebuilds/the-super-tiny-compiler)
|
|
- [Shell](https://github.com/brenns10/lsh)
|
|
|
|
2. System Programming Projects
|
|
- [Mini Redis](https://github.com/antirez/redis)
|
|
- [Mini Shell](https://github.com/brenns10/lsh)
|
|
- [HTTP Server](https://github.com/EZLippi/WebBench)
|
|
|
|
### Community Resources
|
|
1. Forums & Discussion
|
|
- [OS Dev](https://wiki.osdev.org/Main_Page)
|
|
- [Low Level Programming Subreddit](https://www.reddit.com/r/lowlevel/)
|
|
- [Systems Programming Subreddit](https://www.reddit.com/r/systems/)
|
|
|
|
2. Conferences & Workshops
|
|
- USENIX OSDI
|
|
- SOSP
|
|
- EuroSys
|
|
|
|
### Important Notes
|
|
1. Course availability and materials may vary by semester
|
|
2. Some resources might require university credentials
|
|
3. Always check for the most recent version of course materials
|
|
4. Many courses update their materials yearly
|
|
5. Some resources might be architecture-specific (x86, ARM, RISC-V)
|
|
6. Practice proper security when downloading virtual machines or tools
|
|
7. Consider contributing back to open-source educational resources
|