To demonstrate your breadth of knowledge in computer science, you are required to satisfy a set of core requirements. The cores are drawn from three broad areas of Computer Science: theory, systems, and artificial intelligence.
In general, you need to satisfy one or more requirements in each of the three areas. Most cores are satisfied by taking an appropriate class--indicated in parentheses below--and getting a high enough grade (B for MS).
The following courses can be used to complete the Theory core requirement:
- Formal Language Theory (CMPSCI 501)
- Computation theory (CMPSCI 601)
- Advanced algorithms (CMPSCI 611)
- Computational Geometry (CMPSCI 617)
- Approximation Algorithms (CMPSCI 690AA)
- Logic (CMPSCI 513 or 690LG, but not both)
- Randomized Algorithms (CMPSCI 690RA)
These courses may be used to complete one or two theory core requirements. Other than any co- or prerequisites, there are no restrictions on which classes may be used to satisfy systems core requirements or the order in which they must be taken.
The following classes may be used to complete systems core requirements:
- Compiler techniques (CMPSCI 610)
- Advanced software engineering: synthesis and development (CMPSCI 620)
- Advanced software engineering: analysis and evaluation (CMPSCI 621)
- Systems (CMPSCI 630)
- Programming languages (CMPSCI 631)
- Modern computer architecture (CMPSCI 635)
- Database design and implementation (CMPSCI 645)
- Advanced computer networking (CMPSCI 653)
- Operating systems (CMPSCI 677)
- Performance Evaluation (CMPSCI 690PE)
These courses may be used to complete one or two systems core requirements. Other than any co- or prerequisites, there are no restrictions on which classes may be used to satisfy systems core requirements or the order in which they must be taken.
Artificial Intelligence cores
Any of the following may be used to satisfy a second AI core requirement:
- Machine Learning (CMPSCI 589)
- Robotics (CMPSCI 603)
- Information retrieval (CMPSCI 646)
- Applied Information Theory (CMPSCI 650)
- Computer Vision (CMPSCI 670)
- Artificial Intelligence (CMPSCI 683)
- Reinforcement learning (CMPSCI 687)
- Graphical Models (CMPSCI 688)
- Machine learning: pattern classification (CMPSCI 689)
- (No longer offered) Reasoning and acting under uncertainty (CMPSCI 686, aka 691E)
- (No longer offered) Multi-Agent Systems (CMPSCI 691V)
These courses may be used to complete one or two AI core requirements. Other than any co- or prerequisites, there are no restrictions on which classes may be used to satisfy systems core requirements or the order in which they must be taken.
Passing out of a Core Requirement
In some circumstances it may be possible to pass or test out of a core requirement on the basis of equivalent coursework at another institution. It may also be possible to substitute a different advanced course for a core requirement. Such approval will be based on the content of that course as it compares to the content of the parallel course taught in this department.
If you believe you should pass out of a core requirement, please download the form and contact the appropriate professor. The instructor will notify the GPD of his or her recommendation. If you are requesting a waiver of more than 1 core course, each professor must be aware of this and sign off on both waiver requests. If you received a waiver of a core requirement before Dec. 1, 2010 and you are switching to the 3, 2, 1 model, you will need to have your waivers re-evaluated by all faculty involved.
The GPD will then determine whether or not to accept that recommendation. (Such recommendations are rarely declined.)
Note that passing out of a core course addresses the core requirement only. In particular, it does not absolve you from taking the corresponding credit hours. If you needed to take 18 credits and you passed out of one 3-credit core course, you still need to take 18 credits.