BS Concentration in Software Systems

Prerequisites

  • One of the following introductory COMPSCI courses or equivalent:
    • COMPSCI 101L - Introduction to Computer Science
    • COMPSCI 102 - Interdisciplinary Introduction to Computer Science
    • COMPSCI 116 - Foundations of Data Science
  • MATH 111L - Introductory Calculus I or equivalent
  • MATH 112L - Introductory Calculus II or equivalent

Requirements

  • COMPSCI 201 - Data Structures and Algorithms
  • COMPSCI 230 - Discrete Math for Computer Science or 232 - Discrete Mathematics and Proofs  see substitutions
  • COMPSCI 210D - Introduction to Computer Systems) or 250D - Computer Architecture
  • COMPSCI 330 - Design & Analysis of Algorithms
  • One of the following COMPSCI courses on systems:
    • COMPSCI 310 - Introduction to Operating Systems or 510 - Advanced Operating Systems
    • COMPSCI 316 - Introduction to Databases or 516 - Database Systems
    • COMPSCI 345 - Graphics Software Architecture or 350 - Digital Systems (cross-listed as ECE 350) or 550 - Advanced Computer Architecture (cross-listed as ECE 552) or 590 - Computer Architecture and Hardware Acceleration
    • COMPSCI 351 - Computer Security or 581 - Computer Security* or 390 - Software Reverse Engineering
    • COMPSCI 356 - Computer Network Architecture or 514 - Computer Networks
    • COMPSCI 512 - Distributed Systems
  • Two courses in MATH/STA:
    • Two courses in MATH/STA:
      • One STA course at or above STA 111**, including the cross-listed MATH 230
      • One of MATH 202, 216, 218, or 221***
  • Five electives at 200-level or higher (beyond those counted towards the requirements above). Note: Three out of the five electives must be COMPSCI courses.
    • One elective in COMPSCI (independent study possible), MATH, STA, or a related area approved by the Director of Undergraduate Studies
    • Four electives from the list below, with at most one course from each bullet. The course you take for the Systems requirement above cannot count as one of the four courses.
      • COMPSCI 307 - Software Design and Implementation or 308 - Advanced Software Design and Implementation or 290 - Mobile Software Design (last taught Spring 2018) or 290 - Web Application Development (Spring 2018, Spring 2021) or 290 - Server-side Web Applications (Spring 2023)
      • COMPSCI 310 - Introduction to Operating Systems or 510 - Advanced Operating Systems
      • COMPSCI 316 - Introduction to Databases or 516 - Database Systems
      • COMPSCI 345 - Graphics Software Architecture or COMPSCI 350 - Digital Systems or COMPSCI 550 - Advanced Computer Architecture or COMPSCI 590-02 - Computer Architecture and Hardware Acceleration (Spring 2023)
      • COMPSCI 351 - Computer Security or 581 - Computer Security or COMPSCI 290/590 Security equivalent or COMPSCI 390-03 - Software Reverse Engineering (Spring 2023) or ECE 560 - Computer and Info Security or COMPSCI 590-03 - Language-Based Security (Fall 2024)
      • COMPSCI 356 - Computer Network Architecture or 514 - Computer Networks
      • COMPSCI 408 - Delivering Software or ECE 458 - Engineering Software for Maintainability or ECE 564 - Mobile Application Development
      • COMPSCI 512 - Distributed Systems
      • COMPSCI 553 - Compiler Construction (cross-listed as ECE 553)

* Both courses have been offered as a 290 and 590 course with the same name, and will satisfy this requirement. 

** STA 111 will not be offered after Summer 2020. We recommend you take STA 199 or higher.

***MATH 212 does not count towards this requirement, but can count towards an elective.