Computer Science Minor (McCormick School of Engineering)

The department offers a minor in computer science for students who wish to develop stronger competence in computer science while pursuing a degree in another field. The minor will provide essential knowledge for all computer scientists as well as exposure to every critical subfield of the discipline. 

Students should begin the minor before the end of their first quarter of their junior year. To declare the McCormick Computer Science minor, students should submit the minor declaration form in MAS (McCormick Advising System) by the end of their junior year. At least 4 courses used for the minor may not be used (double-counted) to fulfill requirements in the student's 21-unit major program.

Course Title
Requirements (15 units)
Prerequisites (6 units)
Single-Variable Differential Calculus
Single-Variable Integral Calculus
Multivariable Differential Calculus for Engineering
Engineering Analysis (3 units):
Engineering Analysis I
and Engineering Analysis II
and Engineering Analysis III
Honor Engineering Analysis
and Honors Engineering Analysis
and Honors Engineering Analysis
Minor Requirements (9 units)
Core Courses (6 units of computer science) 1
Fundamentals of Computer Programming
Fundamentals of Computer Programming 1.5
Fundamentals of Computer Programming II
Mathematical Foundations of Comp Science
Introduction to Computer Systems
Data Structures & Algorithms
Breath Courses (3 units from three different areas, see below)
1

Students without prior programming experience may wish to take COMP_SCI 110-0 Introduction to Computer Programming before COMP_SCI 111-0 Fundamentals of Computer Programming

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-0Computer System 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-0Artificial 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 and Constructing Models with Multi-Agent Languages

Interfaces

Course Title
COMP_SCI 313-0Tangible Interaction Design and Learning
COMP_SCI 315-0Design, 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 370-0Computer Game Design
COMP_SCI 372-0Designing 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 392-0Rapid Prototyping for Software Innovation
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