Computer Science Degree

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

Requirements (48 units)

Core Courses (26 units)1

Course Title
4 mathematics courses
Single-Variable Differential Calculus
Single-Variable Integral Calculus
Multivariable Differential Calculus for Engineering
Math Foundations of CS Part 1: Discrete Math for CS
4 units of basic science chosen according to McCormick basic science guidelines
General Physics
and General Physics Laboratory 2
Plus an additional 2.66 units from the list of basic science courses
3 engineering foundations courses
3 design, communications, and innovation courses
7 social sciences/humanities courses
5 unrestricted electives

Major Program (22 units) 

Course Title
4 required courses
Software Design & Composition
Fundamentals of Computer Programming
Data Structures & Algorithms (Formerly Comp_Sci 214)
Programming in Systems-Level Languages
Introduction to Computer System
4 advanced elective courses
Any 300-level or higher class, or introductory courses that directly support computer science (COG_SCI 207-0, COMP_ENG 203-0, COMP_ENG 205-0, COMP_SCI 1CA, COMP_SCI 260-0, COMP_SCI 262-0, COMP_SCI 265-0, COMP_SCI 296-0, COMP_SCI 298-0, GEN_ENG 211-0, GEN_ENG 251-0, MATH 228-2, MATH 230-2, MECH_ENG 233-0) 2
5 breadth courses
2 project courses
1 societal impact course
6 technical electives
1

See general requirements for details.

2

PHYSICS 135-1 General Physics can be replaced by GEN_ENG 212-0 Engineering Physics - Dynamics  (Note: if replaced by GEN_ENG 212-0 Engineering Physics - Dynamics another 1/3 unit of science is needed to fulfill the science requirement). Courses can be chosen from McCormick-approved basic science categories of Chemistry, Physics, Biological Science, Earth & Planetary Science or Astronomy.

3

Scores of 4 or 5 on the AP CS A exam or scores of 5, 6, or 7 on the IB CS HL exam transfer to Northwestern as COMP_SCI 1CA.

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 and Networked Systems
COMP_SCI 346-0Microcontroller System Design
or COMP_ENG 346-0 Microcontroller System Design
COMP_SCI 350-0Introduction to Computer Security
COMP_SCI 354-0Computer System Security
COMP_SCI 358-0Introduction to Parallel Computing
or COMP_ENG 358-0 Introduction to Parallel Computing
COMP_SCI 368-0Programming Massively Parallel Processors with CUDA
or COMP_SCI 468-0 Programming Massively Parallel Processors with CUDA
or COMP_ENG 368-0 Programming Massively Parallel Processors with CUDA
or COMP_ENG 468-0 Programming Massively Parallel Processors with CUDA
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 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
or COMP_SCI 472-0 Designing and Constructing Models with Multi-Agent Languages

Interfaces

Course Title
COMP_SCI 313-0Tangible Interaction Design and Learning
or COMP_SCI 413-0 Tangible Interaction Design and Learning
COMP_SCI 315-0Design, Technology, and Research
or COMP_SCI 415-0 Design, 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 353-0Natural & Artificial Vision
COMP_SCI 370-0Computer Game Design
COMP_SCI 372-0Designing and Constructing Models with Multi-Agent Languages
or COMP_SCI 472-0 Designing 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 380-0Software Quality Engineering
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
or COMP_SCI 412-0 Data Privacy
COMP_SCI 315-0Design, Technology, and Research
or COMP_SCI 415-0 Design, Technology, and Research
COMP_SCI 316-2CS Education Research in the Community II: Sports and Computer Science
COMP_SCI 317-0Sports, Technology and Learning
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 and Networked Systems
COMP_SCI 346-0Microcontroller System Design
or COMP_ENG 346-0 Microcontroller 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 (mHealth)
or COMP_SCI 467-0 Wireless and Mobile Health (mHealth)
COMP_SCI 370-0Computer Game Design
COMP_SCI 371-0Knowledge Representation and Reasoning
COMP_SCI 372-0Designing and Constructing Models with Multi-Agent Languages
or COMP_SCI 472-0 Designing and Constructing Models with Multi-Agent Languages
COMP_SCI 377-0Game Design Studio
COMP_SCI 380-0Software Quality Engineering
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
or COMP_SCI 497-0 Special Projects in Computer Science
COMP_SCI 398-0Research Track Practicum
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-0Large Language Models
COMP_ENG 366-0Embedded Systems
or COMP_ENG 466-0 Embedded Systems
ELEC_ENG 332-0Introduction to Computer Vision

Societal Impact Course

Societal Impact course list

Course Title
Majors must take one course from this list.
COMP_SCI 260-0Introduction to Law and Digital Technologies
COMP_SCI 265-0AI and International Security
COMP_SCI 311-0Inclusive Making
COMP_SCI 314-0Technology and Human Interaction
COMP_SCI 387-0Responsible Software Engineering
COMP_SCI 396-0Special Topics in Computer Science (Computing, Ethics, and Society)
COMM_ST 358-0Algorithms and Society
COMM_ST 378-0Online Communities and Crowds
COMM_ST 379-0Digital Propaganda and Repression
GBL_HLTH 302-0Global Bioethics
GBL_HLTH 324-0Volunteerism and the Ethics of Help
GBL_HLTH 328-0Human Circulations and Human Values: Global Mobilities of People and Products
GERMAN 236-0Kafka and Nietzsche
HISTORY 253-0A Global History of Prisons and Camps
ISEN 230-0Climate Change and Sustainability: Ethical Dimensions
ISEN 375-0Issues in Environmental Philosophy
PHIL 240-0Freedom and Responsibility
PHIL 255-0Theory of Knowledge
PHIL 260-0Introduction to Moral Philosophy
PHIL 262-0Ethical Problems and Public Issues
PHIL 268-0Ethics and the Environment
PHIL 269-0Bioethics
PHIL 275-0Climate Change and Sustainability: Ethical Dimensions
PHIL 326-0Topics in Philosophy of Medicine
PHIL 364-0Business and Professional Ethics
POLI_SCI 303-0Modernity and Its Discontents
POLI_SCI 304-0Human Rights Between East and West

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:

Technical electives list

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
or ELEC_ENG 334-0 Fundamentals 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
or COMP_ENG 464-0 Cyber-Physical Systems Design and Application
COMP_ENG 365-0Internet-of-things Sensors, Systems, And Applications
or COMP_ENG 465-0 Internet-of-things Sensors, Systems, And Applications
COMP_ENG 366-0Embedded Systems
or COMP_ENG 466-0 Embedded Systems
COMP_ENG 368-0Programming Massively Parallel Processors with CUDA
or COMP_ENG 468-0 Programming 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
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

Note

Courses that fulfill the breadth and project courses also fulfill the technical elective requirement. However, a given course may only be applied to a single requirement for the major.  In such cases where a single course could be applied to multiple requirements, a student must choose which requirement to apply a given course to. A course may not be counted toward multiple requirements at once.

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

Course Title
COMP_SCI 265-0AI and International Security
COMP_SCI 301-0Introduction to Robotics Laboratory
COMP_SCI 302-0Artifical Life
COMP_SCI 325-0Artificial Intelligence Programming
COMP_SCI 334-0Introduction to Computational Linguistics
COMP_SCI 337-0Natural Language Processing: Classical Approaches
COMP_SCI 338-0Practicum in Intelligent Information Systems
COMP_SCI 344-0Design of Computer Problem Solvers
COMP_SCI 347-0Conversational AI
or COMP_SCI 447-0 Conversational AI
COMP_SCI 348-0Introduction to Artificial Intelligence
COMP_SCI 349-0Machine Learning
COMP_SCI 353-0Natural & Artificial Vision
COMP_SCI 371-0Knowledge Representation and Reasoning
COMP_SCI 372-0Designing and Constructing Models with Multi-Agent Languages
or COMP_SCI 472-0 Designing and Constructing Models with Multi-Agent Languages
COMP_SCI 374-0Causal Graphical Models (or Modeling Relationships with Causal Inference)
COMP_SCI 396-0Special Topics in Computer Science (Declarative Programming for Game AI)
COMP_SCI 396-0Special Topics in Computer Science (AI for Hybrid, Participatory Narratives or AI and Experimental Narrative)
or COMP_SCI 496-0 Special Topics in Computer Science
COMP_SCI 396-0Special Topics in Computer Science (Machine Learning and Sensing)
or COMP_SCI 496-0 Special Topics in Computer Science
COMP_SCI 397-0Special Projects in Computer Science (Seminar in Statistical Language Modeling)
COMP_SCI 409-0Swarms and Multi-Robot Systems
COMP_SCI 449-0Deep Learning
COMP_SCI 454-0Computational Optics
COMP_SCI 461-0Large Language Models
COMP_SCI 463-0Generative Deep Models
COMP_SCI 469-0Machine Learning & Artificial Intelligence for Robotics
COMP_SCI 474-0Probabilistic Graphical Models
COMP_SCI 496-0Special Topics in Computer Science (AI Perspectives: Symbolic Reasoning to Deep Learning)
COMP_SCI 496-0Special Topics in Computer Science (Logic in AI)
COG_SCI 207-0Introduction to Cognitive Modeling
*while this class does not count as a Technical Elective, McCormick students (but not Weinberg students) can count it as an “Advanced Elective”.

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_ENG 361-0Computer Architecture I

Foundations 

Course Title
COMP_SCI 307-0Introduction to Cryptography
COMP_SCI 332-0Online Markets
COMP_SCI 335-0Introduction to the Theory of Computation
COMP_SCI 336-0Design & Analysis of Algorithms
COMP_SCI 362-0Foundations of Quantum Computing and Quantum Information
or COMP_SCI 462-0 Foundations of Quantum Computing and Quantum Information
COMP_SCI 396-0Special Topics in Computer Science (Algorithms for Collective Decision Making)
COMP_SCI 396-0Special Topics in Computer Science (Advanced Algorithm Design via Competitive Programming)
or COMP_SCI 496-0 Special Topics in Computer Science
COMP_SCI 407-0Advanced Topics in Modern Cryptography
COMP_SCI 436-0Graduate Algorithms
COMP_SCI 437-0Approximation Algorithms

Security and Privacy

Course Title
COMP_SCI 265-0AI and International Security
COMP_SCI 307-0Introduction to Cryptography
COMP_SCI 308-0Foundations of Security
COMP_SCI 312-0Data Privacy
or COMP_SCI 412-0 Data Privacy
COMP_SCI 350-0Introduction to Computer Security
COMP_SCI 354-0Computer System Security
COMP_SCI 355-0Digital Forensics and Incident Response
COMP_SCI 360-0Advanced Offense and Defense in Cybersecurity
COMP_SCI 407-0Advanced Topics in Modern Cryptography
COMP_SCI 450-0Internet Security
COMP_SCI 496-0Special Topics in Computer Science (Engineering Modern Cryptographic Protocols)

Software Engineering and Programming Languages 

Course Title
COMP_SCI 303-0Full Stack Software Engineering
COMP_SCI 310-0Scalable Software Architectures
COMP_SCI 320-0Proving Properties of Programs with Mechanized Logic
COMP_SCI 321-0Programming Languages
COMP_SCI 322-0Compiler Construction
COMP_SCI 323-0Code Analysis and Transformation
COMP_SCI 324-0Dynamics of Programming Languages
or COMP_SCI 424-0 Dynamics of Programming Languages
COMP_SCI 380-0Software Quality Engineering
COMP_SCI 387-0Responsible Software Engineering
COMP_SCI 388-0Software Engineering Beyond Programming
COMP_SCI 392-0Rapid Prototyping for Software Innovation
COMP_SCI 393-0Software Construction
COMP_SCI 394-0Agile Software Development

Robotics

Course Title
COMP_SCI 301-0Introduction to Robotics Laboratory
or MECH_ENG 301-0 Introduction to Robotics Laboratory
COMP_SCI 302-0Artifical Life
COMP_SCI 353-0Natural & Artificial Vision
COMP_SCI 409-0Swarms and Multi-Robot Systems
COMP_SCI 410-0Autonomous Quadrotor Design and Control
COMP_SCI 469-0Machine Learning & Artificial Intelligence for Robotics
or MECH_ENG 469-0 Machine Learning and Artificial Intelligence for Robotics
MECH_ENG 333-0Introduction to Mechatronics
MECH_ENG 433-0Advanced Mechatronics
MECH_ENG 449-0Robotic Manipulation
MECH_ENG 455-0Active Learning in Robotics
MECH_ENG 495-0Selected Topics in Mechanical Engg (Soft robotics*)
*while this class does not count as a Technical Elective, McCormick students (but not Weinberg students) can count it as an “Advanced Elective”.

Computer Hardware and Architecture

Course Title
COMP_SCI 346-0Microcontroller System Design
or COMP_ENG 346-0 Microcontroller System Design
COMP_ENG 303-0Advanced Digital Design
COMP_ENG 361-0Computer Architecture I
COMP_ENG 362-0Computer Architecture Projects
COMP_ENG 452-0Adv Computer Architecture
COMP_ENG 456-0Modern Topics in Computer Architecture
COMP_ENG 459-0VLSI Algorithmics

Human-Computer Interaction

Course Title
COMP_SCI 311-0Inclusive Making
COMP_SCI 313-0Tangible Interaction Design and Learning
or COMP_SCI 413-0 Tangible Interaction Design and Learning
COMP_SCI 314-0Technology and Human Interaction
COMP_SCI 315-0Design, Technology, and Research (Two credits of CS 315/415 may count toward the HCI concentration)
or COMP_SCI 415-0 Design, Technology, and Research
COMP_SCI 329-0HCI Studio
COMP_SCI 330-0Human Computer Interaction
COMP_SCI 333-0Interactive Information Visualization
COMP_SCI 341-0Social Networks Analysis
or COMM_ST 352-0 Social Network Analysis
or IEMS 341-0 Social Networks Analysis
COMP_SCI 352-0Machine Perception of Music & Audio
COMP_SCI 353-0Natural & Artificial Vision
COMP_SCI 397-0Special Projects in Computer Science (Transformative Computer Science Education)
COMM_ST 227-0Communication & Technology
COMM_ST 378-0Online Communities and Crowds
*while this class does not count as a Technical Elective, McCormick students (but not Weinberg students) can count it as an “Advanced Elective”.

Quantum

Course Title
COMP_SCI 336-0Design & Analysis of Algorithms
COMP_SCI 362-0Foundations of Quantum Computing and Quantum Information (**)
or COMP_SCI 462-0 Foundations of Quantum Computing and Quantum Information
COMP_SCI 496-0Special Topics in Computer Science (**Quantum Systems)
COMP_SCI 496-0Special Topics in Computer Science (Quantum Computer Applications and Programming)
COMP_ENG 495-0Special Topics in Computer Engineering (FPGA Design for Quantum Control*)
PHYSICS 339-2Quantum Mechanics (*)
*while this class does not count as a Technical Elective, McCormick students (but not Weinberg students) can count it as an “Advanced Elective”.
**These classes are especially recommended.

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).