Program Overview
Northwestern University Academic Catalog
Undergraduate
The undergraduate program at Northwestern University offers a wide range of academic opportunities for students. The university is divided into several schools and colleges, each offering unique programs and courses.
Judd A. and Marjorie Weinberg College of Arts and Sciences
The Judd A. and Marjorie Weinberg College of Arts and Sciences is one of the largest and most diverse colleges at Northwestern University. It offers a wide range of undergraduate programs in fields such as humanities, social sciences, natural sciences, and mathematics.
Computer Science Major
The Computer Science major at Northwestern University is designed to provide students with a comprehensive education in computer science. The major requires students to complete a series of core courses, breadth courses, project courses, and technical electives.
Core Courses
The core courses for the Computer Science major include:
- COMP_SCI 111-0: Fundamentals of Computer Programming
- COMP_SCI 150-0: Fundamentals of Computer Programming 1.5
- COMP_SCI 211-0: Fundamentals of Computer Programming II
- COMP_SCI 212-0: Math Foundations of CS Part 1: Discrete Math for CS
- COMP_SCI 213-0: Introduction to Computer Systems
- COMP_SCI 214-0: Data Structures & Algorithms
Breadth Courses
Students must take one course from each of the following areas:
- Theory
- COMP_SCI 335-0: Introduction to the Theory of Computation
- COMP_SCI 336-0: Design & Analysis of Algorithms
- Systems
- 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 Systems
- COMP_SCI 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
- COMP_SCI 368-0: Programming Massively Parallel Processors with CUDA
- Artificial Intelligence
- 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
- Interfaces
- COMP_SCI 313-0: Tangible Interaction Design and Learning
- COMP_SCI 315-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
- COMP_SCI 376-0: Computer Game Design and Development
- COMP_SCI 377-0: Game Design Studio
- Software Development and Programming Languages
- 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
Students must take two courses from the following list:
- COMP_SCI 311-0: Inclusive Making
- COMP_SCI 312-0: Data Privacy
- COMP_SCI 315-0: Design, Technology, and Research
- 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 Systems
- COMP_SCI 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)
- 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
- 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
- COMP_SCI 398-0: Research Track Practicum
- COMP_SCI 412-0: Data Privacy
- COMP_SCI 415-0: Design, Technology, and Research
- 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: Deep Learning for Natural Language Processing
- COMP_SCI 467-0: Wireless and Mobile Health (mHealth)
- COMP_SCI 497-0: Special Projects in Computer Science
- COMP_ENG 346-0: Microcontroller System Design
- COMP_ENG 366-0: Embedded Systems
- COMP_ENG 466-0: Embedded Systems
- ELEC_ENG 332-0: Introduction to Computer Vision
Technical Electives
Students 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:
- 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
- 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
- COMP_ENG 365-0: Internet-of-things Sensors, Systems, And Applications
- COMP_ENG 366-0: Embedded Systems
- COMP_ENG 368-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
- COMP_ENG 464-0: Cyber-Physical Systems Design and Application
- COMP_ENG 465-0: Internet-of-things Sensors, Systems, And Applications
- COMP_ENG 466-0: Embedded Systems
- COMP_ENG 468-0: Programming Massively Parallel Processors with CUDA
- 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
Related Courses
- Mathematics:
- MATH 220-1 & MATH 220-2: Single-Variable Differential Calculus and Single-Variable Integral Calculus
- MATH 218-1 & MATH 218-2 & MATH 218-3: Single-Variable Calculus with Precalculus
- MATH 230-1: Multivariable Differential Calculus
- MATH 228-1: Multivariable Differential Calculus for Engineering
- MATH 240-0: Linear Algebra
- Probability and Statistics:
- COMP_SCI 262-0: Mathematical Foundations of Computer Science - Part 2
- IEMS 201-0: Introduction to Statistics
- MATH 310-1: Probability and Stochastic Processes
- STAT 210-0: Introduction to Probability and Statistics
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).
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.
