Computer Science Degree

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

Course Title
Requirements (48 units)
Core Courses (32 units) 1
4 mathematics courses:
COMP_SCI 212-0Mathematical Foundations of Comp Science
MATH 220-1Single-Variable Differential Calculus
MATH 220-2Single-Variable Integral Calculus
MATH 228-1Multivariable Differential Calculus for Engineering
4 engineering analysis and computer proficiency courses:
GEN_ENG 205-1
GEN_ENG 205-2
GEN_ENG 205-3
Engineering Analysis I
and Engineering Analysis II
and Engineering Analysis III
or GEN_ENG 206-1
GEN_ENG 206-2
GEN_ENG 206-3
Honor Engineering Analysis
and Honors Engineering Analysis
and Honors Engineering Analysis
COMP_SCI 111-0Fundamentals of Computer Programming
4 units of basic science chosen according to McCormick basic science guidelines
3 design and communications courses
5 basic engineering courses:
COMP_SCI 211-0Fundamentals of Computer Programming II
IEMS 201-0Introduction to Statistics
or IEMS 303-0 Statistics
or ELEC_ENG 302-0 Probabilistic Systems
3 courses from at least two of the remaining basic engineering areas: computer architecture and numerical methods, electrical science, fluids and solids, materials science and engineering, systems engineering and analysis, and thermodynamics
7 social sciences/humanities courses
5 unrestricted electives
Major Program (16 units)
3 required courses:
COMP_SCI 101-0Computer Science: Concepts, Philosophy, and Connections
COMP_SCI 213-0Introduction to Computer Systems
COMP_SCI 214-0Data Structures & Algorithms
5 breadth courses (see below)
6 technical electives (see below)
2 project courses (see below)
  • COMP_SCI 110-0 Introduction to Computer Programming may be used as an unrestricted elective if taken before COMP_SCI 111-0 Fundamentals of Computer Programming.  It may not, however, be applied to the computer science major requirements.

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 350-0Introduction to Computer Security
COMP_SCI 354-0Network Penetration & 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-0Microprocessor System Design
COMP_ENG 358-0Introduction to Parallel Computing
COMP_ENG 361-0Computer Architecture I

Artificial Intelligence

Course Title
COMP_SCI 325-1Artificial Intelligence Programming
COMP_SCI 337-0Natural Language Processing
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 & Constructing Models with Multi-Agent Language

Interfaces

Course Title
COMP_SCI 313-0Tangible Interaction Design and Learning
COMP_SCI 315-0Design, Technology, and Research
COMP_SCI 330-0Human Computer Interaction
COMP_SCI 331-0Introduction to Computational Photography
COMP_SCI 351-1Introduction to Computer Graphics
COMP_SCI 352-0Machine Perception of Music & Audio
COMP_SCI 370-0Computer Game Design
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 321-0Programming Languages
COMP_SCI 338-0Practicum in Intelligent Information Systems
COMP_SCI 377-0Game Design Studio
COMP_SCI 393-0Software Construction
COMP_SCI 394-0Agile Software Development
COMP_SCI 473-1NUvention: Web - Part 1
COMP_SCI 473-2NUvention: Web - Part 2

Project Courses

Majors must take two courses from this list.

Project course list

Course Title
COMP_SCI 315-0Design, Technology, and Research
COMP_SCI 322-0Compiler Construction
COMP_SCI 330-0Human Computer Interaction
COMP_SCI 331-0Introduction to Computational Photography
COMP_SCI 337-0Natural Language Processing
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 351-1Introduction to Computer Graphics
COMP_SCI 351-2Intermediate Computer Graphics
COMP_SCI 354-0Network Penetration & Security
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 377-0Game Design Studio
COMP_SCI 393-0Software Construction
COMP_SCI 394-0Agile Software Development
COMP_SCI 397-0Special Projects in Computer Science
COMP_SCI 441-0Resource Virtualization
COMP_SCI 446-0Kernel and Other Low-level Software Development
COMP_SCI 450-0Internet Security
COMP_SCI 473-2NUvention: Web - Part 2
COMP_SCI 497-0Special Projects in Computer Science
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:

Additional technical electives

Course Title
COMP_ENG 303-0Advanced Digital Design
COMP_ENG 346-0Microprocessor System Design
COMP_ENG 358-0Introduction to Parallel Computing
COMP_ENG 361-0Computer Architecture I
COMP_ENG 366-0Embedded Systems
COMP_ENG 368-0Programming Massively Parallel Processors with CUDA
COMP_ENG 466-0Embedded Systems
COMP_ENG 468-0Programming Massively Parallel Processors with CUDA
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: FAA

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