Home > Academics > Graduate Programs > Doctoral Program Guide > D.Sc. Guide > Rationale for CSE Breadth Requirements
Rationale for CSE Breadth Requirements
The CSE breadth course requirements are part of the process by which new doctoral students are admitted to candidacy. The purpose of these requirements is threefold. First, the requirements ensure that all doctoral students are trained to be at least conversant with several major areas of computer science and engineering. Second, breadth courses are an assessment tool to demonstrate a student's academic preparedness for doctoral study. Finally, taking courses in several areas of CSE gives incoming students the opportunity to meet and interact with a number of our faculty, whatever their ultimate area of specialization.
Historically, the breadth course requirement system replaced a set of exams administered to incoming doctoral students. The current computer science breadth requirements, in particular their division into areas, evolved from the structure of these exams. The computer engineering breadth requirements were established more recently, with the founding of the CoE Doctoral Program, and do not reflect a prior system of exams.
Courses that may be used to satisfy breadth requirements should be taught regularly—at least every other year, and preferably every year. Courses with a track record of regular teaching and relatively stable syllabi are preferred. A candidate course for a breadth requirement should be nominated by a faculty member in the area represented by the course, in consultation with the Doctoral Program Committee. Courses may be added to the list for a requirement by a vote of the faculty.
The remainder of this document is specific to the requirements for the Computer Science (CS) doctoral degree. There are four main categories of CS breadth requirement: Theory, Systems, Machines, and Applications. CS doctoral students are expected to demonstrate basic competence in each of these areas before being allowed to proceed to candidacy.
The following descriptions explain which types of courses fit under each requirement.
- Theory
- The Theory requirement covers the mathematical foundations of computer science and the application of formal mathematical techniques to practical computing problems. While many areas of CS—such as AI, graphics and vision, and numerical methods—rely heavily on mathematical foundations, the Theory requirement concentrates on techniques that have traditionally been at the core of computer science. Material covered by this requirement includes fundamental algorithms and data structures, along with techniques for their design and analyis; and the theory of computation, including automata, computability, and complexity theory.
- Systems
- The Systems requirement covers the skills (both theoretical and practical) needed to design and construct complex software systems. Within CS, two traditional types of complex software system are computer operating systems and compilers and interpreters for programming languages. Both are covered by the Systems requirement. General techniques for complex system design, maintenance, and analysis may also be covered here, including software engineering and the design of programming languages.
- Machines
- The Machines requirement covers high-level design and performance analysis of computing hardware. The focus of this requirement is not a detailed knowledge of digital design but rather a quantitative understanding of how computer system architectures are designed, what design tradeoffs must be made, and how these tradeoffs impact the performance of software. The core of the Machines requirement is the study of general-purpose CPUs and their associated storage systems. This requirement may also cover the design of parallel and other specialized computing architectures for high performance in particular applications, as well as techniques for modeling and evaluating the performance of hardware systems at the architectural level.
- Applications
- The Applications requirement covers a variety of specialized subjects in computer science. Each of these subjects combines the basic principles from the other areas—core CS theory, software systems, and computer architecture—with ideas and methods developed for a particular problem domain. Examples include artificial intelligence and machine learning, graphics and vision, database system design, network protocol design, and computational biology.
The number of distinct application areas within computer science is too large to expect students to demonstrate competence in all of them. However, the importance of such areas should not be minimized. They serve as interfaces between computer science and the rest of the academic community, as focal points for applying CS to problems of societal importance, and as development grounds for new methods that enrich the core discipline of CS. We therefore expect students pursuing a research career to demonstrate capability in at least one application area. Ideally, the student should be at least familiar with many such areas.
Because "applications" encompasses a large fraction of all CSE courses, some specific criteria are desirable for deciding which courses are appropriate for the Applications breadth requirement. The CSE faculty has agreed on the following major criteria.
- Courses eligible to satisfy the Applications requirement should have a significant application-area component. They should not lie completely within one of the other three fundamental CS requirements as described above.
- Courses eligible to satisfy the Applications requirement should be fundamental to understanding their area. Fundamental courses are accessible to students with a general CS background but no prior training in the application area.
A 500-level or higher course that serves as a continuation of a fundamental course (e.g. advanced compiler design, advanced graphics) may be listed as an alternative to the fundamental course, e.g., "CS 4xx or 5xx". A student may use only one of these alternatives to satisfy a breadth requirement.
- Breadth courses should have a substantial evaluation component. Hence, they should include a project, exam, or some other way of assessing students.
In choosing courses that can satisfy the Applications requirement, it is also suggested that the faculty consider two factors. First, does the course represent a sufficiently broad and active application area of CS? (Some ways to judge this might be: is there a major conference in the area? Are there funding opportunities directed specifically to the area? Does the area have a high impact on consumers outside CSE?) Does the course teach a subset of material taught in a more fundamental course?) Second, do we provide opportunities for students taking the course to follow it up with further study or research?
CSE Doctoral Program Committee
Last update: April 28, 2004
|