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

The redesign was motivated by our experience with the current introductory course sequence in light of changes that have occurred over the past 10 years with regard to the background and experience levels with which students enter the major. Computer science is more than programming, but that is sometimes not clear to incoming CS majors. Under the current curriculum, many students don’t encounter significant and foundational computer science concepts until their junior years.

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 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 are as follows:

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 110, 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

In general, upper division courses >= 420 will require COMP 301 and/or COMP 311 as prerequisites. Notable exceptions include COMP 455 which will require COMP 283 or MATH 381 and either COMP 110 or COMP 211 as prerequisites; and COMP 550 which will require COMP 210 and either COMP 283 or MATH 381 as prerequisites.

The following diagram illustrates the new sequence, COMP 455, COMP 550 and the role of COMP 110 and COMP 283 as requisites.

Proposed New CS Major Sequence

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.