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:
EECS 212-0Mathematical Foundations of Comp Science
MATH 220-0Differential Calculus of One-Variable Functions
MATH 224-0Integral Calculus of One-Variable Functions
MATH 230-0Differential Calculus of Multivariable Functions
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
EECS 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:
EECS 211-0Fundamentals of Computer Programming II
EECS 302-0Probabilistic Systems
or IEMS 201-0 Introduction to Statistics
or IEMS 303-0 Statistics
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:
EECS 101-0Computer Science: Concepts, Philosophy, and Connections
EECS 213-0Introduction to Computer Systems
EECS 214-0Data Structures & Algorithms
5 breadth courses, 1 from each of the following areas (see department website for changes to this list):
6 technical electives:
2 project courses:
  • Sections of EECS 395-0 Special Topics in Electrical Engineering and Computer Science, EECS 397-0 Special Projects in Computer Science, and EECS 399-0 Projects may be used for technical elective and project requirements, if appropriate; consult your CS adviser for information.
  • Courses at the 400 level are primarily for graduate students but may be open to advanced undergraduate students with the consent of the instructor.
  • EECS 110-0 Introduction to Computer Programming may be used as an unrestricted elective if taken before EECS 111-0 Fundamentals of Computer Programming.  It may not, however, be applied to the computer science major requirements.

Breadth Courses 

Theory

Course Title
EECS 328-0Numerical Methods for Engineers
EECS 335-0Introduction to the Theory of Computation
EECS 336-0Design & Analysis of Algorithms
EECS 356-0Introduction to Formal Specification & Verification

Systems

Course Title
EECS 303-0Advanced Digital Design
EECS 321-0Programming Languages
EECS 322-0Compiler Construction
EECS 339-0Introduction to Database Systems
EECS 340-0Introduction to Networking
EECS 343-0Operating Systems
EECS 345-0Distributed Systems
EECS 346-0Microprocessor System Design
EECS 350-0Introduction to Computer Security
EECS 358-0Introduction to Parallel Computing
EECS 361-0Computer Architecture I
EECS 440-0Advanced Networking
EECS 441-0Resource Virtualization
EECS 443-0Advanced Operating Systems
EECS 450-0Internet Security

Artificial Intelligence

Course Title
EECS 325-1Artificial Intelligence Programming
EECS 337-0Natural Language Processing
EECS 344-0Design of Computer Problem Solvers
EECS 348-0Introduction to Artificial Intelligence
EECS 349-0Machine Learning
EECS 360-0Introduction to Feedback Systems

Interfaces

Course Title
EECS 330-0Human Computer Interaction
EECS 332-0Introduction to Computer Vision
EECS 351-1Introduction to Computer Graphics
EECS 352-0Machine Perception of Music & Audio
EECS 370-0Computer Game Design

Software Development

Course Title
EECS 338-0Practicum in Intelligent Information Systems
EECS 394-0Agile Software Development

Technical electives 

Technical elective list

Course Title
EECS 301-0Introduction to Robotics Laboratory
EECS 303-0Advanced Digital Design
EECS 313-0Tangible Interaction Design and Learning
EECS 314-0Technology and Human Interaction
EECS 315-0Design, Technology, and Research
EECS 321-0Programming Languages
EECS 322-0Compiler Construction
EECS 323-0Code Analysis and Transformation
EECS 325-1Artificial Intelligence Programming
EECS 330-0Human Computer Interaction
EECS 331-0Introduction to Computational Photography
EECS 332-0Introduction to Computer Vision
EECS 335-0Introduction to the Theory of Computation
EECS 336-0Design & Analysis of Algorithms
EECS 337-0Natural Language Processing
EECS 338-0Practicum in Intelligent Information Systems
EECS 339-0Introduction to Database Systems
EECS 340-0Introduction to Networking
EECS 343-0Operating Systems
EECS 344-0Design of Computer Problem Solvers
EECS 345-0Distributed Systems
EECS 346-0Microprocessor System Design
EECS 348-0Introduction to Artificial Intelligence
EECS 349-0Machine Learning
EECS 350-0Introduction to Computer Security
EECS 351-1Introduction to Computer Graphics
EECS 351-2Intermediate Computer Graphics
EECS 352-0Machine Perception of Music & Audio
EECS 354-0Network Penetration & Security
EECS 361-0Computer Architecture I
EECS 367-0Wireless and Mobile Health: Passive Sensing Data Analytics
EECS 368-0Programming Massively Parallel Processors with CUDA
EECS 371-0Knowledge Representation and Reasoning
EECS 372-0Designing & Constructing Models with Multi-Agent Language
EECS 376-0Computer Game Design and Development
EECS 377-0Game Design Studio
EECS 396-0Special Topics in Computer Science
EECS 397-0Special Projects in Computer Science
EECS 433-0Statistical Pattern Recognition
EECS 440-0Advanced Networking
EECS 441-0Resource Virtualization
EECS 443-0Advanced Operating Systems
EECS 445-0Internet-scale Experimentation
EECS 446-0Kernel and Other Low-level Software Development
EECS 450-0Internet Security
EECS 468-0Programming Massively Parallel Processors with CUDA
EECS 472-0Designing & Constructing Models with Multi-Agent Language
EECS 473-1NUvention: Web - Part 1
EECS 473-2NUvention: Web - Part 2
EECS 474-0Probabilistic Graphical Models
EECS 496-0Special Topics in Computer Science
EECS 497-0Special Projects in Computer Science

Project courses 

Project course list

Course Title
EECS 315-0Design, Technology, and Research
EECS 322-0Compiler Construction
EECS 330-0Human Computer Interaction
EECS 332-0Introduction to Computer Vision
EECS 337-0Natural Language Processing
EECS 338-0Practicum in Intelligent Information Systems
EECS 339-0Introduction to Database Systems
EECS 340-0Introduction to Networking
EECS 343-0Operating Systems
EECS 344-0Design of Computer Problem Solvers
EECS 345-0Distributed Systems
EECS 351-1Introduction to Computer Graphics
EECS 351-2Intermediate Computer Graphics
EECS 354-0Network Penetration & Security
EECS 367-0Wireless and Mobile Health: Passive Sensing Data Analytics
EECS 370-0Computer Game Design
EECS 371-0Knowledge Representation and Reasoning
EECS 376-0Computer Game Design and Development
EECS 377-0Game Design Studio
EECS 394-0Agile Software Development
EECS 397-0Special Projects in Computer Science
EECS 441-0Resource Virtualization
EECS 450-0Internet Security
EECS 474-0Probabilistic Graphical Models
EECS 473-2NUvention: Web - Part 2
EECS 497-0Special Projects in Computer Science