Computer Science Major
Major Requirements
A computer science major must complete the following courses:
Computer Science Foundation
-
CSCI060 HM Principles of Computer Science
Credits: 3
Instructors: Boerkoel, Breeden, Dodds, Stone, Trushkowsky, Wu
Offered: Fall and spring
Description: Introduction to principles of computer science: Information structures, functional programming, object-oriented programming, grammars, logic, logic programming, correctness, algorithms, complexity analysis, finite-state machines, basic processor architecture and theoretical limitations. Those who have completed CSCI042 HM cannot take CSCI060 HM.
Prerequisites: CSCI005 HM or CSCI005GR HM
OR
-
CSCI042 HM Principles and Practice of Computer Science
Credits: 3
Instructor: Stone and Wiedermann
Offered: Fall
Description: Accelerated breadth-first introduction to computer science as a discipline for students (usually first-year) who have a strong programming background. Computational models of functional, object-oriented, and logic programming. Data structures and algorithm analysis. Computer logic and architecture. Grammars and parsing. Regular expressions. Computability. Extensive practice constructing applications from principles, using a variety of languages. Successful completion of this course satisfies the CSCI005 HM Core requirement and CSCI060 HM coursework.
Prerequisites: Permission of instructor
AND
-
MATH055 HM Discrete Mathematics
Credits: 3
Instructors: Benjamin, Bernoff, Lindo, Martonosi, Orrison
Offered: Fall and spring
Description: Topics include combinatorics (clever ways of counting things), number theory, and graph theory with an emphasis on creative problem solving and learning to read and write rigorous proofs. Possible applications include probability, analysis of algorithms, and cryptography.
Corequisites: MATH073 HM
-
CSCI070 HM Data Structures and Program Development
Credits: 3
Instructors: Bang, Breeden, Medero, O'Neill, Stone, Talvitie, Trushkowsky, Wiedermann
Offered: Fall and spring
Description: Abstract data types including priority queues and dynamic dictionaries and efficient data structures for these data types, including heaps, self-balancing trees, and hash tables. Analysis of data structures including worst-case, average-case and amortized analysis. Storage allocation and reclamation. Secondary storage considerations. Extensive practice building programs for a variety of applications.
Prerequisites: (CSCI060 HM or CSCI042 HM), and at least one mathematics course at the level of calculus or higher; MATH055 HM recommended
-
CSCI081 HM Computability and Logic
Credits: 3
Instructors: Bang, Montañez, Stone
Offered: Fall and spring
Description: An introduction to some of the mathematical foundations of computer science, particularly logic, automata, and computability theory. Develops skill in constructing and writing proofs, and demonstrates the applications of the aforementioned areas to problems of practical significance.
Prerequisites: MATH055 HM and (CSCI060 HM or CSCI042 HM)
Computer Science Kernel
-
CSCI105 HM Computer Systems
Credits: 3
Instructors: Kuenning, Stone, Sweedyk, Trushkowsky
Offered: Fall and spring
Description: An introduction to computer systems. In particular, the course investigates data representations, machine level representations of programs, processor architecture, program optimizations, the memory hierarchy, exceptional control flow (exceptions, interrupts, processes and Unix signals), performance measurement, caches and virtual memory, system-level I/O, networking, and basic concurrent programming. These concepts are supported by a series of hands-on lab assignments.
Prerequisites: CSCI070 HM
-
CSCI121 HM Software Development
Credits: 3
Instructors: Sweedyk, Wu
Offered: Fall and spring
Description: Introduction to the discipline concerned with the design and implementation of software systems. The course presents a historical perspective on software development practice and explores modern, agile techniques for eliciting software requirements, designing and implementing software architecture and modules, robust testing practices, and project management. Student teams design, develop, and test a substantial software project.
Prerequisites: CSCI070 HM
-
CSCI131 HM Programming Languages
Credits: 3
Instructors: Bang, O'Neill, Stone, Wiedermann
Offered: Fall and spring
Description: A thorough examination of issues and features in language design and implementation including language-provided data structuring and data-typing, modularity, scoping, inheritance, and concurrency. Compilation and run-time issues. Introduction to formal semantics.
Prerequisites: CSCI070 HM and CSCI081 HM
-
CSCI140 HM Algorithms
Credits: 3
Instructors: Boerkoel, Montañez, Schofield, Stone
Offered: Fall and spring
Description: Algorithm design, analysis, and correctness. Design techniques including divide-and-conquer and dynamic programming. Analysis techniques including solutions to recurrence relations and amortization. Correctness techniques including invariants and inductive proofs. Applications including sorting and searching, graph theoretic problems such as shortest path and network flow, and topics selected from arithmetic circuits, parallel algorithms, computational geometry, and others. An introduction to computational complexity, NP-completeness, and approximation algorithms. Proficiency with programming is expected as some assignments require algorithm implementation.
Prerequisites: ((CSCI070 HM and CSCI081 HM) or ((CSCI060 HM or CSCI042 HM) and MATH131 HM))
Computer Science Clinic
Two consecutive semesters of Computer Science Clinic:
-
CSCI183 HM Computer Science Clinic I
Credits: 3
Instructor: Staff
Offered: Fall
Description: The Clinic Program brings together teams of students to work on a research problem sponsored by business, industry, or government. Teams work closely with a faculty advisor and a liaison provided by the sponsoring organization to solve complex real-world problems. Students are expected to present their work orally and to produce a final report conforming to professional publication standards. CSCI183 HM and CSCI184 HM must be taken consecutively to count toward the major.
Prerequisites: CSCI121 HM and senior standing; or permission of the Computer Science Clinic director
AND
-
CSCI184 HM Computer Science Clinic II
Credits: 3
Instructor: Staff
Offered: Spring
Description: The Clinic Program brings together teams of students to work on a research problem sponsored by business, industry, or government. Teams work closely with a faculty advisor and a liaison provided by the sponsoring organization to solve complex real-world problems. Students are expected to present their work orally and to produce a final report conforming to professional publication standards. CSCI183 HM and CSCI184 HM must be taken consecutively to count toward the major.
Prerequisites: CSCI121 HM, CSCI183 HM, and senior standing; or permission of the Computer Science Clinic director
Computer Science Colloquium
Four semesters of Computer Science colloquium are required and must be taken in the junior and senior years:
-
CSCI195 HM Computer Science Colloquium
Credit: 0.5
Instructor: Staff
Offered: Fall and spring
Description: Oral presentations and discussions of selected topics, including recent developments in computer science. Participants include computer science majors, Clinic participants, faculty members, and visiting speakers. No more than 2.0 credits can be earned for departmental seminars/colloquia. All majors welcome.
Prerequisites: Juniors and seniors only
Students studying abroad during their junior or senior years are excused from one semester of the colloquium requirement for each semester abroad.
9 Credits of Computer Science Electives
The major requires nine credits of upper-division Computer Science electives (numbered 100 or higher, and other than colloquium and Clinic which are also required for the major).
The following courses have been approved to be taken as electives toward the Computer Science major. This list is not exhaustive, and students should discuss other possible elective courses with their faculty advisor:
-
BIOL188 HM Advanced Computational Biology
Credits: 3
Instructor: Bush
Offered: Fall, alternate years
Description: Computational algorithms and methods used in the study of genomes. Lectures, discussions, and computer laboratory exercises.
Prerequisites: MCBI118B HM
-
ENGR085 HM Digital Electronics and Computer Engineering
Credits: 3
Instructors: Brake, Harris
Offered: Fall and spring
Description: This course provides an introduction to elements of digital electronics, followed by an introduction to digital computers. Topics in digital electronics include: Boolean algebra; combinational logic; sequential logic; finite state machines; transistor-level implementations; computer arithmetic; and transmission lines. The computer engineering portion of the course includes computer architecture and micro-architecture: levels of abstraction; assembly-language programming; and memory systems. The digital electronics portion of Engineering 85 may be taken by non-engineering majors as a stand-alone half course under the number ENGR085A HM.
Prerequisites: CSCI005 HM or CSCI005GR HM or CSCI042 HM
-
ENGR085A HM Digital Electronics
Credits: 1.5
Instructors: Brake, Harris
Offered: Fall and spring
Description: This course provides an introduction to elements of digital electronics, intended for non-engineering majors who may be interested in pursuing other advanced engineering courses that require this background. Lectures for this course coincide with lectures for the first half of ENGR085 HM.
Prerequisites: CSCI005 HM or CSCI005GR HM or CSCI042 HM
-
ENGR151 HM Analog Circuit Design
Credits: 4
Instructor: Spencer
Offered: Spring
Description: Design and analysis of electronic circuits based on semiconductor devices (e.g. pn diode, MOSFET, BJT), particularly linear amplifiers including operational amplifiers and associated building blocks. Includes a laboratory focused on experimental realization and measurement of electronic devices and circuits.
Prerequisites: ENGR079 HM and ENGR084 HM
-
ENGR155 HM Microprocessor-Based Systems: Design and Applications
Credits: 4
Instructors: Brake, Harris
Offered: Fall
Description: Introduction to digital design using programmable logic and microprocessors. Combinational and sequential logic. Finite state machines. Hardware description languages. Field programmable gate arrays. Microcontrollers and embedded system design. Students gain experience with complex digital system design, embedded programming, and hardware/software trade-offs through significant laboratory and project work.
Prerequisites: ENGR085 HM or (ENGR085A HM and CSCI060 HM)
-
ENGR205 HM State Estimation
Credits: 3
Instructor: Clark
Offered: Fall
Description: This course explores the field of state estimation, and does so through applications in autonomous vehicles. Topics include a review of probability, state or belief representations, and an introduction to several popular filters including Bayes Filters, Kalman Filters, Extended Kalman Filters, Unscented Kalman Filters, and Particle Filters. The course will include a series of labs where students apply the different filters to real data. The course will culminate in a self-designed project in which students must find or collect their own data.
Prerequisites: ENGR102 HM
-
MATH104 HM Graph Theory
Credits: 3
Instructors: Martonosi, Omar, Orrison
Offered: Alternate years
Description: An introduction to graph theory with applications. Theory and applications of trees, matchings, graph coloring, planarity, graph algorithms, and other topics.
Prerequisites: MATH073 HM and MATH055 HM
-
MATH106 HM Combinatorics
Credits: 3
Instructors: Benjamin, Omar, Orrison
Offered: Alternate years
Description: An introduction to the techniques and ideas of combinatorics, including counting methods, Stirling numbers, Catalan numbers, generating functions, Ramsey theory, and partially ordered sets.
Prerequisites: MATH055 HM
-
MATH157 HM Intermediate Probability
Credits: 1.5
Instructors: Benjamin, Haddock, Martonosi, Su, Williams
Offered: Fall
Description: Continuous random variables, distribution functions, joint density functions, marginal and conditional distributions, functions of random variables, conditional expectation, covariance and correlation, moment generating functions, law of large numbers, Chebyshev's theorem, and central-limit theorem.
Prerequisites: BIOL154 HM or MATH062 HM
-
MATH164 HM Scientific Computing
Credits: 3
Instructors: Bernoff, de Pillis, Yong
Description: Computational techniques applied to problems in the sciences and engineering. Modeling of physical problems, computer implementation, analysis of results; use of mathematical software; numerical methods chosen from: solutions of linear and nonlinear algebraic equations, solutions of ordinary and partial differential equations, finite elements, linear programming, optimization algorithms, and fast-Fourier transforms.
Prerequisites: MATH073 HM, MATH082 HM, and CSCI060 HM
-
MATH165 HM Numerical Analysis
Credits: 3
Instructors: Bernoff, Haddock, de Pillis, Yong
Offered: Fall
Description: An introduction to the analysis and computer implementation of basic numerical techniques. Solution of linear equations, eigenvalue problems, local and global methods for non-linear equations, interpolation, approximate integration (quadrature), and numerical solutions to ordinary differential equations.
Prerequisites: MATH073 HM and MATH082 HM
-
MATH167 HM Complexity Theory
Credits: 3
Instructor: Staff (Pomona)
Offered: Fall
Description: Brief review of computability theory, followed by a rigorous treatment of complexity theory. The complexity classes P, NP, and the Cook-Levin Theorem. Approximability of NP-complete problems. The polynomial hierarchy, PSPACE-completeness, L and NL-completeness, #P-completeness. IP and Zero-knowledge proofs. Randomized and parallel complexity classes. The speedup, hierarchy, and gap theorems.
Prerequisites: (CSCI060 HM or CSCI042 HM) and MATH055 HM
-
MATH187 HM Operations Research
Credits: 3
Instructors: Benjamin, Martonosi, Staff (CMC), Staff (Pomona)
Offered: Fall
Description: Linear, integer, non-linear and dynamic programming, classical optimization problems, and network theory.
Prerequisites: MATH073 HM
-
MCBI118A HM Introduction to Mathematical Biology
Credits: 1.5
Instructors: Adolph (Biology), de Pillis (Mathematics), Donaldson-Matasci (Biology)
Offered: Spring
Description: An introduction to the field of mathematical biology. Continuous and discrete mathematical models of biological processes and their analytical and computational solutions. Examples may include models in epidemiology, ecology, cancer biology, systems biology, molecular evolution, and phylogenetics.
Prerequisites: MATH073 HM, MATH082 HM, and BIOL046 HM
-
MCBI118B HM Introduction to Computational Biology
Credits: 1.5
Instructors: Bush (Biology), Donaldson-Matasci (Biology), Wu (Computer Science)
Offered: Spring
Description: An introduction to the field of computational biology. Algorithms for phylogenetic inference and computational methods for solving problems in molecular evolution and population genetics.
Prerequisites: CSCI005 HM and BIOL046 HM
-
PHYS084 HM Quantum Information
Credits: 3
Instructor: Lynn
Offered: Spring, alternate years
Description: Quantum computation and communication. Fundamentals of discrete-state quantum mechanics as appropriate for quantum information science. Possible topics include universal logic gates for quantum computing, quantum computing algorithms, quantum error correction, quantum cryptography and communication, adiabatic quantum computing, and hardware platforms for quantum computation and communication.
Prerequisites: PHYS024 HM, (CSCI005 HM or CSCI005GR HM or CSCI042 HM), and MATH073 HM
-
PHYS170 HM Computational Methods in Physics
Credits: 2
Instructor: Sahakian
Offered: Spring
Description: Advanced techniques in computational physics including high performance computing using parallelization (both CPU- and GPU-based ), machine learning and neural networks, and metaprogramming.
Prerequisites: PHYS052 HM, PHYS064 HM, and PHYS111 HM
- PSYC183 SCHuman Data Science Ethics