Computer Science Advising Guidelines
Courses
- The latest a CS major may be started is in the Fall of the your sophomore year (unless you have already taken a couple of the math requirements and have some background in CS.)
- You may petition the department for a waiver of programming and problem solving (CS128) if you have previously covered the equivalent material. Note that this includes having a working knowledge of the C++ programming language. Generally wavers are handled by the person teaching advanced programming (CS256.)
- The full ACM/IEEE-CS curriculum is covered by CS128, CS256, CS310, CS320, CS380, CS480, along with CS345, CS360, CS3?0 (AI), CS410, CS420, CS430, and CS440. The major requires only the first six of these (plus four other upper-division courses) but those intending to pursue graduate studies should take as many of them as their schedule permits.
- The core of the curriculum, CS128, CS256, CS310, CS320, CS380 and CS480 are normally offered every year. A second set of courses, CS420, CS430 and CS430 are normally offered every other year. While not at the as essential as the core of the curriculum, these are next in importance. Three courses, CS345, CS360, and CS3?0 are normally offered in a three year rotation. These are somewhat less central to the curriculum. Finally, a topics course is normally offered each year. This generally covers topics which are current but not critical to the major. When choosing between courses, preference should usually be given to the core courses, the biennial courses, the triennial courses and then, finally, the topics courses.
- The prerequisite structure (see Courses and Prerequisites) requires CS128, CS256, CS310 and CS320 to be taken in that order. CS380 (Theory of Comp.) should normally be taken as early in the program as possible, usually in the second Spring.
- Two of the upper-division courses (CS430 Databases and CS440 Programming Languages) require CS310 only as a corequisite and can be take as early as the second Fall. Two others (CS410 and CS420) require CS320 as a prerequisite and cannot normally be take before the third Fall. The normal schedule has one of each of these pairs scheduled each Fall.
- The three math courses can be taken in any order. The math
component is designed to generally develop mathematical maturity and to
teach you specific skills:
- Arithmetic
- Base manipulation
- Approximation
- Algebra
- Recursion and recurrences
- Series (arithmetic and geometric)
- Complex numbers
- Proof and notation (formal verification techniques generally)
- Sets
- Logic
- Graph theory
- Matrix manipulation
- Discrete probability
- Combinatorics
- Binomial coefficients
- It is preferred that advanced programming (CS256) and math toolkit (MA195) are taken at the same time (currently Spring semester.)
- At least discrete and the toolkit should be completed before the end of the sophomore year. Both are either pre- or corequisites for algorithms and data structures (C310.)
- Calculus A (MA180) can be taken anytime during the first two years. It is currently offered both Fall and Spring semesters.
- The major requires completion of CS480, Senior Seminar, normally in the Fall of the Senior year. The Seminar, in turn, requires completion of a capstone project. The project must produce either a substantial application or original research (often both). It is not possible to complete the requirements of the major without satisfactorily completing this capstone project.
Sample Schedules
Here are a couple of sample course schedules. Both of these allow for off-campus study although starting on a CS major during your first year gives you considerably more choices about when, and consequently where, you go. (CS300+ refers to any of the CS courses labeled 300 or above.)
Starting the major your first year: | |||||||
---|---|---|---|---|---|---|---|
First | Second | Third | Fourth | ||||
Fall | Spring | Fall | Spring | Fall | Spring | Fall | Spring |
CS128 | CS256 | CS310 | CS320 | CS300+ | CS300+ | CS480 | CS300+ |
MA180 | MA195 | MA190 | CS380 | CS300+ | CS300+ | CS300+ | CS300+ |
Starting the major your second year: | |||||||
---|---|---|---|---|---|---|---|
First | Second | Third | Fourth | ||||
Fall | Spring | Fall | Spring | Fall | Spring | Fall | Spring |
CS128 | CS256 | CS310 | CS320 | CS480 | CS300+ | ||
MA180 | MA195 | MA190 | CS380 | CS300+ | CS300+ | ||
(CS300+) | (CS300+) | (CS300+) |
You need four CS300+ courses, in addition to the core courses, for a CS major. This means that those starting in their second year will need to take three CS courses in at least one semester. This could be in any one of the last three semesters.
See the major and minor requirements for more information.
Off-Campus Study
Since all of the core courses are offered each year, it is relatively easy to design a curriculum that includes off-campus study. Possible opportunities include Oak Ridge National Lab (home of PVM), Scotland, other national labs, other countries. You don't have to go on a CS focused program, or even take CS courses while off-campus, although some students choose to. Starting the major during your first year makes going off-campus possible during the Fall or Spring of your Junior year or during the Spring semester of your Senior year. Waiting until your second year to start on the major limits your off-campus window to Spring semester of your senior year.
If you wish to go abroad, but have not yet decided which semester, you may want to look at the future course schedule.