The department has recently redesigned the introductory sequence of courses common to all of our degree programs (BA, BS, minor). These changes officially begin in Fall 2020.

In formulating the new sequence, we have also incorporated constructive feedback received in the department’s last external review suggesting specific changes to help modernize our curriculum. Anticipated benefits of the new sequence include:

  • Development of a more sophisticated understanding of foundational computer science concepts earlier in the students’ program of study.
  • Simplified prerequisites that are easier for both students and advisors to understand and implement.
  • Improved student learning due to multiple levels of exposure to foundational concepts
  • A more flexible program of study that better accommodates the increased diversity of our students’ backgrounds.
  • A more focused and effective course in Computer Organization by introducing a prerequisite course that includes system fundamentals and tools.

The new introductory sequence will replace the courses COMP 401, COMP 410, and COMP 411 (three courses totaling 11 units), with the sequence: COMP 210, COMP 211, COMP 301, and COMP 311 (four courses totaling 12 units). The bulletin descriptions for the proposed new courses can be found at the bottom of this page.

In general, upper division courses >= 420 will require COMP 301 and/or COMP 311 as prerequisites. A notable exceptions is COMP 455 which requires COMP 283 or MATH 381 and COMP 110 as prerequisites.

One final result of the change is that COMP 116, which is primarily for non-majors, no longer satisfies a prerequisite for the first courses in the major. Instead, COMP 116 students intending to continue on toward the major or minor will be expected to demonstrate their readiness through the “by examination” procedure for COMP 110.

By examination options will be available for both COMP 110 and COMP 210 for students with prior experience with programming and who may have already taken a course in data structures at a different institution (e.g., transfer students, students from high schools with strong computer science offerings). The details of the by examination option are still being worked out but should be available for students mid-summer 2020. Details will be published here: https://cs.unc.edu/academics/undergraduate/comp-110-and-comp-210-placement-credit-by-examination/

Advice For Students Starting The Major

Students are advised to start the major as soon as possible. It may not be possible to start the major if the core major requirement sequence is not started by their sophomore year (see below). COMP 283 is a co-requisite with COMP 210 and a pre-requisite for COMP 211.

For an overview of the curriculum and how courses fit together please see this video: https://www.youtube.com/watch?v=8rmzysK59L8

The “2 before 3” Policy Starting in Spring 2021

In order to ensure more equitable access to upper division computer science courses, the department will be putting into place mechanisms to ensure that all declared computer science majors that have not completed their major program of study are given a chance to register for 2 upper division COMP courses before any student is allowed to register for 3 or more upper division COMP courses (i.e., beyond COMP 311). This will ensure that the department is able to support as many majors as possible. Students are advised to plan their programs of study accordingly. In particular, students should make sure that they begin the major sequence with enough semesters left to complete the program taking two computer science courses at a time. Transfer students are advised to take an introductory programming course and data structures if possible before transferring to UNC and to expect to make use of the 9th and 10th semester available to them.

Below is a sample 7 semester sequence that completes the BS core requirements and its prerequisites.

  • Semester 1
    • COMP 110
    • MATH 231
  • Semester 2
    • COMP 283
    • COMP 210
  • Semester 3
    • COMP 211
    • COMP 301
  • Semester 4
    • COMP 311
    • COMP 455
  • Semester 5
    • COMP 550
    • Upper division COMP elective
  • Semester 6
    • Upper division COMP elective
    • Upper division COMP elective
  • Semester 7
    • Upper division COMP elective
    • Upper division COMP elective

Students with COMP 110 and MATH 231 credit can complete the core requirement sequence in 6 semesters. The BA which allows courses from outside of the department to count toward the upper division elective credit requirements which would not be subject to the “2 before 3” policy and requires one fewer upper division course overall than the BS can be completed in as few as 5 semesters assuming a student starts with COMP 110 and MATH 231 credit.

Updated BS, BA, and Minor Requirements Starting Fall 2020

Until the official UNC bulletin is republished for the upcoming academic year, the description of the BS, BA, and minor programs in the bulletin is no longer up to date. Please refer to the following pages for a more accurate description of these programs starting in Fall 2020:

Catalog Descriptions of the New Introductory Sequence

COMP 210: Data Structures and Analysis
The analysis of data structures and their associated algorithms. Abstract data types, lists, stacks, queues, trees, and graphs. Sorting, searching, hashing. By examination credit available.

  • 3 credits
  • Co-requisites: COMP 283 or MATH 381
  • Pre-requisites: COMP 110, and MATH 231 or MATH 241; a grade of C or better is required.

COMP 211: Systems Fundamentals
Systems programming fundamentals including execution models, memory management, and runtime environments. Processes, input/output, and system calls.

  • 3 credits
  • Co-requisistes: COMP 283 or MATH 381
  • Pre-requisites: COMP 210, and MATH 231 or MATH 241; a grade of C or better is required

COMP 311: Computer Organization
Digital logic, circuit components. Data representation, computer architecture and implementation, assembly language programming.

  • 3 credits
  • Pre-requisites: COMP 211, and COMP 283 or MATH 381

COMP 301: Foundations of Programming
Advanced programming including object-oriented and modular design, design patterns, components, interfaces, effects, testing, dependency injection, and asynchronous programming.

  • 3 credits
  • Pre-requisites: COMP 210, and COMP 283 or MATH 381