Skip to main content

Undergraduate Program

BS Major Requirements

The BS curriculum is made up of qualifying, core and advanced courses, as well as the upper-level writing requirement.

No more than two core or advanced courses can be completed at other institutions. If transfer courses are taken while in residence, they must be pre-approved by the computer science program undergraduate director.

Interested students can also complete the honors research program to be awarded “honors in research,” “high honors in research,” or “highest honors in research.”

For complete specifics on the BS major requirements, see the Computer Science Undergraduate Handbook.

Qualifying Courses

CSC 171: The Science of Programming
MTH 150: Discrete Mathematics or MTH 150A: Discrete Math Module
MTH 161: Calculus I*
MTH 162: Calculus II*
CSC 172: The Science of Data Structures

*Calculus sequences MTH 141-MTH 143, or MTH 171Q and MTH 172Q are also acceptable.

Core Course

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

* This requirement can also be fulfilled with STT/MTH201, STT213 or ECO 230.

**Students who take MTH 173Q, or both MTH 163 and MTH 235, may count these options as covering the MTH 165 requirement.

Students in 2016-2018 will have the option of doing either CSC 200 or the statistics requirement. Students completing the honors research degree will need to complete CSC 200H and CSC 262 (or substitute).

Advanced Courses

Students must take three advanced courses in computer science. These courses must be above 200, not included in the core courses, and excluding CSC 390: Supervised Teaching. Students should consult with their faculty adviser or the CS undergraduate coordinator about their advanced course selection.

Advanced course specialization is encouraged, but not mandatory. In particular, students are encouraged to select a related set of courses that will prepare them for participation in one of the department’s research projects and/or to complete a senior project.

Areas of interest include the following:

  • Computer Systems
    • CSC 253: Dynamic Language and Software Development
    • CSC 255: Software Analysis and Improvement
    • CSC 256: Operating Systems
    • CSC 257: Computer Networks
    • CSC 258: Parallel and Distributed Systems
    • CSC 259: Big Data Computer Systems
  • Natural Language and Knowledge Representation
    • CSC 244: Logical Foundations of A.I.
    • CSC 247: Natural Language Processing
    • CSC 248: Statistical Speech and Language Processing
  • Machine Learning, Vision and Robotics
    • CSC 240: Data Mining
    • CSC 246: Machine Learning
    • CSC 249: Machine Vision
  • Theory
    • CSC 281: Intro to 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
  • Human Computer Interaction and Web
    • CSC 210: Principles of Web Application Development
    • CSC 212: Human Computer Interaction
  • Data Science
    • CSC 240: Data Mining
    • CSC 246: Machine Learning
    • CSC 259: Big Data Computer Systems
    • CSC 261: Database Systems
    • CSC 265: Intermediate Statistical and Computational Methods

In addition to the three advanced CSC courses, a BS candidate must complete one of the following:

  • CSC 393: Senior Project
  • One additional advanced course in computer science, mathematics or in other computing related disciplines (See section 4.3 in the Computer Science Undergraduate Handbook for more information)

Honors Research Program

The computer science honors research program requires honors-level coursework and a senior research thesis.

There are three degrees of honors awarded:

  • Honors in research
  • High honors in research
  • Highest honors in research

The degree of honor awarded is determined by the computer science faculty in consultation with the student's honors committee. The quality of the thesis, its presentation, and other CS research and publications throughout the student's undergraduate career are all considered.

Honor Requirements
CSC 200H: Undergrad Problem Seminar Honors
CSC 395H: Honors Senior Thesis
CSC 391H: Independent Study-Honors or 393H: Senior Project-Honors
Senior Research Thesis

For information about the honor program see section 4.4 in the Computer Science Undergraduate Handbook.

Upper-Level Writing Requirement for Computer Science Majors

Every computer science major must develop, in consultation with his or her faculty adviser, a plan that includes two upper-level writing experiences.

Each experience must generate at least 25 pages of expository prose, with substantial feedback on content and form, and revision of the work. The 25 pages may be in the form of a single paper or a series of smaller papers.

Acceptable writing experiences include the following:

  • WRT 273: Communicating Your Professional Identity (2 credits) – taken junior year
  • "W" Courses in other departments with advisor approval
  • Designated courses in computer science
  • Creation of a research paper or published technical report

Students should review section 6 in the Computer Science Undergraduate Handbook and consult their advisor for more information.