# Undergraduate Program

## Degree Requirements

### Introduction

The Department of Computer Science offers undergraduate programs leading to BA and BS degrees, as well as to a minor in computer science. The BS program is appropriate for students who aspire to achieve a high-level research and development position in the computer industry, those who plan to go on to earn an MS or PhD in computer science, or those who simply wish to have the broadest and deepest knowledge of the field. The BA curriculum is more flexible and can be customized to support students interested in the intersection of computer science with other disciplines, such as computational linguistics, studio arts, computational biology, digital media, *etc*. Double major degrees are possible with either the BS or the BA in computer science.

Please note that all courses required for a degree must be taken for a grade, not satisfactory/fail (S/F). In addition, transfer credit for courses satisfying any major requirements must be pre-approved by the department.

### BS Degree in Computer Science

#### BS Pre-major Requirements

Students pursuing a BS degree in computer science must first complete the following pre-major requirements:

- CSC 171: Introduction to Computer Science
- MTH 150: Discrete Mathematics
- CSC 172: Data Structures and Algorithms
- Calculus: Either MTH 14x, MTH 16x, or MTH 17x (placement determined by the Math department)

As part of the University's basic science sequence regulations, a grade of C- or better is required to progress from CSC 171 to CSC 172 and from CSC 172 to CSC 173 (if the student takes CSC 173).

Students must complete the pre-major courses with a total GPA in those courses no lower than 2.0.

Students taking MTH 17x may take the MTH 150A supplement to satisfy the MTH 150 requirement.

Students may declare their BS major in computer science after satisfying these pre-major requirements. Students whose primary major is computer science must have a computer science advisor (Hajim School instructions). Students must consult with their computer science advisor *prior* to declaring their major.

#### BS Core Requirements

Students pursuing a BS degree in computer science must then complete the following eight (8) core courses:

- CSC 173: Computation and Formal Systems
- CSC 242: Introduction to Artificial Intelligence
- CSC 252: Computer Organization
- CSC 254: Programming Language Design and Implementation
- CSC 280: Computer Models and Limitations
- CSC 282: Design and Analytics of Efficient Algorithms
- CSC 262: Computational Introduction to Statistics
- MTH 165: Linear Algebra with Differential Equations

The CSC 262 requirement may also be satisfied by any of the following courses: MTH/STT 201: Introduction to Probability, STT 213: Elements of Probability and Mathematical Statistics, or ECO 230: Economic Statistics. No other substitutions will be permitted.

Students taking MTH 173 may count it to fulfill the MTH 165 requirement.

#### BS Advanced Requirements

Students pursuing a BS degree in computer science must then complete four (4) advanced courses in computer science.

Advanced courses are full (4.0 credit-hour) courses numbered 200 or above, *not* included in the core courses listed above, and not including CSC 390: Supervised Teaching.

Students may take CSC 393: Senior Project to fulfill one of their advanced course requirements.

Students may take at most one advanced course outside computer science. Any such substitutions must be at an appropriate level, relevant to computer science, and must be approved by the student's computer science advisor in advance.

No more than two core or advanced courses may be completed at other institutions unless all the external courses are taken as part of the University's education abroad program (formerly study abroad). Transfer credit must be approved by the department in advance.

All computer science majors must also satisfy the University requirement for upper-level writing in computer science (see below).

#### Honors Research in Computer Science

Students pursuing honors in research as part of their BS degree in computer science must also complete the following requirements:

- CSC 200H: Undergraduate Problem Seminar (honors)
- CSC 391H: Independent Study (Honors) or CSC 393H: Senior Project (honors)
- CSC 395H: Senior Thesis (honors)
- Maintain a 3.3 GPA over the pre-major, core, and advanced courses being taken for the degree

Prior to taking CSC 391H or CSC 393H, the student must:

- Find and consult with a computer science faculty member willing to be their thesis advisor.

The student may then register for CSC 391H or CSC 393H, usually under the supervision of their thesis advisor.

Prior to taking CSC 395H (typically during CSC 391H/CSC 393H), the student must:

- Together with their advisor, formulate and refine a research topic.
- Find a second computer science faculty member willing to serve on their thesis committee.
- Submit a thesis proposal to their committee, obtain their signatures on a thesis approval form, and submit the form to the department.

After CSC 391H/CSC 393H has been completed successfully and the thesis has been approved, the student must:

- Register for CSC 395H under the supervision of their thesis advisor

During CSC 395H, the student must:

- Write or complete an honors thesis in the style of a scientific journal article. The written thesis must be given to the thesis committee no later than April 15 of the graduating year.
- Present the thesis in a public seminar and successfully defend it in a private oral examination by (at least) the thesis committee and an additional faculty member chosen by the departmental chair.

The degree of honors awarded (“honors in research,” “high honors in research,” or “highest honors in research”) is determined by the computer science faculty in consultation with the student's honors committee. The quality of the thesis, its presentation, and other computer science research and publications throughout the student's undergraduate career are all considered.

### BA Degree in Computer Science

#### BA Pre-major Requirements

Students pursuing a BA degree in computer science must first complete the following pre-major requirements:

- CSC 171: Introduction to Computer Science
- MTH 150: Discrete Mathematics
- CSC 172: Data Structures and Algorithms

Calculus is not required for the BA.

All other pre-major requirements for admission to the BA are the same as for the BS degree.

Students may declare their BA major in computer science after satisfying these pre-major requirements. Students whose primary major is computer science must have a computer science advisor (Hajim School instructions). Students must consult with their computer science advisor *prior* to declaring their major.

#### BA Major Requirements

Students pursuing a BA degree in computer science must then complete nine (9) additional courses for a total of twelve (12) courses, subject to the following requirements:

- At least three of the additional courses must constitute a
*track*: an approved set of three or more related advanced courses - At least two of the additional courses must be core computer science courses as described for the BS degree
- No more than one additional computer science course may be numbered below 171
- No more than two additional courses may be independent studies (39x)
- All additional courses must be full (4.0 credit-hour) courses

Track courses for the BA must be approved by the student's computer science advisor in advance. Pre-approved tracks are described at the end of this document. Students may design and propose a new track that reflects a coherent area of study and contains at least three advanced courses. Such tracks must also be approved by the student's computer science advisor in advance.

At most two of the additional courses may be from outside computer science. Any such substitutions must be at an appropriate level, relevant to computer science, and must be approved by the student's computer science advisor in advance.

No more than two of the twelve courses for the BA may be completed at other institutions unless all the external courses are taken as part of the University's education abroad program (formerly study abroad). Transfer credit must be approved by the department in advance.

All students must also satisfy the University requirement for upper-level writing in computer science (see below).

### Writing Requirements in Computer Science

The University requires that all first-year students fulfill a primary writing requirement by the end of their first year. This is usually accomplished by taking WRT 105 in their first year.

The University also requires all students to take two upper-level writing courses approved by their department for their major. In computer science, each upper-level writing experience must generate at least 25 pages of expository prose, with substantial feedback on content and form, and revision of the work.

This may be accomplished by taking any two of the following courses:

- WRT 273: Communicating Your Professional Identity
- CSC 273W: Writing in Computer Science (starts fall 2018)
- CSC 391W: Independent Study (must be
W

version) - CSC 395H: Honors Thesis
- Any other computer science course with a
W

in the course number

Courses from other departments (with or without a W

) may only be taken if approved by the student's computer science advisor in advance. (Typically this requires that the instructor certify to the advisor that the course meets the department requirements for upper-level writing.)

### Cluster Requirements in Computer Science

Computer science majors must complete two clusters: one in the humanities and one in the social sciences. All University requirements for clusters apply.

The department offers several clusters for non-majors. Consult the cluster search engine for up-to-date information.

### Minor in Computer Science

Students pursuing a minor in computer science must complete six (6) computer science courses above the level of 130.

Courses outside computer science may not be counted for the minor unless they were cross-listed with a computer science course at the time that they were taken.

No more than two of the six courses for the minor may be completed at other institutions unless all the external courses are taken as part of the University's education abroad program (formerly study abroad). Transfer credit must be approved by the department in advance.

### Sample Programs in Computer Science

#### Sample BS Programs

Sample BS program with advanced course emphasis in computer systems:

Year 1 | Fall | CSC 171 | MTH 150 | WRT 105 | cluster |

Spring | CSC 172 | MTH 161 | cluster | cluster | |

Year 2 | Fall | CSC 173 | MTH 162 | cluster | elective |

Spring | CSC 252 | CSC 280 | cluster | elective | |

Year 3 | Fall | CSC 254 | CSC 262 | CSC 282 | cluster |

Spring | CSC 242 | MTH 165 | elective | elective | |

Year 4 | Fall | CSC 256 | CSC 257 | elective | elective |

Spring | CSC 258 | CSC 393 | elective | elective |

Sample BS program with advanced course emphasis in theory of computation:

Year 1 | Fall | CSC 171 | MTH 150 | WRT 105 | cluster |

Spring | CSC 172 | MTH 161 | cluster | cluster | |

Year 2 | Fall | CSC 173 | MTH 162 | cluster | elective |

Spring | CSC 252 | CSC 280 | cluster | elective | |

Year 3 | Fall | CSC 262 | CSC 282 | CSC 298 | cluster |

Spring | CSC 242 | CSC 284 | elective | elective | |

Year 4 | Fall | CSC 254 | CSC 281 | elective | elective |

Spring | CSC 393 | MTH 165 | elective | elective |

Sample BS program with advanced course emphasis in artificial intelligence:

Year 1 | Fall | CSC 171 | MTH 150 | WRT 105 | cluster |

Spring | CSC 172 | MTH 161 | cluster | cluster | |

Year 2 | Fall | CSC 173 | MTH 162 | cluster | elective |

Spring | CSC 242 | CSC 280 | cluster | elective | |

Year 3 | Fall | CSC 262 | CSC 282 | cluster | elective |

Spring | CSC 252 | MTH 165 | elective | elective | |

Year 4 | Fall | CSC 244 | CSC 254 | elective | elective |

Spring | CSC 246 | CSC 349 | CSC 393 | elective |

#### Pre-approved BA Tracks

The following BA tracks are pre-approved by the department, subject to approval by the student's computer science advisor and assuming that the courses are offered.

**Artificial Intelligence and Machine Vision** (choose three or more)

- CSC 231: Robot Control
- CSC 232: Autonomous Mobile Robotics
- CSC 244: Logical Foundations of AI
- CSC 246: Machine Learning
- CSC 249: Machine Vision

**Natural Language Understanding** (choose three or more, including at least one CSC course)

- CSC 244: Logical Foundations of AI
- CSC 246: Machine Learning
- CSC 247: Natural Language Processing
- CSC 248: Statistical Speech and Language Processing
- BCS 152: Language and Psycholinguistics **
- BCS 259: Language Development **
- BCS 261: Language use and Understanding **
- LIN 210: Introduction to Language Sound Systems **
- LIN 220: Introduction to Grammatical Systems **

**Human-Computer Interaction** (choose three or more)

- CSC 131: Recreational Graphics
- CSC 174: Advanced Front End Web Design
- CSC 186: Video Game Development
- CSC 210: Web Programming
- CSC 212: Human-Computer Interaction
- CSC 214: Mobile Application Development
- CSC 261: Database Systems

**Theory of Computation** (choose three or more)

- CSC 281: Cryptography
- CSC 283: Topics in Cryptography
- CSC 284: Advanced Algorithms
- CSC 285: Algorithms and Elections
- CSC 286: Computational Complexity
- CSC 287: Advanced Modes of Computation
- MTH 248: Graph Theory **

**Computer Systems** (choose three or more)

- CSC 255: Advanced Programming Systems
- CSC 256: Operating Systems
- CSC 257: Computer Networks
- CSC 258: Parallel and Distributed Systems
- ECE 201: Advanced Computer Architecture **

**Computer Security** (choose three or more)

- CSC 257: Computer Networks
- CSC 278: Computer Security Foundations
- CSC 281: Cryptography
- CSC 283: Topics in Cryptography
- CSC 299: Social Implications of Computing

**Computational Science** (choose three or more, including at least one CSC course)

- CSC 258: Parallel and Distributed Computing
- CSC 261: Database Systems
- BIO 266: Tree of Life **
- PHY 256: Computational Physics **
- OPT 211: MATLAB for Optics Majors **
- ME 211: Computational Methods **
- BME 221: Biomedical Computation and Statistics **

****** No more than two non-CSC courses may count toward the 12 courses for the BA, including prerequisites.