Files
amILearningEnough/docs/resources/univCourses/univ.md
2024-12-21 01:23:20 +05:30

15 KiB

Top University Courses in Systems Programming, Compilers, and Low-Level Computing

Compilers & Language Design

  1. MIT 6.035 - Computer Language Engineering

  2. Stanford CS143 - Compilers

  3. Berkeley CS164 - Programming Languages and Compilers

  4. CMU 15-411 - Compiler Design

  5. Cornell CS4120 - Introduction to Compilers

Operating Systems

  1. MIT 6.828 - Operating System Engineering

  2. Stanford CS140 - Operating Systems

  3. Berkeley CS162 - Operating Systems and System Programming

  4. Harvard CS161 - Operating Systems

  5. MIT 6.S081 - Operating System Engineering (RISC-V Focus)

Computer Architecture & Assembly

  1. MIT 6.004 - Computation Structures

  2. Berkeley CS61C - Great Ideas in Computer Architecture

  3. CMU 15-213 - Introduction to Computer Systems

  4. Stanford CS107 - Computer Organization & Systems

Performance Engineering & Systems Optimization

  1. MIT 6.172 - Performance Engineering of Software Systems

  2. Stanford CS315A - Parallel Computer Architecture and Programming

  3. CMU 15-418 - Parallel Computer Architecture and Programming

Distributed Systems

  1. MIT 6.824 - Distributed Systems

  2. Stanford CS244b - Distributed Systems

Security & Systems

  1. MIT 6.858 - Computer Systems Security

  2. Stanford CS155 - Computer and Network Security

Systems Programming & Low-Level Programming

  1. Harvard CS50 - Introduction to Computer Science (Heavy C Focus)

  2. Stanford CS107E - Computer Systems from the Ground Up

  3. CMU 15-123 - Principles of Imperative Computation

Advanced Topics

  1. Stanford CS240 - Advanced Topics in Operating Systems

Complete Systems Programming Educational Resources

Additional Learning Resources

Free Textbooks & Online Books

  1. Operating Systems: Three Easy Pieces

  2. Computer Systems: A Programmer's Perspective

  3. The Craft of Programming

  4. xv6: a simple, Unix-like teaching operating system

  5. Programming from the Ground Up

Development Environments & Virtual Machines

  1. MIT JOS Operating System Lab

  2. Stanford PintOS

  3. Harvard OS/161

  4. Berkeley RISC-V Toolchain

Practice Problems & Assignments

  1. CMU Computer Systems Performance Problems

  2. MIT OCW Problem Sets

  3. Stanford Practice Problems

Advanced Architecture & Computer Systems

  1. University of Washington CSE351 - The Hardware/Software Interface

  2. EPFL CS-323 - Introduction to Operating Systems

  3. UC Berkeley CS152 - Computer Architecture and Engineering

Systems Programming & Performance

  1. UIUC CS241 - System Programming

  2. UW-Madison CS537 - Introduction to Operating Systems

  3. ETH Zürich - Systems Programming and Computer Architecture

Embedded Systems & Real-Time Computing

  1. MIT 6.111 - Introductory Digital Systems Laboratory

  2. Stanford CS341 - Embedded Systems Workshop

Advanced Topics

  1. MIT 6.826 - Principles of Computer Systems

  2. Berkeley CS262A - Advanced Topics in Computer Systems

Online Learning Platforms with Systems Programming Courses

  1. Coursera

  2. edX

GitHub Repositories with Learning Resources

  1. The Missing Semester of Your CS Education

    • Command-line tools
    • Version control
    • Debugging tools
  2. OS-Study

    • Curated list of free courses
    • Project-based learning
    • Community support
  3. Awesome C

    • Frameworks
    • Libraries
    • Resources
  4. Awesome Low Level Programming

    • Assembly
    • Operating Systems
    • Compiler Construction

Development Tools & Resources

  1. Debugging Tools

  2. Performance Analysis Tools

  3. Compiler Tools

Practice Projects

  1. Build Your Own X

  2. System Programming Projects

Community Resources

  1. Forums & Discussion

  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