California Institute of TechnologyWebsiteAcademic Catalog
Computing + Mathematical SciencesDepartment Website
BS Degree in Computer Sciencesource 1source 2
CS Courses
- Introduction to Computer ProgrammingorCS 1 (9)introCS 1: Introduction to Computer Programming
A course on computer programming emphasizing the program design process and pragmatic programming skills. It will use the Python programming language and will not assume previous programming experience. Material covered will include data types, variables, assignment, control structures, functions, scoping, compound data, string processing, modules, basic input/output (terminal and file), as well as more advanced topics such as recursion, exception handling and object-oriented programming. Program development and maintenance skills including debugging, testing, and documentation will also be taught. Assignments will include problems drawn from fields such as graphics, numerics, networking, and games. At the end of the course, students will be ready to learn other programming languages in courses such as CS 11, and will also be ready to take more in-depth courses such as CS 2 and CS 4.
Intermediate Computer ProgrammingCS 1 x (6)introCS 1 x: Intermediate Computer ProgrammingAn intermediate course on computer programming emphasizing the program design process and pragmatic programming skills. It will use the Java programming language and will assume previous programming experience such as an AP CS A course. Material will focus on more advanced topics such as recursion, exception handling and object-oriented programming. Program development and maintenance skills including debugging, testing, and documentation will also be taught. Assignments will include problems drawn from fields such as graphics, numerics, networking, and games. At the end of the course, students will be ready to learn other programming languages in courses such as CS 11, and will also be ready to take more in-depth courses such as CS 2 and CS 4.
- Introduction to Programming MethodsCS 2 (9)introCS 2: Introduction to Programming Methods
CS 2 is a demanding course in programming languages and computer science. Topics covered include data structures, including lists, trees, and graphs; implementation and performance analysis of fundamental algorithms; algorithm design principles, in particular recursion and dynamic programming; Heavy emphasis is placed on the use of compiled languages and development tools, including source control and debugging. The course includes weekly laboratory exercises and projects covering the lecture material and program design. The course is intended to establish a foundation for further work in many topics in the computer science option.
- Introduction to Software DesignCS 3 (9)softengCS 3: Introduction to Software Design
CS 3 is a practical introduction to designing large programs in a low-level language. Heavy emphasis is placed on documentation, testing, and software architecture. Students will work in teams in two 5-week long projects. In the first half of the course, teams will focus on testing and extensibility. In the second half of the course, teams will use POSIX APIs, as well as their own code from the first five weeks, to develop a large software deliverable. Software engineering topics covered include code reviews, testing and testability, code readability, API design, refactoring, and documentation.
- Fundamentals of Computer ProgrammingCS 4 (9)introCS 4: Fundamentals of Computer Programming
This course gives students the conceptual background necessary to construct and analyze programs, which includes specifying computations, understanding evaluation models, and using major programming language constructs (functions and procedures, conditionals, recursion and looping, scoping and environments, compound data, side effects, higher-order functions and functional programming, and object-oriented programming). It emphasizes key issues that arise in programming and in computation in general, including time and space complexity, choice of data representation, and abstraction management. This course is intended for students with some programming background who want a deeper understanding of the conceptual issues involved in computer programming.
- Introduction to Discrete MathematicsorCS 6 a (3)mathCS 6 a: Introduction to Discrete Mathematics
First term: a survey emphasizing graph theory, algorithms, and applications of algebraic structures. Graphs: paths, trees, circuits, breadth-first and depth-first searches, colorings, matchings. Enumeration techniques; formal power series; combinatorial interpretations. Topics from coding and cryptography, including Hamming codes and RSA.
Mathematical Foundations of Computer ScienceorCS 13 (9)mathCS 13: Mathematical Foundations of Computer ScienceThis course introduces key mathematical concepts used in computer science, and in particular it prepares students for proof-based CS courses such as CS 21 and CS 38. Mathematical topics are illustrated via applications in Computer Science. CS 1 is a co-requisite as there will be a small number of programming assignments. The course covers basic set theory, induction and inductive structures (e.g., lists and trees), asymptotic analysis, and elementary combinatorics, number theory, and graph theory. Applications include number representation, basic cryptography, basic algorithms on trees, numbers, and polynomials, social network graphs, compression, and simple error-correcting codes.
Combinatorial AnalysisMa 121 a (9)mathMa 121 a: Combinatorial AnalysisFirst half of: A survey of modern combinatorial mathematics, starting with an introduction to graph theory and extremal problems. Flows in networks with combinatorial applications. Counting, recursion, and generating functions. Theory of partitions. (0, 1)-matrices. Partially ordered sets. Latin squares, finite geometries, combinatorial designs, and codes. Algebraic graph theory, graph embedding, and coloring.
- Decidability and TractabilityCS 21 (9)theoryCS 21: Decidability and Tractability
This course introduces the formal foundations of computer science, the fundamental limits of computation, and the limits of efficient computation. Topics will include automata and Turing machines, decidability and undecidability, reductions between computational problems, and the theory of NP-completeness.
- Introduction to Computing SystemsCS 24 (9)sysCS 24: Introduction to Computing Systems
Basic introduction to computer systems, including hardware-software interface, computer architecture, and operating systems. Course emphasizes computer system abstractions and the hardware and software techniques necessary to support them, including virtualization (e.g., memory, processing, communication), dynamic resource management, and common-case optimization, isolation, and naming.
- AlgorithmsCS 38 (9)algsCS 38: Algorithms
This course introduces techniques for the design and analysis of efficient algorithms. Major design techniques (the greedy approach, divide and conquer, dynamic programming, linear programming) will be introduced through a variety of algebraic, graph, and optimization problems. Methods for identifying intractability (via NP-completeness) will be discussed.
- Undergraduate ThesisorCS 80 abc (9)capstoneCS 80 abc: Undergraduate Thesis
Individual research project, carried out under the supervision of a member of the computer science faculty (or other faculty as approved by the computer science undergraduate option representative). Projects must include significant design effort. Written report required. Open only to upperclass students.
Undergraduate Projects in Computer ScienceorCS 81 abc (undefined-undefined)capstoneCS 81 abc: Undergraduate Projects in Computer ScienceSupervised research or development in computer science by undergraduates. The topic must be approved by the project supervisor, and a formal final report must be presented on completion of research.
pick 3or
Advanced Topics in Vision: Large Language and Vision ModelsCS 148 (12)aiCS 148: Advanced Topics in Vision: Large Language and Vision ModelsThe class will focus on large language models (LLMs) and language-and-vision models, as well as on generative methods for artificial intelligence (AI). Topics include deep neural networks, transformers, large language models, generative adversarial networks, diffusion models, and applications of such architectures and methods to image analysis, image synthesis, and text-to-image translation.
Machine Learning & Data MiningCS 155 (12)aiCS 155: Machine Learning & Data MiningThis course will cover popular methods in machine learning and data mining, with an emphasis on developing a working understanding of how to apply these methods in practice. The course will focus on basic foundational concepts underpinning and motivating modern machine learning and data mining approaches. We will also discuss recent research developments.
Learning SystemsCS 156 ab (9)aiCS 156 ab: Learning SystemsIntroduction to the theory, algorithms, and applications of automated learning. How much information is needed to learn a task, how much computation is involved, and how it can be accomplished. Special emphasis will be given to unifying the different approaches to the subject coming from statistics, function approximation, optimization, pattern recognition, and neural networks.
Statistical InferenceCS 157 (9)mathCS 157: Statistical InferenceStatistical Inference is a branch of mathematical engineering that studies ways of extracting reliable information from limited data for learning, prediction, and decision making in the presence of uncertainty. This is an introductory course on statistical inference. The main goals are: develop statistical thinking and intuitive feel for the subject; introduce the most fundamental ideas, concepts, and methods of statistical inference; and explain how and why they work, and when they don't. Topics covered include summarizing data, fundamentals of survey sampling, statistical functionals, jackknife, bootstrap, methods of moments and maximum likelihood, hypothesis testing, p-values, the Wald, Student's t-, permutation, and likelihood ratio tests, multiple testing, scatterplots, simple linear regression, ordinary least squares, interval estimation, prediction, graphical residual analysis.
Fundamentals of Statistical LearningCS 158 (9)aiCS 158: Fundamentals of Statistical LearningThe main goal of the course is to provide an introduction to the central concepts and core methods of statistical learning, an interdisciplinary field at the intersection of applied mathematics, statistical inference, and machine learning. The course focuses on the mathematics and statistics of methods developed for learning from data. Students will learn what methods for statistical learning exist, how and why they work (not just what tasks they solve and in what built-in functions they are implemented), and when they are expected to perform poorly. The course is oriented for upper level undergraduate students in IDS, ACM, and CS and graduate students from other disciplines who have sufficient background in linear algebra, probability, and statistics. The course is a natural continuation of CS 157 and it can be viewed as a statistical analog of CS 155. Topics covered include elements of statistical decision theory, regression and classification problems, nearest-neighbor methods, curse of dimensionality, linear regression, model selection, cross-validation, subset selection, shrinkage methods, ridge regression, LASSO, logistic regression, linear and quadratic discriminant analysis, support-vector machines, tree-based methods, bagging, and random forests.
Advanced Topics in Machine LearningCS 159 (9)aiCS 159: Advanced Topics in Machine LearningThis course focuses on current topics in machine learning research. This is a paper reading course, and students are expected to understand material directly from research articles. Students are also expected to present in class, and to do a final project.
Vision: From Computational Theory to Neuronal MechanismsCS 186 (12)aiCS 186: Vision: From Computational Theory to Neuronal MechanismsLecture, laboratory, and project course aimed at understanding visual information processing, in both machines and the mammalian visual system. The course will emphasize an interdisciplinary approach aimed at understanding vision at several levels: computational theory, algorithms, psychophysics, and hardware (i.e., neuroanatomy and neurophysiology of the mammalian visual system). The course will focus on early vision processes, in particular motion analysis, binocular stereo, brightness, color and texture analysis, visual attention and boundary detection. Students will be required to hand in approximately three homework assignments as well as complete one project integrating aspects of mathematical analysis, modeling, physiology, psychophysics, and engineering. Given in alternate years; offered 2023-24.
Neural ComputationCS 187 (9)aiCS 187: Neural ComputationThis course aims at a quantitative understanding of how the nervous system computes. The goal is to link phenomena across scales from membrane proteins to cells, circuits, brain systems, and behavior. We will learn how to formulate these connections in terms of mathematical models, how to test these models experimentally, and how to interpret experimental data quantitatively. The concepts will be developed with motivation from some of the fascinating phenomena of animal behavior, such as: aerobatic control of insect flight, precise localization of sounds, sensing of single photons, reliable navigation and homing, rapid decision-making during escape, one-shot learning, and large-capacity recognition memory. Not offered 2023-2024.
pick 3or
Interactive Theorem ProvingCS 128 (3-6)theoryCS 128: Interactive Theorem ProvingThis course introduces students to the modern practice of interactive tactic-based theorem proving using the Coq theorem prover. Topics will be drawn from logic, programming languages and the theory of computation. Topics will include: proof by induction, lists, higher-order functions, polymorphism, dependently-typed functional programming, constructive logic, the Curry-Howard correspondence, modeling imperative programs, and other topics if time permits. Students will be graded partially on attendance and will be expected to participate in proving theorems in class.
Programming LanguagesCS 131 (3-6)plsCS 131: Programming LanguagesCS 131 is a course on programming languages and their implementation. It teaches students how to program in a number of simplified languages representing the major programming paradigms in use today (imperative, object-oriented, and functional). It will also teach students how to build and modify the implementations of these languages. Emphasis will not be on syntax or parsing but on the essential differences in these languages and their implementations. Both dynamically-typed and statically-typed languages will be implemented. Relevant theory will be covered as needed. Implementations will mostly be interpreters, but some features of compilers will be covered if time permits. Enrollment limited to 30 students.
CompilersCS 164 (9)plsCS 164: CompilersThis course covers the construction of compilers: programs which convert program source code to machine code which is directly executable on modern hardware. The course takes a bottom-up approach: a series of compilers will be built, all of which generate assembly code for x86 processors, with each compiler adding features. The final compiler will compile a full-fledged high-level programming language to assembly language. Topics covered include register allocation, conditionals, loops and dataflow analysis, garbage collection, lexical scoping, and type checking. This course is programming intensive. All compilers will be written in the OCaml programming language.
pick 3or
Information TheoryCS 126 ab (9)mathCS 126 ab: Information TheoryShannon's mathematical theory of communication, 1948-present. Entropy, relative entropy, and mutual information for discrete and continuous random variables. Shannon's source and channel coding theorems. Mathematical models for information sources and communication channels, including memoryless, Markov, ergodic, and Gaussian. Calculation of capacity and rate-distortion functions. Universal source codes. Side information in source coding and communications. Network information theory, including multiuser data compression, multiple access channels, broadcast channels, and multiterminal networks. Discussion of philosophical and practical implications of the theory. This course, when combined with EE 112, CS 127, CS 161, and CS 167, should prepare the student for research in information theory, coding theory, wireless communications, and/or data compression.
Error-Correcting CodesCS 127 (3-6)mathCS 127: Error-Correcting CodesThis course develops from first principles the theory and practical implementation of the most important techniques for combating errors in digital transmission and storage systems. Topics include highly symmetric linear codes, such as Hamming, Reed-Muller, and Polar codes; algebraic block codes, such as Reed-Solomon and BCH codes, including a self-contained introduction to the theory of finite fields; and low-density parity-check codes. Students will become acquainted with encoding and decoding algorithms, design principles and performance evaluation of codes.
Power System AnalysisCS 135 (9)engrCS 135: Power System AnalysisThis course introduces the basics of power systems analysis: phasor representation, 3-phase transmission system, transmission line models, transformer models, per-unit analysis, network matrix, power flow equations, power flow algorithms, optimal powerflow (OPF) problems, unbalanced power flow analysis and optimization,swing dynamics and stability.
Hack Society: Projects from the Public SectorCS 141 (9)impactCS 141: Hack Society: Projects from the Public SectorThere is a large gap between the public and private sectors' effective use of technology. This gap presents an opportunity for the development of innovative solutions to problems faced by society. Students will develop technology-based projects that address this gap. Course material will offer an introduction to the design, development, and analysis of digital technology with examples derived from services typically found in the public sector. Not offered 2023-24.
Distributed ComputingCS 142 (9)sysCS 142: Distributed ComputingProgramming distributed systems. Mechanics for cooperation among concurrent agents. Programming sensor networks and cloud computing applications. Applications of machine learning and statistics by using parallel computers to aggregate and analyze data streams from sensors. Not offered 2023-24.
Networks: Algorithms & ArchitectureCS 143 (12)sysCS 143: Networks: Algorithms & ArchitectureSocial networks, the web, and the internet are essential parts of our lives, and we depend on them every day. CS 143 and CS 144 study how they work and the 'big' ideas behind our networked lives. In this course, the questions explored include: Why is an hourglass architecture crucial for the design of the Internet? Why doesn't the Internet collapse under congestion? How are cloud services so scalable? How do algorithms for wireless and wired networks differ? For all these questions and more, the course will provide a mixture of both mathematical analysis and hands-on labs. The course expects students to be comfortable with graph theory, probability, and basic programming.
Networks: Structure & EconomicsCS 144 (12)sysCS 144: Networks: Structure & EconomicsSocial networks, the web, and the internet are essential parts of our lives, and we depend on them every day. CS 143 and CS 144 study how they work and the 'big' ideas behind our networked lives. In this course, the questions explored include: What do networks actually look like (and why do they all look the same)?; How do search engines work?; Why do epidemics and memes spread the way they do?; How does web advertising work? For all these questions and more, the course will provide a mixture of both mathematical analysis and hands-on labs. The course expects students to be comfortable with graph theory, probability, and basic programming.
Fundamentals of Information Transmission and StorageCS 160 (9)mathCS 160: Fundamentals of Information Transmission and StorageBasics of information theory: entropy, mutual information, source and channel coding theorems. Basics of coding theory: error-correcting codes for information transmission and storage, block codes, algebraic codes, sparse graph codes. Basics of digital communications: sampling, quantization, digital modulation, matched filters, equalization.
Big Data NetworksCS 161 (9)sysCS 161: Big Data NetworksNext generation networks will have tens of billions of nodes forming cyber-physical systems and the Internet of Things. A number of fundamental scientific and technological challenges must be overcome to deliver on this vision. This course will focus on (1) How to boost efficiency and reliability in large networks; the role of network coding, distributed storage, and distributed caching; (2) How to manage wireless access on a massive scale; modern random access and topology formation techniques; and (3) New vistas in big data networks, including distributed computing over networks and crowdsourcing. A selected subset of these problems, their mathematical underpinnings, state-of-the-art solutions, and challenges ahead will be covered. Not offered 2023-24.
pick 3or
RoboticsCS 133 ab (9)aiCS 133 ab: RoboticsThe course develops the core concepts of robotics. The first quarter focuses on classical robotic manipulation, including topics in rigid body kinematics and dynamics. It develops planar and 3D kinematic formulations and algorithms for forward and inverse computations, Jacobians, and manipulability. The second quarter transitions to planning, navigation, and perception. Topics include configuration space, sample-based planners, A* and D* algorithms, to achieve collision-free motions. Course work transitions from homework and programming assignments to more open-ended team-based projects.
Robotic SystemsCS 134 (9)aiCS 134: Robotic SystemsThis course builds up, and brings to practice, the elements of robotic systems at the intersection of hardware, kinematics and control, computer vision, and autonomous behaviors. It presents selected topics from these domains, focusing on their integration into a full sense-think-act robot. The lectures will drive team-based projects, progressing from building custom robotic arms (5 to 7 degrees of freedom) to writing all necessary software (utilizing the Robotics Operating system, ROS). Teams are required to implement and customize general concepts for their selected tasks. Working systems will autonomously operate and demonstrate their capabilities during final presentations.
Advanced Topics in Vision: Large Language and Vision ModelsCS 148 (12)aiCS 148: Advanced Topics in Vision: Large Language and Vision ModelsThe class will focus on large language models (LLMs) and language-and-vision models, as well as on generative methods for artificial intelligence (AI). Topics include deep neural networks, transformers, large language models, generative adversarial networks, diffusion models, and applications of such architectures and methods to image analysis, image synthesis, and text-to-image translation.
Vision: From Computational Theory to Neuronal MechanismsCS 186 (12)aiCS 186: Vision: From Computational Theory to Neuronal MechanismsLecture, laboratory, and project course aimed at understanding visual information processing, in both machines and the mammalian visual system. The course will emphasize an interdisciplinary approach aimed at understanding vision at several levels: computational theory, algorithms, psychophysics, and hardware (i.e., neuroanatomy and neurophysiology of the mammalian visual system). The course will focus on early vision processes, in particular motion analysis, binocular stereo, brightness, color and texture analysis, visual attention and boundary detection. Students will be required to hand in approximately three homework assignments as well as complete one project integrating aspects of mathematical analysis, modeling, physiology, psychophysics, and engineering. Given in alternate years; offered 2023-24.
orComputer Graphics LaboratoryCS 171 (12)graphicsCS 171: Computer Graphics LaboratoryThis is a challenging course that introduces the basic ideas behind computer graphics and some of its fundamental algorithms. Topics include graphics input and output, the graphics pipeline, sampling and image manipulation, three-dimensional transformations and interactive modeling, basics of physically based modeling and animation, simple shading models and their hardware implementation, and some of the fundamental algorithms of scientific visualization. Students will be required to perform significant implementations.
pick 2
Computer Graphics ProjectsCS 174 (12)graphicsCS 174: Computer Graphics ProjectsThis laboratory class offers students an opportunity for independent work including recent computer graphics research. In coordination with the instructor, students select a computer graphics modeling, rendering, interaction, or related algorithm and implement it. Students are required to present their work in class and discuss the results of their implementation and possible improvements to the basic methods. May be repeated for credit with instructor's permission. Not offered 2023-24.
Advanced Topics in Digital Design with FPGAs and VHDLCS 175 (9)sysCS 175: Advanced Topics in Digital Design with FPGAs and VHDLQuick review of the VHDL language and RTL concepts. Dealing with sophisticated, multi-dimensional data types in VHDL. Dealing with multiple time domains. Transfer of control versus data between clock domains. Clock division and multiplication. Using PLLs. Dealing with global versus local and synchronous versus asynchronous resets. How to measure maximum speed in FPGAs (for both registered and unregistered circuits). The (often) hard task of time closure. The subtleties of the time behavior in state machines (a major source of errors in large, complex designs). Introduction to simulation. Construction of VHDL testbenches for automated testing. Dealing with files in simulation. All designs are physically implemented using FPGA boards. Not offered 2023-24.
Computer Graphics ResearchCS 176 (9)graphicsCS 176: Computer Graphics ResearchThe course will go over recent research results in computer graphics, covering subjects from mesh processing (acquisition, compression, smoothing, parameterization, adaptive meshing), simulation for purposes of animation, rendering (both photo- and nonphotorealistic), geometric modeling primitives (image based, point based), and motion capture and editing. Other subjects may be treated as they appear in the recent literature. The goal of the course is to bring students up to the frontiers of computer graphics research and prepare them for their own research. Not offered 2023-24.
Discrete Differential Geometry: Theory and ApplicationsCS 177 ab (9)mathCS 177 ab: Discrete Differential Geometry: Theory and ApplicationsWorking knowledge of multivariate calculus and linear algebra as well as fluency in some implementation language is expected. Subject matter covered: differential geometry of curves and surfaces, classical exterior calculus, discrete exterior calculus, sampling and reconstruction of differential forms, low dimensional algebraic and computational topology, Morse theory, Noether's theorem, Helmholtz-Hodge decomposition, structure preserving time integration, connections and their curvatures on complex line bundles. Applications include elastica and rods, surface parameterization, conformal surface deformations, computation of geodesics, tangent vector field design, connections, discrete thin shells, fluids, electromagnetism, and elasticity. Part b not offered 2023-24.
Numerical Algorithms and their ImplementationCS 178 (9)mathCS 178: Numerical Algorithms and their ImplementationThis course gives students the understanding necessary to choose and implement basic numerical algorithms as needed in everyday programming practice. Concepts include: sources of numerical error, stability, convergence, ill-conditioning, and efficiency. Algorithms covered include solution of linear systems (direct and iterative methods), orthogonalization, SVD, interpolation and approximation, numerical integration, solution of ODEs and PDEs, transform methods (Fourier, Wavelet), and low rank approximation such as multipole expansions. Not offered 2023-24.
GPU ProgrammingCS 179 (9)graphicsCS 179: GPU ProgrammingSome experience with computer graphics algorithms preferred. The use of Graphics Processing Units for computer graphics rendering is well known, but their power for general parallel computation is only recently being explored. Parallel algorithms running on GPUs can often achieve up to 100x speedup over similar CPU algorithms. This course covers programming techniques for the Graphics processing unit, focusing on visualization and simulation of various systems. Labs will cover specific applications in graphics, mechanics, and signal processing. The course will use nVidia's parallel computing architecture, CUDA. Labwork requires extensive programming.
pick 3
Biomolecular ComputationCS 191 ab (9)scienceCS 191 ab: Biomolecular ComputationThis course investigates computation by molecular systems, emphasizing models of computation based on the underlying physics, chemistry, and organization of biological cells. We will explore programmability, complexity, simulation of, and reasoning about abstract models of chemical reaction networks, molecular folding, molecular self-assembly, and molecular motors, with an emphasis on universal architectures for computation, control, and construction within molecular systems. If time permits, we will also discuss biological example systems such as signal transduction, genetic regulatory networks, and the cytoskeleton; physical limits of computation, reversibility, reliability, and the role of noise, DNA-based computers and DNA nanotechnology. Part a develops fundamental results; part b is a reading and research course: classic and current papers will be discussed, and students will do projects on current research topics.
Design and Construction of Programmable Molecular SystemsCS 196 ab (19)scienceCS 196 ab: Design and Construction of Programmable Molecular SystemsPart a: This course will introduce students to the conceptual frameworks and tools of computer science as applied to molecular engineering, as well as to the practical realities of synthesizing and testing their designs in the laboratory. In part a, students will design and construct DNA circuits and self-assembled DNA nanostructures, as well as quantitatively analyze the designs and the experimental data. Students will learn laboratory techniques including fluorescence spectroscopy and atomic force microscopy and will use software tools and program in Mathematica. Part b is an open-ended design and build project
Quantum ComputationCS 219 abc (9)scienceCS 219 abc: Quantum ComputationThe theory of quantum information and quantum computation. Overview of classical information theory, compression of quantum information, transmission of quantum information through noisy channels, quantum error-correcting codes, quantum cryptography and teleportation. Overview of classical complexity theory, quantum complexity, efficient quantum algorithms, fault-tolerant quantum computation, physical implementations of quantum computation.
Biomolecular Engineering LaboratoryChE 130 (9)sciChE 130: Biomolecular Engineering LaboratoryDesign, construction, and characterization of engineered biological systems. Students propose and execute research projects in biomolecular engineering and synthetic biology, emphasizing projects that apply rational or library-based design strategies to the control of system behavior.
- Operating SystemsorCS 124 (12)sysCS 124: Operating Systems
This course explores the major themes and components of modern operating systems, such as kernel architectures, the process abstraction and process scheduling, system calls, concurrency within the OS, virtual memory management, and file systems. Students must work in groups to complete a series of challenging programming projects, implementing major components of an instructional operating system. Most programming is in C, although some IA32 assembly language programming is also necessary. Familiarity with the material in CS 24 is strongly advised before attempting this course.
Real-World Algorithm ImplementationorCS 137 (12)algsCS 137: Real-World Algorithm ImplementationThis course introduces algorithms in the context of their usage in the real world. The course covers compression, semi-numerical algorithms, RSA cryptography, parsing, and string matching. The goal of the course is for students to see how to use theoretical algorithms in real-world contexts, focusing both on correctness and the nitty-gritty details and optimizations. Students will choose to implement projects based on depth in an area or breadth to cover all the topics.
Analysis and Design of AlgorithmsorCS 139 (12)algsCS 139: Analysis and Design of AlgorithmsThis course develops core principles for the analysis and design of algorithms. Basic material includes mathematical techniques for analyzing performance in terms of resources, such as time, space, and randomness. The course introduces the major paradigms for algorithm design, including greedy methods, divide-and-conquer, dynamic programming, linear and semidefinite programming, randomized algorithms, and online learning.
Distributed ComputingorCS 142 (9)sysCS 142: Distributed ComputingProgramming distributed systems. Mechanics for cooperation among concurrent agents. Programming sensor networks and cloud computing applications. Applications of machine learning and statistics by using parallel computers to aggregate and analyze data streams from sensors. Not offered 2023-24.
Networks: Algorithms & ArchitectureorCS 143 (12)sysCS 143: Networks: Algorithms & ArchitectureSocial networks, the web, and the internet are essential parts of our lives, and we depend on them every day. CS 143 and CS 144 study how they work and the 'big' ideas behind our networked lives. In this course, the questions explored include: Why is an hourglass architecture crucial for the design of the Internet? Why doesn't the Internet collapse under congestion? How are cloud services so scalable? How do algorithms for wireless and wired networks differ? For all these questions and more, the course will provide a mixture of both mathematical analysis and hands-on labs. The course expects students to be comfortable with graph theory, probability, and basic programming.
Networks: Structure & EconomicsororCS 144 (12)sysCS 144: Networks: Structure & EconomicsSocial networks, the web, and the internet are essential parts of our lives, and we depend on them every day. CS 143 and CS 144 study how they work and the 'big' ideas behind our networked lives. In this course, the questions explored include: What do networks actually look like (and why do they all look the same)?; How do search engines work?; Why do epidemics and memes spread the way they do?; How does web advertising work? For all these questions and more, the course will provide a mixture of both mathematical analysis and hands-on labs. The course expects students to be comfortable with graph theory, probability, and basic programming.
Complexity TheoryCS 151 (3-9)theoryCS 151: Complexity TheoryThis course describes a diverse array of complexity classes that are used to classify problems according to the computational resources (such as time, space, randomness, or parallelism) required for their solution. The course examines problems whose fundamental nature is exposed by this framework, the known relationships between complexity classes, and the numerous open problems in the area. Not offered 2023-24.
Math/Stat Courses
- Calculus of One and Several Variables and Linear AlgebraMa 1 abc (9)mathMa 1 abc: Calculus of One and Several Variables and Linear Algebra
Special section of Ma 1 a, 12 units (5-0-7). Review of calculus. Complex numbers, Taylor polynomials, infinite series. Comprehensive presentation of linear algebra. Derivatives of vector functions, multiple integrals, line and path integrals, theorems of Green and Stokes. Ma 1 b, c is divided into two tracks: analytic and practical. Students will be given information helping them to choose a track at the end of the fall term.
- Differential EquationsMa 2 (9)mathMa 2: Differential Equations
The course is aimed at providing an introduction to the theory of ordinary differential equations, with a particular emphasis on equations with well known applications ranging from physics to population dynamics. The material covered includes some existence and uniqueness results, first order linear equations and systems, exact equations, linear equations with constant coefficients, series solutions, regular singular equations, Laplace transform, and methods for the study of nonlinear equations (equilibria, stability, predator-prey equations, periodic solutions and limiting cycles).
- Introduction to Probability and StatisticsMa 3 (9)mathMa 3: Introduction to Probability and Statistics
This course is an introduction to the main ideas of probability and statistics. The first half is devoted to the fundamental concepts of probability theory, including basic combinatorics, random variables, independence, conditional probability, and the central limit theorem. The second half is devoted to statistical reasoning, including methods for the collection, organization, analysis, and interpretation of data. Topics covered will include parameter estimation, hypothesis testing, confidence intervals, Bayesian inference, and linear regression. The course will emphasize the application of statistics to engineering and the sciences.
Engineering Courses
- The Science of Data, Signals, and InformationorEE 1 (9)engrEE 1: The Science of Data, Signals, and Information
Electrical Engineering has given rise to many key developments at the interface between the physical world and the information world. Fundamental ideas in data acquisition, sampling, signal representation, and quantification of information have their origin in electrical engineering. This course introduces these ideas and discusses signal representations, the interplay between time and frequency domains, difference equations and filtering, noise and denoising, data transmission over channels with limited capacity, signal quantization, feedback and neural networks, and how humans interpret data and information. Applications in various areas of science and engineering are covered.
The Evolving UniverseorAy 1 (9)sciAy 1: The Evolving UniverseIntroduction to modern astronomy that will illustrate the accomplishments, techniques, and scientific methodology of contemporary astronomy. The course will be organized around a set of basic questions, showing how our answers have changed in response to fresh observational discoveries. Topics to be discussed will include telescopes, stars, planets, the search for life elsewhere in the universe, supernovae, pulsars, black holes, galaxies and their active nuclei, and Big Bang cosmology. A field trip to Palomar Observatory will be organized.
Earth's ClimateorESE 1 (9)sciESE 1: Earth's ClimateAn introduction to climate on Earth. How Earth's climate has changed in the past and its evolving response to the rapid increase in carbon dioxide and methane happening today. Model projections of future climate and associated risks. Development of climate policies in face of uncertainty in these projections and risks.
Earth and EnvironmentorGe 1 (9)sciGe 1: Earth and EnvironmentAn introduction to the ideas and approaches of earth and planetary sciences, including both the special challenges and viewpoints of these kinds of science as well as the ways in which basic physics, chemistry, and biology relate to them. In addition to a wide-ranging lecture-oriented component, there will be a required field trip component. The lectures and topics cover such issues as solid Earth structure and evolution, plate tectonics, oceans and atmospheres, climate change, and the relationship between geological and biological evolution.
Information and LogicIST 4 (9)theoryIST 4: Information and LogicThe course explains the key concepts at the foundations of computing with physical substrates, including representations of numbers, Boolean algebra as an axiomatic system, Boolean functions and their representations, composition of functions and relations, implementing functions with circuits, circuit complexity, representation of computational processes with state diagrams, state diagrams as a composition of Boolean functions and memory, and the implementation of computational processes with finite state machines. The basic concepts covered in the course are connected to advanced topics like programming, computability, logic, complexity theory, information theory, and biochemical systems.
Science Courses
- The Great Ideas of Biology: Exploration through ExperimentationorBi 1 x (9)sciBi 1 x: The Great Ideas of Biology: Exploration through Experimentation
Introduction to concepts and laboratory methods in biology. Molecular biology techniques and advanced microscopy will be combined to explore the great ideas of biology: the cell, the gene, evolution by natural selection, and life as chemistry. This course is intended for nonbiology majors. May be taken pass/fail if taken in a first-year student's first year. Limited enrollment.
Foundational Principles of Molecular BiologyorBi 8 (9)sciBi 8: Foundational Principles of Molecular BiologyThis course and its sequel, Bi 9, cover biology at the molecular and cellular levels. Bi 8 emphasizes genomic structure and the mechanisms responsible for the transmission and expression of genetic information. The focus is on the ways that the information content of the genome is translated into distinctive, cell-type specific patterns of gene expression and protein function. Assignments will include critical dissections of papers from classical and current research literature and problem sets.
- General ChemistryCh 1 ab (6-9)sciCh 1 ab: General Chemistry
First term: An introduction to general chemistry concepts with a focus on structure and bonding. Concepts will be tied to fundamental principles related to energy sustainability. Descriptions of atoms, both the physical and electronic structure with an introduction to quantum mechanics; chemical bonding models building up from molecules to extended solids; periodic trends; electrochemistry; and descriptions of states of matter. Second Term: A continuation of introduction to general chemistry concepts with a focus on chemical reactivity, and properties of complex chemical systems. Concepts related to energy, sustainability and human health will be the focus of the course with coverage of chemical thermodynamics; kinetics; non-covalent interactions; structure and bonding of organic molecules. Grade pass/fail.
- Fundamental Techniques of Experimental ChemistryCh 3 a (6)sciCh 3 a: Fundamental Techniques of Experimental Chemistry
Introduces the basic principles and techniques of synthesis and analysis and develops the laboratory skills and precision that are fundamental to experimental chemistry. Limited enrollment. Students entering in the academic year 2020 and before must take Ch 3 in their first nine terms of residence in order to be graded pass/fail. First-year undergraduate students entering in the academic year 2021 and thereafter must take Ch 3 in their first six terms of residence in order to be graded pass/fail. Ch 3 a and Ch 3 x both satisfy the institute's Core requirement for a Chemistry Laboratory.
- Classical Mechanics and ElectromagnetismPh 1 abc (9)sciPh 1 abc: Classical Mechanics and Electromagnetism
The first year of a two-year course in introductory classical and modern physics. Topics: Newtonian mechanics in Ph 1 a; electricity and magnetism, and special relativity, in Ph 1 b, c. Emphasis on physical insight and problem solving. Ph 1 b, c is divided into two tracks: the Practical Track emphasizing practical electricity, and the Analytic Track, which teaches and uses methods of multivariable calculus. Students enrolled in the Practical Track are encouraged to take Ph 8 bc concurrently. Students will be given information helping them to choose a track at the end of fall term.
- Natural Science Lab coursesci
- 2 × Science elective
Other Courses
- Technical Seminar PresentationsSEC 10 (3)communicationSEC 10: Technical Seminar Presentations
The purpose of this course is to equip students with the skills, knowledge, and experience necessary to give effective oral presentations. The course will include a mix of formal instruction, group discussions, practice presentations, and individual feedback. Limited enrollment. May not be repeated for credit.
- Written Academic Communication in Engineering and Applied ScienceorSEC 11 (3)communicationSEC 11: Written Academic Communication in Engineering and Applied Science
This class provides the opportunity for students to gain experience in academic technical writing in engineering and applied science. Students will choose a technical topic of interest, possibly based on a previous research or course project, and write a paper in an academic genre on that topic. Appropriate genres include the engineering report, review paper, or a peer-reviewed journal paper. Students will receive instruction in academic discourse in engineering and applied sciences as well as substantial feedback on their work-in-progress. This course is recommended for students who plan to attend graduate school or who wish to work toward a senior thesis or academic publication. Fulfills the Institute scientific writing requirement. For Winter and Spring terms, seniors will be given priority; however this class is open to all students in EAS and GPS, and to students in other divisions as space allows.
Written Professional Communication in Engineering and Applied ScienceorSEC 12 (3)communicationSEC 12: Written Professional Communication in Engineering and Applied ScienceThis class introduces students to common workplace genres of writing in professional (non-academic) fields in engineering and the applied sciences. Students will study and practice effective writing strategies within these genres and consider the varied audiences and goals of communicating in engineering and applied science industries. Genres covered may include job applications; performance reviews and recommendation letters; clean code and code documentation; technical reports; progress reports; proposals; or recommendation reports. This course is recommended for students who plan to seek jobs in industry. Fulfills the Institute scientific writing requirement. For Winter and Spring terms, seniors will be given priority; however this class is open to all students in EAS and GPS, and to students in other divisions as space allows.
Written Communication about Engineering and Applied Science to Non-SpecialistsSEC 13 (3)communicationSEC 13: Written Communication about Engineering and Applied Science to Non-SpecialistsEngineers and applied scientists often work on highly technical, specialized projects. However, their work is often of interest to readers with varied areas and levels of technical expertise, including investors, community stakeholders, government regulators, consumers, voters, students, and enthusiasts. This course introduces students to diverse types of writing about technical engineering and applied science topics intended for these 'non-specialist' readers who lack some or all of the technical knowledge the author has. Students will compose multiple texts written for different purposes and to different types of audiences outside of their area of expertise. This course is recommended for students who may plan entrepreneurial, non-profit, or government careers, where communication to non-specialists is crucial to success. It may also interest students who enjoy public advocacy or creative writing about technical topics. Fulfills the Institute scientific writing requirement. For Winter and Spring terms, seniors will be given priority; however this class is open to all students in EAS and GPS, and to students in other divisions as space allows.
- 1 × Free Elective
Goals
Our students and faculty strive to:
- understand information and computation as intrinsic components of a broad array of natural and engineered systems
- tackle challenging and fundamental problems with the potential for long-term and real-world impact
- develop underlying theory
- nurture collaboration between traditionally separate disciplines
Expectations
The department expects undergraduate majors to achieve:
- a thorough understanding of the mathematical and algorithmic foundations of computer science
- a depth of knowledge, and an understanding of the research frontiers, in at least one subfield of computer science
- experience in working on a significant project, typically as part of a team
- an appreciation of the scope of applications of computing in information systems and across science and engineering
- an ability to apply computational thinking to a wide variety of problems both inside and outside Computer Science
- an understanding of how to critically evaluate computer science research
- an ability to effectively communicate their ideas in writing and in oral presentations
History of the Major
2023 | Replace optional Databases project sequence → Programming Languages project sequence. Allow CS 13 (Mathematical Foundations of Computer Science) instead of CS 6a (Discrete Math) or Ma 121a (Combinatorial Analysis). |
2022 | |
2021 | Allow CS 1 x instead of CS 1. Replace CS 11 (Computer Language Lab) → CS 3 (Introduction to Software Design). Slightly decrease Math/CS Elective requirement to compensate. |
2020 | |
2019 | |
2018 | |
2017 |