Skip to main content

Undergraduate Program

BA Major Requirements

In order to earn a BA in computer science, a student must complete:

  • Two core courses
  • No more than two CSC courses below CSC 172.
  • One approved track
  • All of the prerequisite courses for the track
  • Additional courses as necessary for a total of 12 major courses**
  • Upper level writing requirement

For detailed information about the requirements for a BA in computer science see the Computer Science Undergraduate Handbook.

Core Courses

Students must take two courses listed in the BS core courses list (CSC173, CSC252, CSC254, CSC 242, CSC280, CSC 282, CSC 262).

Approved Tracks

Student can choose one of the approved tracks listed below, or propose a new track for approval. Students looking to propose a new track should see section 5.2 in the Computer Science Undergraduate Handbook.

Artificial Intelligence and Machine Vision

Choose three or more of the following courses:

  • CSC 231: Robot Control (Prerequisites - MTH 165, CSC171 or ECE114)
  • CSC 232: Autonomous Mobile Robotics (Prerequisites - MTH165, CSC171 or ECE114)
  • CSC 244: Logical Foundations of AI (Prerequisites - CSC 173, CSC 242)
  • CSC 246: Machine Learning (Prerequisites - CSC 242, MTH 165)
  • CSC 249: Machine Vision (Prerequisites - CSC 242, MTH 161)

Natural Language Understanding

Choose three or more of the following courses, including at least one CSC course:

  • CSC 244: Logical Foundations of AI (Prerequisites - CSC 173, CSC 242)
  • CSC 246: Machine Learning (Prerequisites - CSC 242, MTH 165)
  • CSC 247: Natural Language Processing (Prerequisite - CSC 242)
  • CSC 248: Statistical Speech and Language Processing (Prerequisites - CSC 172, CSC 242)
  • 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 of the following courses:

  • CSC 131: Recreational Graphics
  • CSC 209: Advanced Front End Web Design (Prerequisite - CSC 170)
  • CSC 210: Web Programming (Prerequisite - CSC 172)
  • CSC 212: Human-Computer Interaction (Prerequisite - CSC 172)
  • CSC 261: Database Systems: Recommended (Prerequisites - CSC173 and CSC 252)
  • CSC 296: Advanced Front-End Web Design

Theory of Computation

Choose three or more of the following courses:

  • CSC 281: Cryptography (Prerequisites – MTH 150 or 162, and CSC 171)
  • CSC 283: Topics in Cryptography (Recommended - CSC281)
  • CSC 284: Advanced Algorithms (Prerequisite - CSC 282)
  • CSC 285: Algorithms and Elections (Prerequisites - at least one of the following: MTH 150, MTH 143, MTH 162, MTH 172, PSC 107, CSC 280, CSC 281, CSC 282)
  • CSC 286: Computational Complexity (Prerequisite - CSC 280)
  • CSC 287: Advanced Modes of Computation (Prerequisite - CSC 284 or CSC 286)
  • MTH 248: Graph Theory **

Computer Systems

Choose three or more of the following courses:

  • CSC 255: Advanced Programming Systems (Prerequisite - CSC 254)
  • CSC 256: Operating Systems (Prerequisite - CSC 252)
  • CSC 257: Computer Networks (Prerequisite - CSC 252)
  • CSC 258: Parallel and Distributed Systems (Prerequisites - CSC 252, CSC 254, and CSC 256)
  • CSC259: Big Data Computer Systems (Prerequisite - CSC 252)
  • ECE 201: Advanced Computer Architecture**

Computer Security

Choose three or more of the following courses:

  • CSC 257: Computer Networks (Prerequisite - CSC 252)
  • CSC 281: Cryptography (Prerequisite - MTH150 or MTH162)
  • CSC 283: Topics in Cryptography (Recommended - CSC 281)
  • CSC 299: Social Implications of Computing
  • CSC 29X: Topics in System Security

Computational Science

Choose three or more of the following courses, including at least one CSC course:

  • CSC 258: Parallel and Distributed Computing (Prerequisites - CSC 252, CSC 254, and CSC 256)
  • CSC 261: Database Systems (Prequisites - CSC 173 and CSC 252)
  • BIO 266: Tree of Life **
  • PHY 256: Computational Physics **
  • OPT 211: Computational Methods in Optics **
  • ME 211: Computational Methods in Engineering **
  • BME 221: Biomedical Computation **
  • CHE 242: Introduction to Molecular Simulation **

** No more than two non-CSC courses may count toward the required 12 courses, including prerequisites and track courses.

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 technical report

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