Computer Science Major

Major Requirements

A computer science major must complete the following courses:

Computer Science Foundation

  • CSCI060 HM

    Credits: 3

    Instructors: Boerkoel, Breeden, Dodds, Padmanabhan, Stone, Talvitie, Trushkowsky, Wiedermann, Wu

    Offered: Fall and spring

    Description: Introduction to principles of computer science: Information structures, functional programming, object-oriented programming, grammars, logic, correctness, algorithms, complexity analysis, and theoretical limitations. Those who have completed CSCI042 HM cannot take CSCI060 HM.

    Prerequisites: CSCI005 HM or CSCI005GR HM 

OR

  • CSCI042 HM

    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 and object-oriented programming. Data structures and algorithm analysis. Computer logic and architecture. 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

    Credits: 3

    Instructors: Benjamin, Bernoff, Lindo, Martonosi, Orrison, Su

    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

    Credits: 3

    Instructors: Breeden, Medero, O'Neill, Stone, Talvitie, Trushkowsky

    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

    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 or MATH055  CM/PZ/SC), and (CSCI060 HM or CSCI042 HM), and (MATH019 HM or MATH032 CM/PO/PZ/SC or MATH032S PO or MATH067  PO), and (MATH073 HM or MATH060 CM/PO/PZ/SC)

Computer Science Kernel

  • CSCI105 HM

    Credits: 3

    Instructors: O'Neill, Padmanabhan, Stone, 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 tuning, 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 

  • CSCI123 HM

    Credits: 3

    Instructors: Kirabo, Schofield, Staff

    Offered: Fall and spring

    Description: This course dives into the technical and professional skills necessary to plan, execute, document, and present computational projects beyond a classroom. A central focus of the course is a team-based project to develop a tutorial for an existing software tool or API. A variety of exercises will help explore and build literacy in common tools and workflows in a professional computing environment. Additionally, students will discuss human-human interactions around negotiation, conflict management, peer review of both code and written work, and ethical decision-making.

    Prerequisites: CSCI070 HM 

  • CSCI131 HM

    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

    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 oth­ers. 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 (MATH055 HM/CM/PZ/SC) and (MATH019 HM or MATH032  CM/PO/PZ/SC or MATH032S PO or MATH067 PO) and (MATH073 HM or MATH060  CM/PO/PZ/SC or MATH060C CM)) or ((CSCI060 HM or CSCI042 HM) and MATH131 HM)) or (CSCI062 PO and CSCI054  PO). CSCI081 HM is recommended.

Computer Science Clinic

Two consecutive semesters of Computer Science Clinic, taken in order:

  • CSCI183 HM

    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 in the same academic year to count toward the major.

    Prerequisites: CSCI123 HM  and senior standing; or permission of the Computer Science Clinic director

AND

  • CSCI184 HM

    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 in the same academic year to count toward the major.

    Prerequisites: 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

    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/col­loquia. 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

    Credits: 3

    Instructor: Bush

    Offered: Fall, alternate years

    Description: Computational algorithms and methods used in the study of genomes. Lectures, dis­cussions, and computer laboratory exercises.

    Prerequisites: MCBI118B HM 

  • ENGR085 HM

    Credits: 3

    Instructors: Brake, Harris

    Offered: Fall and spring

    Description: Design and implementation of digital systems. Topics include levels of abstraction, Boolean algebra, combinational logic, sequential logic, finite state machines, hardware description languages, computer arithmetic, C and assembly programming, embedded systems, and microarchitecture. Lab practices include simulation, prototyping, and debugging. The first half of ENGR085  HM through computer arithmetic 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

    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

    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

    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

    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

    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

    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

    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 or PHYS052 HM 

  • MATH164 HM

    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 HMMATH082 HM, and CSCI060 HM 

  • MATH165 HM

    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 prob­lems, local and global methods for nonlinear equations, interpolation, approximate integra­tion (quadrature), and numerical solutions to ordinary differential equations.

    Prerequisites: MATH073 HM and MATH082 HM 

  • MATH167 HM

    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

    Credits: 3

    Instructors: Benjamin, Martonosi, Staff (CMC), Staff (Pomona)

    Offered: Fall

    Description: Linear, integer, nonlinear and dynamic programming, classical optimization problems, and network theory.

    Prerequisites: MATH073 HM 

  • MCBI118A HM

    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 HMMATH082 HM, and BIOL046 HM 

  • MCBI118B HM

    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

    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

    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 HMPHYS064 HM, and PHYS111 HM 

  • PSYC183 SCHuman Data Science Ethics