Computer Science Major

Students must also complete the Undergraduate Registration Requirement and the degree requirements of their home school.

NOTE: This Catalog describes Weinberg College BA requirements that pertain to students who matriculated at Northwestern after spring quarter 2023. Refer to the Archives if you are following BA requirements described in the 2018-2019 through 2022-2023 editions.

Course Title
Program Courses (19 units)
6 core courses:
COMP_SCI 111-0Fundamentals of Computer Programming
COMP_SCI 150-0Fundamentals of Computer Programming 1.5
COMP_SCI 211-0Fundamentals of Computer Programming II
COMP_SCI 212-0Math Foundations of CS Part 1: Discrete Math for CS
COMP_SCI 213-0Introduction to Computer Systems
COMP_SCI 214-0Data Structures & Algorithms
5 breadth courses (see below)
2 project courses (see below)
6 technical electives (see below)
Related Courses (Units depend on mathematics sequence taken.)
Physics or biological sciences courses are recommended to satisfy the Weinberg College natural sciences distribution requirement.

Breadth Courses

Majors must take one course from each area.  Minors must take one course from each of any three areas.

Theory

Course Title
COMP_SCI 335-0Introduction to the Theory of Computation
COMP_SCI 336-0Design & Analysis of Algorithms

Systems

Course Title
COMP_SCI 322-0Compiler Construction
COMP_SCI 339-0Introduction to Database Systems
COMP_SCI 340-0Introduction to Networking
COMP_SCI 343-0Operating Systems
COMP_SCI 345-0Distributed Systems
COMP_SCI 346-0Microcontroller System Design
COMP_SCI 350-0Introduction to Computer Security
COMP_SCI 354-0Computer System Security
COMP_SCI 440-0Advanced Networking
COMP_SCI 441-0Resource Virtualization
COMP_SCI 443-0Advanced Operating Systems
COMP_SCI 446-0Kernel and Other Low-level Software Development
COMP_SCI 450-0Internet Security
COMP_ENG 303-0Advanced Digital Design
COMP_ENG 346-0Microcontroller System Design
COMP_ENG 358-0Introduction to Parallel Computing
COMP_ENG 361-0Computer Architecture I

Artificial Intelligence

Course Title
COMP_SCI 325-0Artificial Intelligence Programming
COMP_SCI 337-0Natural Language Processing: Classical Approaches
COMP_SCI 344-0Design of Computer Problem Solvers
COMP_SCI 348-0Introduction to Artificial Intelligence
COMP_SCI 349-0Machine Learning
COMP_SCI 371-0Knowledge Representation and Reasoning
COMP_SCI 372-0Designing and Constructing Models with Multi-Agent Languages

Interfaces

Course Title
COMP_SCI 313-0Tangible Interaction Design and Learning
COMP_SCI 315-0Design, Technology, and Research
COMP_SCI 329-0HCI Studio
COMP_SCI 330-0Human Computer Interaction
COMP_SCI 331-0Introduction to Computational Photography
COMP_SCI 333-0Interactive Information Visualization
COMP_SCI 351-1Introduction to Computer Graphics
COMP_SCI 352-0Machine Perception of Music & Audio
COMP_SCI 370-0Computer Game Design
COMP_SCI 372-0Designing and Constructing Models with Multi-Agent Languages
COMP_SCI 376-0Computer Game Design and Development
COMP_SCI 377-0Game Design Studio
ELEC_ENG 332-0Introduction to Computer Vision

Software Development and Programming Languages

Course Title
COMP_SCI 310-0Scalable Software Architectures
COMP_SCI 321-0Programming Languages
COMP_SCI 338-0Practicum in Intelligent Information Systems
COMP_SCI 377-0Game Design Studio
COMP_SCI 392-0Rapid Prototyping for Software Innovation
COMP_SCI 393-0Software Construction
COMP_SCI 394-0Agile Software Development

Project Courses

Majors must take two courses from this list.

Project course list

Course Title
COMP_SCI 311-0Inclusive Making
COMP_SCI 312-0Data Privacy
COMP_SCI 315-0Design, Technology, and Research
COMP_SCI 322-0Compiler Construction
COMP_SCI 329-0HCI Studio
COMP_SCI 330-0Human Computer Interaction
COMP_SCI 331-0Introduction to Computational Photography
COMP_SCI 337-0Natural Language Processing: Classical Approaches
COMP_SCI 338-0Practicum in Intelligent Information Systems
COMP_SCI 339-0Introduction to Database Systems
COMP_SCI 340-0Introduction to Networking
COMP_SCI 343-0Operating Systems
COMP_SCI 344-0Design of Computer Problem Solvers
COMP_SCI 345-0Distributed Systems
COMP_SCI 346-0Microcontroller System Design
COMP_SCI 351-1Introduction to Computer Graphics
COMP_SCI 351-2Intermediate Computer Graphics
COMP_SCI 354-0Computer System Security
COMP_SCI 355-0Digital Forensics and Incident Response
COMP_SCI 367-0Wireless and Mobile Health: Passive Sensing Data Analytics
COMP_SCI 370-0Computer Game Design
COMP_SCI 371-0Knowledge Representation and Reasoning
COMP_SCI 372-0Designing and Constructing Models with Multi-Agent Languages
COMP_SCI 377-0Game Design Studio
COMP_SCI 392-0Rapid Prototyping for Software Innovation
COMP_SCI 393-0Software Construction
COMP_SCI 394-0Agile Software Development
COMP_SCI 397-0Special Projects in Computer Science
COMP_SCI 412-0Data Privacy
COMP_SCI 415-0Design, Technology, and Research
COMP_SCI 433-0Wireless Protocols for the Internet of Things
COMP_SCI 441-0Resource Virtualization
COMP_SCI 445-0Internet-scale Experimentation
COMP_SCI 446-0Kernel and Other Low-level Software Development
COMP_SCI 450-0Internet Security
COMP_SCI 461-0Deep Learning for Natural Language Processing
COMP_SCI 497-0Special Projects in Computer Science
COMP_ENG 346-0Microcontroller System Design
COMP_ENG 366-0Embedded Systems
COMP_ENG 466-0Embedded Systems
ELEC_ENG 332-0Introduction to Computer Vision

Technical electives

Majors must take six technical electives.  Any 300- or 400-level COMP_SCI course may be taken as a technical elective.  In addition the following courses may also be taken as technical electives:

Course Title
COMP_ENG 303-0Advanced Digital Design
COMP_ENG 329-0The Art of Multicore Concurrent Programming
COMP_ENG 334-0Fundamentals of Blockchains and Decentralization
COMP_ENG 346-0Microcontroller System Design
COMP_ENG 355-0ASIC and FPGA Design
COMP_ENG 356-0Introduction to Formal Specification & Verification
COMP_ENG 357-0Design Automation in VLSI
COMP_ENG 358-0Introduction to Parallel Computing
COMP_ENG 361-0Computer Architecture I
COMP_ENG 362-0Computer Architecture Projects
COMP_ENG 364-0CyberPhysical Systems Design and Application
COMP_ENG 365-0Internet-of-things Sensors, Systems, And Applications
COMP_ENG 366-0Embedded Systems
COMP_ENG 368-0Programming Massively Parallel Processors with CUDA
COMP_ENG 452-0Adv Computer Architecture
COMP_ENG 453-0Parallel Architectures
COMP_ENG 456-0Modern Topics in Computer Architecture
COMP_ENG 459-0VLSI Algorithmics
COMP_ENG 464-0Cyber-Physical Systems Design and Application
COMP_ENG 465-0Internet-of-things Sensors, Systems, And Applications
COMP_ENG 466-0Embedded Systems
COMP_ENG 468-0Programming Massively Parallel Processors with CUDA
ELEC_ENG 326-0Electronic System Design I
ELEC_ENG 332-0Introduction to Computer Vision
ELEC_ENG 375-0Machine Learning: Foundations, Applications, and Algorithms
ELEC_ENG 433-0Statistical Pattern Recognition
ELEC_ENG 435-0Deep Learning: Foundations, Applications, and Algorithms

Related Courses

Mathematics

Course Title
MATH 220-1
MATH 220-2
Single-Variable Differential Calculus
and Single-Variable Integral Calculus
or MATH 218-1
MATH 218-2
MATH 218-3
Single-Variable Calculus with Precalculus
and Single-Variable Calculus with Precalculus
and Single-Variable Calculus with Precalculus
MATH 230-1Multivariable Differential Calculus
or MATH 228-1 Multivariable Differential Calculus for Engineering
MATH 240-0Linear Algebra

Probability and Statistics1

Course Title
COMP_SCI 262-0Mathematical Foundations of Computer Science - Part 2
or IEMS 201-0 Introduction to Statistics
or MATH 310-1 Probability and Stochastic Processes
or STAT 210-0 Introduction to Probability and Statistics
1

STAT 202-0 Introduction to Statistics and Data Science is not accepted.

Note

Many courses are eligible to count toward more than one requirement for the major; for example, all breadth courses are also technical elective courses. A student who completes such a course must choose which requirement area to apply that course. A single course does not satisfy more than one requirement at a time.

Concentrations

Computer Science students may elect to declare one optional concentration, to highlight that they are specializing in one of the following sub-fields of computer science:

  • Artificial Intelligence
  • Systems
  • Foundations
  • Security and Privacy
  • Software Engineering and Programming Languages
  • Robotics
  • Computer Hardware and Architecture
  • Human-Computer Interaction

To fulfill a concentration, a student needs to have completed four classes from that concentration's list of courses within their Computer Science Major Courses (CS Breadth, Project and Technical Electives).

The list of courses for each concentration, as well as the full details and requirements for concentrations can be found on the Computer Science department web site.

Honors in Computer Science

Outstanding students majoring in computer science may be considered for program honors. For information on criteria and procedures, contact the program director and see Honors in the Major.