RSRG Courses

RSRG is committed to training both graduate students and undergraduates in a rigorous approach to system design. This page provides course recommendations for both undergraduate and graduate students interested in computer system and network design.

Graduate Student Course Requirements

Research in RSRG combines the development of theory about system design with the application of new tools and techniques to system designs and implementations. To this end, graduate students are required to take a mixture of courses that focus on both system design and mathematical analysis. In total 6 courses are required: 3 application-oriented courses and 3 analysis-oriented courses.

Application-oriented Courses

Students are required to take at least 3 courses from this list.

  • CS 142 Distributed systems
  • CS/EE 143 Communication networks
  • CS/EE 144 The ideas behind the web

Beyond the requirements, some other courses to consider are:

  • CS 118 Formal software verification
  • CS 119 Reliable software: Testing and monitoring
  • CS 121 Introduction to relational databases
  • EE/MA/CS 127 Error correcting codes
  • CS/EE 146 Advanced networking
  • CS/EE 147 Network performance analysis
  • CS/EE 245 Special topics in networking

Analysis-oriented Courses

Students are required to take one term in each of these 3 areas, though we recommend taking more than one!

    Stochastic Processes
  • ACM/EE 116 Introduction to stochastic processes and modeling
  • ACM 216 Markov chains and applications
  • ACM 217 Advanced topics in stochastic analysis
    Optimization
  • ACM 113 Introduction to optimization
    Learning & Data-driven modeling
  • CS/CNS/EE 156ab Learning systems
  • CS/CNS/EE 155 Probabilistic graphical models

We also recommend taking (or passing out of) at least one course in each of the following areas:

    Game theory
  • PS/EC 172 Non-cooperative games in the social sciences
  • SS 201abc Analytic foundations of social sciences
  • SS 205abc Foundations of economics
  • SS/CS 241 Introduction to social and information sciences
    Control theory
  • CDS 110ab Introduction to control theory
  • CDS 140ab Introduction to dynamics
  • CDS 212 Introduction to modern control
    Information theory
  • CS/EE/MA 129 Information and complexity
  • EE 126ab Information theory
    Algorithms
  • CS 138 Computer algorithms
  • ECS 150 Probability and algorithms

Undergraduate courses

For undergraduates interested in a focus on system design and analysis, we recommend the following sequence of courses, starting in the junior year.

Project courses

During the junior year, we recommend either or both of the following project course sequences:

  • CS 142 Distributed systems
  • CS/EE 143,144,145 Networking

Advanced electives

During the senior year, choose 2 (or more) of the following depending on your interests:

  • CS 118 Logic model checking for formal software verification
  • CS 119 Reliable software: Testing and monitoring
  • CS 121 Introduction to relational databases
  • CS 122 Database system implementation
  • CS 123 Projects in database systems
  • EE/Ma/CS 127 Error-correcting codes
  • Ec/CS 133 Electricity markets
  • CS/EE 146 Advanced cyber physical networks
  • CS/EE 147 Network performance analysis
  • CS/CNS/EE 154 Artificial intelligence
  • CS/CNS/EE 155 Probabilistic graphical models
  • EE/MA/CS 127 Error correcting codes
  • CS/SS 241 Into. to Social and Information Sciences
  • CS/EE 245 Special topics in networking