Curriculum guidelines (plan of study) for Dr. Borie's PhD students in algorithms and theoretical CS

Note: All requirements of the Graduate School, the College, and the Department remain in effect. This page supplements those requirements.

**Fundamental required courses
(each must be taken if not satisfied during the student's undergraduate program)**
******

- High-level object-oriented programming language such as C++ or Java (CS 350/351)
- Discrete math I (Math 301)
- Data structures I (CS 360)
- Algorithms I (CS 470/570)
- Formal languages I (CS 475/575)

Breadth courses in languages area (must include at least 2 of these courses) **

- Programming languages I (CS 403/503)
- Compilers I (CS 434/534)
- Programming languages II (CS 603)
- Compilers II (CS 614)

Breadth courses in systems area (must include at least 2 of these courses) **

- Operating systems I (CS 426/526)
- Architecture (CS 567; ECE 484/584)
- Operating systems II (CS 606)

Depth courses in algorithms and theory area (must include at least 4 of these courses) **

- Discrete math II (CS 500)
- Data structures II (CS 612)
- Algorithms II (CS 601)
- Formal languages II (CS 602)
- Advanced algorithms and data structures (CS 670)
- Graph algorithms (CS 671)
- Parallel algorithms (CS 672)
- Computational complexity (CS 673)

External courses that are relevant to algorithms and theory (must include at least 2 of these courses; generally, at most 4 of these courses may count toward the degree) **

- Probability and statistics (Math 551, 552, 554, 555; ST 554, 555, 560; GES 500)
- Number theory and cryptography (Math 507, 574)
- Graph theory (Math 532)
- Modern algebra (Math 570, 571, 573)
- Linear algebra (Math 510; GES 551)
- Linear and non-linear optimization (Math 520, 521; GES 501)
- Numerical analysis (Math 511, 512; GES 658)

**Elective courses (select additional CS graduate courses
as necessary to reach a total of at least 16 graduate courses)****
****

- Databases (CS 557, 609)
- Networks (CS 538, 613, 618)
- Security (CS 528, 615)
- Graphics (CS 535)
- Robotics (CS 560)
- Software engineering (CS 515, 600, 630)
- Human-computer interface (CS 507, 607)
- Additional electives may be offered periodically

******
**Depending on each student's individual background and research topic and career goals, he/she may be advised to take particular courses within each
category above.**