# 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
