#### Major

- MATH 180 Calculus A
- MATH 190 Discrete Mathematics
- MATH 195 Math Toolkit
- CS 128 Programming and Problem Solving
- CS 256 Advanced Programming
- CS 310 Algorithms and Data Structures
- CS 320 Principles of Computer Organization
- CS 380 Theory of Computation
- CS 488 Senior Seminar
- Four additional CS courses, 300 and above excluding CS481,CS383/483, CS484, CS485 and CS486.
*In exceptional cases, the department may waive the exclusion of CS484, CS485 or CS486.*

#### Minor

- Either MATH 190 Discrete Mathematics OR MATH 195 Math Toolkit
- CS 128 Programming and Problem Solving
- CS 256 Advanced Programming
- CS 310 Algorithms and Data Structures
- Three additional CS courses, 300 and above excluding CS481, CS383/483, CS484, CS485 and CS486.
*In exceptional cases, the department may waive the exclusion of CS484, CS485 or CS486.*

- 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, CS488, along with CS330, CS345, CS360, CS370, CS410, CS420, CS430, and CS440. The major requires only the first six of these (plus four other upper-division courses other than Independent Study or Research) 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 CS488 are normally offered every year. The rest of the standard curriculum is offered every other year. Some courses, such as Symbolic Logic and Robotics, are offered occasionally. Electronics and Instrumentation is staffed by the Physics Department, at their convenience. 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 occasional 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 taken 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 3 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.)
- The math requirements should generally be completed before the end of the sophomore year. These are all either pre- or corequisites for Algorithms and Data Structures (C310).
- Calculus A (MA180) can be taken anytime during the first three semesters. It is currently offered both Fall and Spring semesters.
- The major requires completion of CS488, 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.

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. *

This four-year schedule allows for up to seven CS-300+ courses while still only taking two CS courses per semester. Only four are actually required for the major.

First Year | Second Year | Third Year | Fourth Year | ||||
---|---|---|---|---|---|---|---|

Fall | Spring | Fall | Spring | Fall | Spring | Fall | Spring |

CS128
MA180 |
CS256
MA195 |
CS310
MA190 |
CS320
CS380 |
CS300+
CS300+ |
CS300+
CS300+ |
CS488
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.

First Year | Second Year | Third Year | Fourth Year | ||||
---|---|---|---|---|---|---|---|

Fall | Spring | Fall | Spring | Fall | Spring | Fall | Spring |

CS128
MA180 |
CS256
MA195 (two of: |
CS310
CS190 CS300+ |
CS320
CS380 CS300+ |
CS488
CS300+ CS300+ |
CS300+
CS300+ CS300+) |

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.

#### Academic Year 2014/2015

##### Fall Semester

- Programming and Problem Solving - CS128 (Every year)
- Field Trip Preperation - CS 182 (Every year)
- Applied Groups - CS281 (Every semester)
- Algorithms and Data Structures - CS310 (Every year)
- Parallel Computation - CS360 (Alternate years)
- Computer Graphics - CS 370 (Alternate years)
- Networks and Networking - CS410 (Alternate years)
- Student Research - CS486 (Every semester)
- Senior Capstone Experience - CS488 (Every year)

##### Spring Semester

- Math Toolkit - CS195 (Every year)
- Advanced Programming - CS256 (Every year)
- Applied Groups - CS281 (Every semester)
- Principles of Computer Organization - CS320 (Every year)
- Software Engineering - CS345 (Alternate year)
- Electronics and Instrumentation - CS350 (Alternate year)
- Theory of Computation - CS380 (Every year)
- Bioinformatics - CS 383 (Alternate year)
- Database Systems - CS430 (Alternate years)
- Special Topics - CSx82* (Every year)
- Student Research - CS486 (Every semester)

#### Academic Year 2015/2016

##### Fall Semester

- Programming and Problem Solving - CS128 (Every year)
- Field Trip Preperation - CS 182 (Every year)
- Applied Groups - CS281 (Every semester)
- Algorithms and Data Structures - CS310 (Every year)
- Operating Systems - CS420 (Alternate years)
- Programming Languages - CS440 (Alternate years)
- Student Research - CS486 (Every semester)
- Senior Capstone Experience - CS488 (Every year)

##### Spring Semester

- Math Toolkit - CS195 (Every year)
- Advanced Programming - CS256 (Every year)
- Applied Groups - CS281 (Every semester)
- Principles of Computer Organization - CS320 (Every year)
- Parallel and Distributed Computing - CS360 (Alternate years)
- Theory of Computation - CS380 (Every year)
- Special Topics - CSx82 (Every year)
- Student Research -CS486 (Every semester)

#### Occasionally

- Symbolic Logic - CS130
- Robotics - CS282