Programming and Breadth Requirements
Effective September 2007
In addition to the general exam, two requirements must be satisfied: breadth and programming. You are expected to complete the breadth requirement by the end of year 2. In special circumstances your advisor may request an additional year provided that you have completed 4 of the 6 courses. The programming requirement must be completed by the end of year 2.
I. Programming
This requirement can be satisfied in either of two ways - through successful completion of a project that involves substantial programming (done under faculty supervision) or by taking a course and receiving a satisfactory grade (normally B+ or higher). Acceptable courses are 318, 320, 425, 426, 429, 461, 526, 561, or any approved graduate course. Taking only the course exam does not give programming credit.
II. Breadth
The breadth requirement covers courses in four main groups: Computer Systems, Software Systems, Intelligent Computing, and Theory. A total of 6 courses are required; one from each group and one additional from two of the four groups. For courses offering a final exam, you may opt to just take the final. For courses without a final, you must take the course for a grade. Credit will not be given for both the undergrad and grad versions of the same course, i.e., 318/518; 426/526; 461/561. Acting as a teaching assistant does not give you credit for that course.
A grade of A- or higher will normally be expected for exams or courses. However, all grades will be reviewed by the faculty and a lower grade may be acceptable based on your total record.
Individual research areas may set additional requirements for their students; they may specify certain courses to be taken or may require that courses in excess of the departmental requirement be taken.
Course List
Computer Systems
- 318 Operating Systems; no final
- 375 Computer Architecture; final
- 432 Information Security; final
- 461 Computer Networks; final
- 518 Advanced Operating Systems; no final
- 561 Advanced Computer Networks; no final
Software Systems
- 320 Compiling Techniques; final
- 425 Database Systems; no final
- 426 Computer Graphics; no final
- 441 Programming Languages; final
- 526 Advanced Computer Graphics; no final
Intelligent Computing
- 402 Artificial Intelligence; final
- 424 Interacting with Data; no final
- 429 Computer Vision; no final
- 511 Theoretical Machine Learning; no final
- 551 Intro to Genomics & Comp. Mol.Bio; no final
- 557 Analysis & Visualization of Large Scale Genomic Datasets; no final
Theory
- 423 Theory of Algorithms; no final
- 433 Cryptography; final
- 451 Computational Geometry; no final
- 487 Theory of Computation; final
- 521 Advanced Algorithm Design; final
- 522 Computational Complexity; final
- 576 Nonstandard Computation; no final
In addition, the director of graduate studies may designate certain 500 level courses as alternate choices.

