Computer Systems, SCS Concentration

Brian Railing, Concentration Director and Advisor
Location: GHC 6005

Amy Weis, Concentration Coordinator
Location: GHC 4115

Computer Systems Concentration

This concentration is available to SCS students only.

The goal of the Computer Systems concentration is to give students a broad background in the practical understanding of designing and building systems. Students who complete this concentration are expected to be able to both pursue topics at the Ph.D. level at top programs, as well as industry work, either applying these concepts or directly working within the areas of kernel development, compiler improvements, designing distributed systems, et cetera.

The concentration is designed to be flexible in covering the wide area of systems topics. Two courses from the Computer Science major’s systems constrained elective are required (List A below). The other courses come from a larger list of related courses (List B below). A limited amount of research credit can count toward the requirements.

Typically, systems courses include three aspects:

  • A systems course educates students about how a class of computer systems works, both at a conceptual level and in practice. This includes the study of concrete problems faced in building a particular class of systems and successful solutions to these problems.
  • Systems courses address how properties of modern hardware (e.g., processors, networks, storage hierarchies) influence the design and implementation of a class of software systems. This typically includes reasoning about concurrency, and understanding and measuring performance.
  • To solidify the key systems organization principles, there is a significant project/system implementation aspect to the course, both to reinforce understanding of how these systems work, and to learn system building skills (i.e., not just programming, but also design, debugging, testing, etc.). The size of the programming tasks is course dependent, but a significant fraction of the course grade (e.g., at least 40%) is derived from project work.

Learning Objectives

Students completing this concentration will be able to demonstrate the following skills and learning:

  • Students will be able to design, develop and deploy large computer systems and justify their design decisions.
  • Students will synthesize the interaction and tradeoffs between different layers and components in computer systems.
  • Students will demonstrate debugging expertise on complex and diverse bugs and issues during software development.
  • Students will recognize diverse granularities of parallelism, apply them toward solving problems, and implement solutions that achieve correct execution while accounting for reliability, fault tolerance, performance, security, and scalability.

Curriculum

Prerequisites

All students will start the concentration after having finished 15-213 Introduction to Computer Systems (or its cross-listed equivalents) with a C or better, as 15-213 is a prerequisite either directly or indirectly for all courses in the concentration.

Course Requirements

The curriculum will consist of at least four courses: two courses from List A and at least two elective courses from List B. The courses taken from list A and B must sum to at least 51 units. The courses in List A will follow the Systems constrained elective list as part of the degree requirements for a B.S. in Computer Science. The elective courses on List B may vary from year to year, with a plan to review these requirements every three years.

List A (select two):
Units
15-410Operating System Design and Implementation15
15-411Compiler Design15
15-418Parallel Computer Architecture and Programming12
15-440Distributed Systems12
15-441Networking and the Internet12
15-445Database Systems12
List B (select at least two):
Anything from List A, plus...
15-319Cloud Computing12
15-330Introduction to Computer Security12
15-346Computer Architecture: Design and Simulation12
15-348Embedded Systems9
15-412Operating System PracticumVar.
17-422Human-AI Interaction using Sensing Systems12
18-341Logic Design and Verification12
18-344Computer Systems and the Hardware-Software Interface12
18-349Introduction to Embedded Systems12
18-447Introduction to Computer Architecture12
Special permission required for:
15-719Advanced Cloud Computing12
Other graduate-level courses in CSD as approved by the concentration director

Students can apply one semester of a senior honors research thesis or research-based independent study in a topic related to this concentration, as approved by the concentration director/advisor, as one of the elective courses for this concentration in list B. This research must have a significant communication component, including a paper or technical report, and a poster presentation. Any research course can count for at most 12 units toward the concentration and can count for at most one elective. 

Double Counting

The concentration will require that 3 courses (at least 27 units) are not double counted with any other requirements of any major, minor, or other concentration.

Advising and Management

The courses on the list of electives will be reviewed yearly by the concentration advisor through consultation with the Systems group (to help evaluate the relevance of the courses) and the CS Program Director (to help flag any logistical issues). Any special requests by a student for counting a course outside of the list will go to the concentration advisor. The concentration advisor will also approve any research units.

Students interested in this concentration should set up an initial advising consultation with the concentration advisor.

Back to top