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-410 | Operating System Design and Implementation | 15 |
| 15-411 | Compiler Design | 15 |
| 15-418 | Parallel Computer Architecture and Programming | 12 |
| 15-440 | Distributed Systems | 12 |
| 15-441 | Networking and the Internet | 12 |
| 15-445 | Database Systems | 12 |
List B (select at least two):
| |
| 15-319 | Cloud Computing | 12 |
| 15-330 | Introduction to Computer Security | 12 |
| 15-346 | Computer Architecture: Design and Simulation | 12 |
| 15-348 | Embedded Systems | 9 |
| 15-412 | Operating System Practicum | Var. |
| 17-422 | Human-AI Interaction using Sensing Systems | 12 |
| 18-341 | Logic Design and Verification | 12 |
| 18-344 | Computer Systems and the Hardware-Software Interface | 12 |
| 18-349 | Introduction to Embedded Systems | 12 |
| 18-447 | Introduction to Computer Architecture | 12 |
| 15-719 | Advanced Cloud Computing | 12 |
| |
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.