By Ravi Chugh
April 1, 2024

The computer science major at the University of Chicago has grown dramatically in the past decade. Compared to 34 students graduating with either a BA or BS in computer science in AY 2013-14, last year 156 students graduated with a CS major. Also according to the census reports from the registrar, computer science is now the second most common declared major in the College.

During this time, the number and breadth of courses offered has grown significantly, with the curriculum requirements being reviewed and revised along the way.

  • In AY 2018-19, the number of courses available to fulfill the Theory C requirement was increased from two to seven (that number is now ten).
  • In AY 2019-20, the major was extended with an option to complete a three-course specialization, chosen from among seven curriculum areas within computer science.
  • Also in AY 2019-20, the physical sciences general education requirement was revised to allow BA students to choose from among a broader range of courses.
  • In AY 2022-23, the introductory sequence was restructured.
  • Also in AY 2022-23, the requirements for completing a bachelor’s thesis were formalized.

Throughout these changes, however, the basic structure of the major has remained largely the same. As detailed in the latest College Catalog, we have made some structural changes to the requirements for both the BA and BS degrees in computer science starting AY 2024-25. Changes to the BS include some “regular maintenance” to help refresh the aims of the degree: to prepare students with a depth of foundational knowledge in computer science. Changes to the BA aim to allow students to study a greater breadth of topics en route to various careers in computer science and beyond.

In addition to changes to the major requirements described below, we are also working to streamline some of the information in the Catalog, the department’s Undergraduate pages, and Course Info. Take a look around, and check back for more updates in the future.

Please note that students who are already on their way to fulfilling the existing BA or BS requirements are allowed to do so. As usual, currently enrolled students may choose to fulfill the existing requirements or adopt the new Catalog for their degree audits.


Current Bx Requirements

As background to discuss the changes, first we depict the current major requirements below. The current major requirements comprise the four-course Introductory Sequence, a three-course Theory ABC sequence, two courses in Programming Languages and Systems, and five electives. Students may elect to take three of the electives in a specific specialization area. In addition, currently BS students must take three courses in an “approved field outside computer science.”


BS Requirements Starting AY 2024-25

There are four components to the revised BS requirements, indicated by maroon circles in the following diagram and then discussed in turn.

1. Total Number of Courses

The three-course related field requirement has been eliminated, and the total number of CS courses has been raised from 14 to 15.

In the current era, in which many if not all fields are impacted by computer science and computing in some way — and in which the CS faculty and course offerings have expanded in countless directions — the related field requirement no longer serves a meaningful role in the major requirements.

Furthermore, increasing the total number of CS courses helps facilitate the goal for BS students to pursue greater depth in core computer science topics.

2. Systems Requirement

For many years, the CS major required students to complete three courses in the Programming Languages and Systems area. This number was decreased to two when the introductory sequence was revised and expanded from three courses to four.

The growth of the department has led to the creation of many courses in a variety of curriculum areas, and many of these courses have been included under the umbrella of PL and Systems. This explosion in the breadth of course offerings is undoubtedly positive in its own right. However, the sheer size of the current PL and Systems list — which now includes 21 courses — means that the PL and Systems requirement no longer achieves a clear and coherent set of objectives.

The new BS degree program eliminates the PL and Systems requirement in favor of a one-course Systems requirement, fulfilled by a much narrower list of core systems classes. This list includes:

  • CMSC 22200 Computer Architecture
  • CMSC 22240 Computer Architecture for Scientists
  • CMSC 22600 Compilers for Computer Languages
  • CMSC 23000 Operating Systems
  • CMSC 23320 Foundations of Computer Networks
  • CMSC 23500 Introduction to Database Systems

Each of these courses is rooted in studying the principles of systems that are intimately concerned with low-level architectural design factors, leading to a detailed understanding of the hardware/software system stack and the use of complex data structures in performance-critical systems.

3. Machine Learning Requirement

It goes without saying that recent advances in the mathematical foundations and applications of machine learning play an influential role in modern computer science. As such, the new BS program requires that students take at least one machine learning class, such as CMSC 25300 Mathematical Foundations of Machine Learning, CMSC 25400 Machine Learning, TTIC 31020 Machine Learning, or more advanced courses in the Machine Learning curriculum area.

4. Required Specialization

Lastly, in line with the aim for BS students to pursue greater depth in foundational computer science, the new BS degree requires students to complete a three-course specialization. Adding up the different requirements leaves three free electives to reach the required 15 CS courses to earn a BS in computer science.


BA Requirements Starting AY 2024-25

Compared to the BS changes, the changes to the BA are larger in overall scope though simple to explain. These changes are indicated by maroon circles in the following diagram and then discussed in turn. 

0. Total Number of Courses

The zeroth consideration is the total number of CS courses, which remains 14 as in the current BA (and BS) requirements.

1. Fewer Required Courses

The primary structural change, compared to the BS, is that only the Introductory Sequence and Theory AB courses are required. There is no Systems (or PL and Systems) requirement, nor a Theory C requirement.

2. Breadth Requirement

The reduction in required courses enables an increase in the number of electives, now eight. To facilitate the goal for BA students to obtain broad training in the many fields of computer science, the eight electives must span at least five different curriculum areas. Curriculum areas include all of the existing specialization areas (currently there are seven), plus several other areas of computer science in which we offer multiple courses but not enough to sustain three-course sequences of specialized study (currently there are four: Quantum Computing, Robotics, Software Engineering, and Visual Computing). There is also a Miscellaneous area for nascent corners of our curriculum.

As detailed on Course Info, individual courses may be tagged as part of multiple curriculum areas. But for the purposes of the breadth requirement, any single course can only count toward one curriculum area.

Furthermore, students pursuing a BA degree do not have an option for specialization. Even if a student completes three courses in a particular curriculum area, the conferred degree will not include a designation indicating a specialization in that area.



To recap, the new requirements for the BS degree are a natural evolution of existing (BA and BS) requirements. The changes to the BA are larger in structure, differentiating its focus more toward breadth as opposed to depth in computer science, providing students an even greater variety of pathways for studying computer science and related fields at UChicago.



In addition to the changes above, there are also changes to the policies for earning Honors in computer science. The structure remains the same: Students must either pursue a Bx Thesis or three approved courses, and also earn a B or higher in all CS courses counted toward the major.

The first change lies in the definition of “approved courses.” Currently, the list of courses contains only graduate courses, in particular, drawing from among PhD Core and PhD Elective courses. Starting AY 2024-25, the list of approved courses will be expanded to include some CMSC 200-level courses with “Honors” in the title. See Course Info for a complete list of courses that satisfy the Honors requirement.

The second change is that two of the three courses counted towards the Honors requirement must be completed at least one quarter prior to graduation.



Many thanks to the rest of the undergraduate team (Adam Shaw and Jessica Garza), the department’s undergraduate committee, and the CS faculty as a whole for working on these changes. Special thanks to Professor Anne Rogers who, while serving as DUS for the previous five years, led all of the curriculum efforts described at the beginning of this article, as well as the structural changes to the major requirements announced here. Thank you, Professor Rogers!


Additional References

CS Catalog pages