Quick links

Programming and Breadth Requirements

Effective September 2011

For Ph.D. Students beginning in Fall 2011

For Ph.D. Students Only

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 adviser 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, 518, 526, 561, or any approved graduate course. Taking only the course exam does not give programming credit.

II. Breadth

The breadth requirement covers 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 introductory and advanced versions of the same course, i.e., 318/518; 375/475; 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 and Organization; final
  • 432 Information Security; final
  • 461 Computer Networks; final
  • 475 Computer Architecture; final
  • 518 Advanced Computer 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
  • 557 Analysis & Visualization of Large Scale Genomic Datasets; 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
  • 513 Foundations of Probabilistic Modeling; no final
  • 551 Intro to Genomics & Comp. Mol.Bio; no final
  • EEB355 Intro to Statistics for Biology*; final


  • 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
  • ELE525 Random Processes in Information Systems*; final
  • ELE539A Optimization of Communication Systems*; no final
  • ORF526 Probability Theory*; final


* Course may be taken only as second course in this group. No credit given if only course taken in group.


In addition, the director of graduate studies may designate certain 500 level courses as alternate choices.

Follow us: Facebook Twitter Linkedin