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-0 | Introduction to the Theory of Computation |
| COMP_SCI 336-0 | Design & Analysis of Algorithms |
Systems
| Course | Title |
|---|---|
| COMP_SCI 322-0 | Compiler Construction |
| COMP_SCI 339-0 | Introduction to Database Systems |
| COMP_SCI 340-0 | Introduction to Networking |
| COMP_SCI 343-0 | Operating Systems |
| COMP_SCI 345-0 | Distributed and Networked Systems |
| COMP_SCI 346-0 | Microcontroller System Design |
| or COMP_ENG 346-0 | Microcontroller System Design |
| COMP_SCI 350-0 | Introduction to Computer Security |
| COMP_SCI 354-0 | Computer System Security |
| COMP_SCI 358-0 | Introduction to Parallel Computing |
| or COMP_ENG 358-0 | Introduction to Parallel Computing |
| COMP_SCI 368-0 | Programming 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-0 | Advanced Networking |
| COMP_SCI 441-0 | Resource Virtualization |
| COMP_SCI 443-0 | Advanced Operating Systems |
| COMP_SCI 446-0 | Kernel and Other Low-level Software Development |
| COMP_SCI 450-0 | Internet Security |
| COMP_ENG 303-0 | Advanced Digital Design |
| COMP_ENG 361-0 | Computer Architecture I |
Artificial Intelligence
| Course | Title |
|---|---|
| COMP_SCI 325-0 | Artificial Intelligence Programming |
| COMP_SCI 337-0 | Natural Language Processing: Classical Approaches |
| COMP_SCI 344-0 | Design of Computer Problem Solvers |
| COMP_SCI 348-0 | Introduction to Artificial Intelligence |
| COMP_SCI 349-0 | Machine Learning |
| COMP_SCI 371-0 | Knowledge Representation and Reasoning |
| COMP_SCI 372-0 | Designing 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-0 | Tangible Interaction Design and Learning |
| or COMP_SCI 413-0 | Tangible Interaction Design and Learning |
| COMP_SCI 315-0 | Design, Technology, and Research |
| or COMP_SCI 415-0 | Design, Technology, and Research |
| COMP_SCI 329-0 | HCI Studio |
| COMP_SCI 330-0 | Human Computer Interaction |
| COMP_SCI 331-0 | Introduction to Computational Photography |
| COMP_SCI 333-0 | Interactive Information Visualization |
| COMP_SCI 351-1 | Introduction to Computer Graphics |
| COMP_SCI 352-0 | Machine Perception of Music & Audio |
| COMP_SCI 353-0 | Natural & Artificial Vision |
| COMP_SCI 370-0 | Computer Game Design |
| COMP_SCI 372-0 | Designing and Constructing Models with Multi-Agent Languages |
| or COMP_SCI 472-0 | Designing and Constructing Models with Multi-Agent Languages |
| COMP_SCI 376-0 | Computer Game Design and Development |
| COMP_SCI 377-0 | Game Design Studio |
| ELEC_ENG 332-0 | Introduction to Computer Vision |
Software Development and Programming Languages
| Course | Title |
|---|---|
| COMP_SCI 310-0 | Scalable Software Architectures |
| COMP_SCI 321-0 | Programming Languages |
| COMP_SCI 338-0 | Practicum in Intelligent Information Systems |
| COMP_SCI 377-0 | Game Design Studio |
| COMP_SCI 380-0 | Software Quality Engineering |
| COMP_SCI 392-0 | Rapid Prototyping for Software Innovation |
| COMP_SCI 393-0 | Software Construction |
| COMP_SCI 394-0 | Agile Software Development |
Project Courses
Majors must take two courses from this list.
Project course list
| Course | Title |
|---|---|
| COMP_SCI 311-0 | Inclusive Making |
| COMP_SCI 312-0 | Data Privacy |
| or COMP_SCI 412-0 | Data Privacy |
| COMP_SCI 315-0 | Design, Technology, and Research |
| or COMP_SCI 415-0 | Design, Technology, and Research |
| COMP_SCI 316-2 | CS Education Research in the Community II: Sports and Computer Science |
| COMP_SCI 317-0 | Sports, Technology and Learning |
| COMP_SCI 322-0 | Compiler Construction |
| COMP_SCI 329-0 | HCI Studio |
| COMP_SCI 330-0 | Human Computer Interaction |
| COMP_SCI 331-0 | Introduction to Computational Photography |
| COMP_SCI 337-0 | Natural Language Processing: Classical Approaches |
| COMP_SCI 338-0 | Practicum in Intelligent Information Systems |
| COMP_SCI 339-0 | Introduction to Database Systems |
| COMP_SCI 340-0 | Introduction to Networking |
| COMP_SCI 343-0 | Operating Systems |
| COMP_SCI 344-0 | Design of Computer Problem Solvers |
| COMP_SCI 345-0 | Distributed and Networked Systems |
| COMP_SCI 346-0 | Microcontroller System Design |
| or COMP_ENG 346-0 | Microcontroller System Design |
| COMP_SCI 351-1 | Introduction to Computer Graphics |
| COMP_SCI 351-2 | Intermediate Computer Graphics |
| COMP_SCI 354-0 | Computer System Security |
| COMP_SCI 355-0 | Digital Forensics and Incident Response |
| COMP_SCI 367-0 | Wireless and Mobile Health (mHealth) |
| or COMP_SCI 467-0 | Wireless and Mobile Health (mHealth) |
| COMP_SCI 370-0 | Computer Game Design |
| COMP_SCI 371-0 | Knowledge Representation and Reasoning |
| COMP_SCI 372-0 | Designing and Constructing Models with Multi-Agent Languages |
| or COMP_SCI 472-0 | Designing and Constructing Models with Multi-Agent Languages |
| COMP_SCI 377-0 | Game Design Studio |
| COMP_SCI 380-0 | Software Quality Engineering |
| COMP_SCI 392-0 | Rapid Prototyping for Software Innovation |
| COMP_SCI 393-0 | Software Construction |
| COMP_SCI 394-0 | Agile Software Development |
| COMP_SCI 397-0 | Special Projects in Computer Science |
| or COMP_SCI 497-0 | Special Projects in Computer Science |
| COMP_SCI 398-0 | Research Track Practicum |
| COMP_SCI 433-0 | Wireless Protocols for the Internet of Things |
| COMP_SCI 441-0 | Resource Virtualization |
| COMP_SCI 445-0 | Internet-scale Experimentation |
| COMP_SCI 446-0 | Kernel and Other Low-level Software Development |
| COMP_SCI 450-0 | Internet Security |
| COMP_SCI 461-0 | Large Language Models |
| COMP_ENG 366-0 | Embedded Systems |
| or COMP_ENG 466-0 | Embedded Systems |
| ELEC_ENG 332-0 | Introduction to Computer Vision |
Societal Impact Course
Societal Impact course list
| Course | Title |
|---|---|
| Majors must take one course from this list. | |
| COMP_SCI 260-0 | Introduction to Law and Digital Technologies |
| COMP_SCI 265-0 | AI and International Security |
| COMP_SCI 311-0 | Inclusive Making |
| COMP_SCI 314-0 | Technology and Human Interaction |
| COMP_SCI 387-0 | Responsible Software Engineering |
| COMP_SCI 396-0 | Special Topics in Computer Science (Computing, Ethics, and Society) |
| COMM_ST 358-0 | Algorithms and Society |
| COMM_ST 378-0 | Online Communities and Crowds |
| COMM_ST 379-0 | Digital Propaganda and Repression |
| GBL_HLTH 302-0 | Global Bioethics |
| GBL_HLTH 324-0 | Volunteerism and the Ethics of Help |
| GBL_HLTH 328-0 | Human Circulations and Human Values: Global Mobilities of People and Products |
| GERMAN 236-0 | Kafka and Nietzsche |
| HISTORY 253-0 | A Global History of Prisons and Camps |
| ISEN 230-0 | Climate Change and Sustainability: Ethical Dimensions |
| ISEN 375-0 | Issues in Environmental Philosophy |
| PHIL 240-0 | Freedom and Responsibility |
| PHIL 255-0 | Theory of Knowledge |
| PHIL 260-0 | Introduction to Moral Philosophy |
| PHIL 262-0 | Ethical Problems and Public Issues |
| PHIL 268-0 | Ethics and the Environment |
| PHIL 269-0 | Bioethics |
| PHIL 275-0 | Climate Change and Sustainability: Ethical Dimensions |
| PHIL 326-0 | Topics in Philosophy of Medicine |
| PHIL 364-0 | Business and Professional Ethics |
| POLI_SCI 303-0 | Modernity and Its Discontents |
| POLI_SCI 304-0 | Human 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-0 | Advanced Digital Design |
| COMP_ENG 329-0 | The Art of Multicore Concurrent Programming |
| COMP_ENG 334-0 | Fundamentals of Blockchains and Decentralization |
| or ELEC_ENG 334-0 | Fundamentals of Blockchains and Decentralization |
| COMP_ENG 346-0 | Microcontroller System Design |
| COMP_ENG 355-0 | ASIC and FPGA Design |
| COMP_ENG 356-0 | Introduction to Formal Specification & Verification |
| COMP_ENG 357-0 | Design Automation in VLSI |
| COMP_ENG 358-0 | Introduction to Parallel Computing |
| COMP_ENG 361-0 | Computer Architecture I |
| COMP_ENG 362-0 | Computer Architecture Projects |
| COMP_ENG 364-0 | CyberPhysical Systems Design and Application |
| or COMP_ENG 464-0 | Cyber-Physical Systems Design and Application |
| COMP_ENG 365-0 | Internet-of-things Sensors, Systems, And Applications |
| or COMP_ENG 465-0 | Internet-of-things Sensors, Systems, And Applications |
| COMP_ENG 366-0 | Embedded Systems |
| or COMP_ENG 466-0 | Embedded Systems |
| COMP_ENG 368-0 | Programming Massively Parallel Processors with CUDA |
| or COMP_ENG 468-0 | Programming Massively Parallel Processors with CUDA |
| COMP_ENG 452-0 | Adv Computer Architecture |
| COMP_ENG 453-0 | Parallel Architectures |
| COMP_ENG 456-0 | Modern Topics in Computer Architecture |
| COMP_ENG 459-0 | VLSI Algorithmics |
| ELEC_ENG 326-0 | Electronic System Design I |
| ELEC_ENG 332-0 | Introduction to Computer Vision |
| ELEC_ENG 375-0 | Machine Learning: Foundations, Applications, and Algorithms |
| ELEC_ENG 433-0 | Statistical Pattern Recognition |
| ELEC_ENG 435-0 | Deep 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-0 | AI and International Security |
| COMP_SCI 301-0 | Introduction to Robotics Laboratory |
| COMP_SCI 302-0 | Artifical Life |
| COMP_SCI 325-0 | Artificial Intelligence Programming |
| COMP_SCI 334-0 | Introduction to Computational Linguistics |
| COMP_SCI 337-0 | Natural Language Processing: Classical Approaches |
| COMP_SCI 338-0 | Practicum in Intelligent Information Systems |
| COMP_SCI 344-0 | Design of Computer Problem Solvers |
| COMP_SCI 347-0 | Conversational AI |
| or COMP_SCI 447-0 | Conversational AI |
| COMP_SCI 348-0 | Introduction to Artificial Intelligence |
| COMP_SCI 349-0 | Machine Learning |
| COMP_SCI 353-0 | Natural & Artificial Vision |
| COMP_SCI 371-0 | Knowledge Representation and Reasoning |
| COMP_SCI 372-0 | Designing and Constructing Models with Multi-Agent Languages |
| or COMP_SCI 472-0 | Designing and Constructing Models with Multi-Agent Languages |
| COMP_SCI 374-0 | Causal Graphical Models (or Modeling Relationships with Causal Inference) |
| COMP_SCI 396-0 | Special Topics in Computer Science (Declarative Programming for Game AI) |
| COMP_SCI 396-0 | Special 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-0 | Special Topics in Computer Science (Machine Learning and Sensing) |
| or COMP_SCI 496-0 | Special Topics in Computer Science |
| COMP_SCI 397-0 | Special Projects in Computer Science (Seminar in Statistical Language Modeling) |
| COMP_SCI 409-0 | Swarms and Multi-Robot Systems |
| COMP_SCI 449-0 | Deep Learning |
| COMP_SCI 454-0 | Computational Optics |
| COMP_SCI 461-0 | Large Language Models |
| COMP_SCI 463-0 | Generative Deep Models |
| COMP_SCI 469-0 | Machine Learning & Artificial Intelligence for Robotics |
| COMP_SCI 474-0 | Probabilistic Graphical Models |
| COMP_SCI 496-0 | Special Topics in Computer Science (AI Perspectives: Symbolic Reasoning to Deep Learning) |
| COMP_SCI 496-0 | Special Topics in Computer Science (Logic in AI) |
| COG_SCI 207-0 | Introduction 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-0 | Compiler Construction |
| COMP_SCI 339-0 | Introduction to Database Systems |
| COMP_SCI 340-0 | Introduction to Networking |
| COMP_SCI 343-0 | Operating Systems |
| COMP_ENG 361-0 | Computer Architecture I |
Foundations
| Course | Title |
|---|---|
| COMP_SCI 307-0 | Introduction to Cryptography |
| COMP_SCI 332-0 | Online Markets |
| COMP_SCI 335-0 | Introduction to the Theory of Computation |
| COMP_SCI 336-0 | Design & Analysis of Algorithms |
| COMP_SCI 362-0 | Foundations of Quantum Computing and Quantum Information |
| or COMP_SCI 462-0 | Foundations of Quantum Computing and Quantum Information |
| COMP_SCI 396-0 | Special Topics in Computer Science (Algorithms for Collective Decision Making) |
| COMP_SCI 396-0 | Special Topics in Computer Science (Advanced Algorithm Design via Competitive Programming) |
| or COMP_SCI 496-0 | Special Topics in Computer Science |
| COMP_SCI 407-0 | Advanced Topics in Modern Cryptography |
| COMP_SCI 436-0 | Graduate Algorithms |
| COMP_SCI 437-0 | Approximation Algorithms |
Security and Privacy
| Course | Title |
|---|---|
| COMP_SCI 265-0 | AI and International Security |
| COMP_SCI 307-0 | Introduction to Cryptography |
| COMP_SCI 308-0 | Foundations of Security |
| COMP_SCI 312-0 | Data Privacy |
| or COMP_SCI 412-0 | Data Privacy |
| COMP_SCI 350-0 | Introduction to Computer Security |
| COMP_SCI 354-0 | Computer System Security |
| COMP_SCI 355-0 | Digital Forensics and Incident Response |
| COMP_SCI 360-0 | Advanced Offense and Defense in Cybersecurity |
| COMP_SCI 407-0 | Advanced Topics in Modern Cryptography |
| COMP_SCI 450-0 | Internet Security |
| COMP_SCI 496-0 | Special Topics in Computer Science (Engineering Modern Cryptographic Protocols) |
Software Engineering and Programming Languages
| Course | Title |
|---|---|
| COMP_SCI 303-0 | Full Stack Software Engineering |
| COMP_SCI 310-0 | Scalable Software Architectures |
| COMP_SCI 320-0 | Proving Properties of Programs with Mechanized Logic |
| COMP_SCI 321-0 | Programming Languages |
| COMP_SCI 322-0 | Compiler Construction |
| COMP_SCI 323-0 | Code Analysis and Transformation |
| COMP_SCI 324-0 | Dynamics of Programming Languages |
| or COMP_SCI 424-0 | Dynamics of Programming Languages |
| COMP_SCI 380-0 | Software Quality Engineering |
| COMP_SCI 387-0 | Responsible Software Engineering |
| COMP_SCI 388-0 | Software Engineering Beyond Programming |
| COMP_SCI 392-0 | Rapid Prototyping for Software Innovation |
| COMP_SCI 393-0 | Software Construction |
| COMP_SCI 394-0 | Agile Software Development |
Robotics
| Course | Title |
|---|---|
| COMP_SCI 301-0 | Introduction to Robotics Laboratory |
| or MECH_ENG 301-0 | Introduction to Robotics Laboratory |
| COMP_SCI 302-0 | Artifical Life |
| COMP_SCI 353-0 | Natural & Artificial Vision |
| COMP_SCI 409-0 | Swarms and Multi-Robot Systems |
| COMP_SCI 410-0 | Autonomous Quadrotor Design and Control |
| COMP_SCI 469-0 | Machine Learning & Artificial Intelligence for Robotics |
| or MECH_ENG 469-0 | Machine Learning and Artificial Intelligence for Robotics |
| MECH_ENG 333-0 | Introduction to Mechatronics |
| MECH_ENG 433-0 | Advanced Mechatronics |
| MECH_ENG 449-0 | Robotic Manipulation |
| MECH_ENG 455-0 | Active Learning in Robotics |
| MECH_ENG 495-0 | Selected 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-0 | Microcontroller System Design |
| or COMP_ENG 346-0 | Microcontroller System Design |
| COMP_ENG 303-0 | Advanced Digital Design |
| COMP_ENG 361-0 | Computer Architecture I |
| COMP_ENG 362-0 | Computer Architecture Projects |
| COMP_ENG 452-0 | Adv Computer Architecture |
| COMP_ENG 456-0 | Modern Topics in Computer Architecture |
| COMP_ENG 459-0 | VLSI Algorithmics |
Human-Computer Interaction
| Course | Title |
|---|---|
| COMP_SCI 311-0 | Inclusive Making |
| COMP_SCI 313-0 | Tangible Interaction Design and Learning |
| or COMP_SCI 413-0 | Tangible Interaction Design and Learning |
| COMP_SCI 314-0 | Technology and Human Interaction |
| COMP_SCI 315-0 | Design, 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-0 | HCI Studio |
| COMP_SCI 330-0 | Human Computer Interaction |
| COMP_SCI 333-0 | Interactive Information Visualization |
| COMP_SCI 341-0 | Social Networks Analysis |
| or COMM_ST 352-0 | Social Network Analysis |
| or IEMS 341-0 | Social Networks Analysis |
| COMP_SCI 352-0 | Machine Perception of Music & Audio |
| COMP_SCI 353-0 | Natural & Artificial Vision |
| COMP_SCI 397-0 | Special Projects in Computer Science (Transformative Computer Science Education) |
| COMM_ST 227-0 | Communication & Technology |
| COMM_ST 378-0 | Online 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-0 | Design & Analysis of Algorithms |
| COMP_SCI 362-0 | Foundations of Quantum Computing and Quantum Information (**) |
| or COMP_SCI 462-0 | Foundations of Quantum Computing and Quantum Information |
| COMP_SCI 496-0 | Special Topics in Computer Science (**Quantum Systems) |
| COMP_SCI 496-0 | Special Topics in Computer Science (Quantum Computer Applications and Programming) |
| COMP_ENG 495-0 | Special Topics in Computer Engineering (FPGA Design for Quantum Control*) |
| PHYSICS 339-2 | Quantum 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).