The 15 courses required for the major are divided into four groups: A, B, C, and D. Students must take all courses in Group A, at least 2 courses from Group B, at least 2 courses from Group C, and a total of 15 courses from Groups A-D.

Group A: Foundations (take all 5 and complete proficiency in Calculus 1)

  • CS 111 Introduction to Computer Science I
  • CS 112 Introduction to Computer Science II
  • CS 131 Combinatoric Structures
  • CS 210 Computer Systems
  • CS 330 Introduction to the Analysis of Algorithms
  • [Calculus 1 proficiency, equivalent of completing MA 123]

Group B: Technical Preparation (take 2 of 3)

  • CS 132 Geometrical Algorithms
  • CS 235 Algebraic Algorithms
  • CS 237 Probability in Computing

Group C: Essential CS Paradigms (take 2 of 3)

  • CS 320 Concepts of Programming Languages
  • CS 332 Elements in the Theory of Computation
  • CS 350 Fundamentals of Computing Systems

Group D: Advanced Topics (take 4 – 6, totally 15 courses)

  • All CS courses at the 400- and 500-levels

All classes counting towards the Major in Computer Science must be completed with a grade of C or higher.

The list of prerequisites or co-requisites for a CS course may contain a CS course “X” with a non-CS alternative “Y.” In such a case, course “Y” may be counted toward the major instead of course “X.” In special cases, a student, with consent of the instructor, may petition the Director of Undergraduate Studies, Professor Wayne Snyder, to count courses other than those listed in the Courses section. Attention is called to the following: CS courses number 600 and above; 500-level courses in Mathematics & Statistics; and Computer Engineering courses offered by the College of Engineering. CS major credit will not be given for Metropolitan College courses.

The “Group D” electives allow you to put an emphasis on a particular area of computer science if you wish. See here for possible areas of emphasis, joint programs, and resources of interest to potential majors, including student organizations and career resources.

After you declare a CS major (code 0701), be sure to sign up for our cs-ugrads mailing list. You may also sign up for cs-jobs, cs-internships, and cs-contests lists if you wish to receive job-related announcements.

Advising and Course Planning

As a CS Major, you will be assigned a faculty advisor who will help you each semester to choose your classes as well as provide career advice (you can also change your advisor by contacting Jacob Harrington, the department’s Undergraduate Program Administrator). General advising inquiries should be sent to, and you may contact Professor Wayne Snyder or Professor Dora Erdos to set up an advising appointment. 

Advising Materials

Undergraduate first year students starting in Fall 2018 (and transfer students starting in Fall 2020) will be completing the BU Hub general education requirements in addition to the CAS language requirement and the CS major coursework. Undergraduate students starting before Fall 2018 will continue with the Divisional Studies/Core Curriculum general education paradigm.

For students completing the BU Hub: use this Plan of Study worksheet as a guide when preparing for advising appointments or registration.

For students completing Divisional Studies/Core Curriculum: This advising sheet for CS majors lists CS major requirements and CAS requirements; fill it out before the advising meeting. 

CS Courses

Most CS major courses have prerequisites and are offered only once a year (see our courses page for more information), so it is important to plan your schedule using Map My Major in advance.

Click here for CS Special Topics Courses (CS 591) descriptions.

Course Waitlists

Please visit our Student Resources page on waitlists to learn more and to sign up for one.

Departmental Honors

Please see here for more information on pursuing Honors in the Computer Science Major.

Learning Outcomes

1. Understand and evaluate the organization, design, and construction of hardware and software systems for computing.
2. Attain a level of mathematical ability allowing the student to formally abstract and analyze computational processes.
3. Analyze problems that require computation to answer, and design and implement appropriate problem solutions that are efficient and effective.

For more information, contact Professor Dora Erdos , the Undergraduate Program Director.