Pomona CollegeWebsiteAcademic Catalog
Computer ScienceDepartment Website
BA Degree in Computer Sciencesource 1source 2
CS Courses
- Introduction to Computer Science Exploring Topics in Artificial IntelligenceorCSCI 051A (1)introCSCI 051A: Introduction to Computer Science Exploring Topics in Artificial Intelligence
An introduction to computer science exploring topics in artificial intelligence (AI). The course will cover core programming concepts including iteration and recursion, basic data structures, and object-oriented programming using Python motivated by AI applications such as problem solving via search, game playing and basic machine learning. Students must take a lab associated with this section only. No previous programming experience required or expected.
Introduction to Computer Science in Python with LaboratoryCSCI 051P (1)introCSCI 051P: Introduction to Computer Science in Python with LaboratoryIntroduction to the field of computer science using the Python programming language. Topics include iteration and recursion, basic data structures, sorting and searching, elementary analysis of algorithms, and an introduction to object-oriented programming. Special emphasis on working with and making sense of data in order to connect course material with applications in other disciplines. Students must take a lab associated with this section only. No previous programming experience required or expected.
- Discrete Math and Functional ProgrammingCSCI 054 (1)introCSCI 054: Discrete Math and Functional Programming
A combined course on functional programming and formal proof. Students write programs over a variety of data structures, proving their programs correct with respect to precise logical specifications. Programming topics (and proof topics) range over: recursion (induction); combinatorics; algebraic data types, from lists to trees to abstract syntax trees (structural induction); parsers and interpreters (soundness properties); regular expressions (set theory and language theory). Prerequisites: any CSCI 051x course or Computer Science AP Exam-A with a score of 5.
- Data Structures and Advanced ProgrammingCSCI 062 (1)introCSCI 062: Data Structures and Advanced Programming
Key topics include abstract data types (including stacks, queues, trees, priority queues and dynamic dictionaries), analysis of algorithms (including worst-case, average-case and amortized analysis) and program verification. Extensive practice in Java. Serves the same role as HM 70 as a prerequisite for upper-division computer science courses at any of The Claremont Colleges.
- Introduction to Languages and the Theory of ComputationCSCI 101 (1)theoryCSCI 101: Introduction to Languages and the Theory of Computation
This class investigates models of computation such as finite-state automata and Turing machines, formal languages such as context free grammars, and computability. Connections to applications such as lexical analysis and parsing will be explored. Students will learn to read and to construct formal proofs in this context.
- Computer SystemsCSCI 105 (1)sysCSCI 105: Computer Systems
Data representations, machine level representation of programs, processor architecture, program optimizations, the memory hierarchy, linking, exceptional control flow, performance measurement, virtual memory, system-level I/O and basic concurrent programming. These concepts are supported by a series of hands-on lab assignments.
Math/Stat Courses
- Introduction to Statistics with laborMATH 058 (1)mathMATH 058: Introduction to Statistics with lab
An introduction to the methodology and tools vital to the researcher in both the sciences and social sciences. Introduction to probability; binomial, normal, t and Chi-squared distributions; testing hypotheses; confidence intervals; analysis of variance; and regression and correlation analysis. Concepts will be applied to current data using statistical computer software.
Linear AlgebraMATH 060 (1)mathMATH 060: Linear AlgebraEmphasizes vector spaces and linear transformations. Linear independence and bases, null spaces and ranks of linear transformations, the algebra of linear transformations, the representation of linear transformations by matrices. Additional topics may include Gaussian elimination, inner product spaces; determinants, eigenvalues; and applications of linear algebra.
Science Courses
Other Courses
- 12 × Free Elective
Learning Objectives
The goals of our major include providing our students with the following abilities:
- To conceptualize multiple views of computational problems, to develop computational solutions grounded in theory, and to evaluate their solutions using a range of metrics.
- To work alone and in teams to identify, formulate, and solve computing problems.
- To gain a firm grounding in the core areas of computer science.
- To apply the knowledge gained in core courses to a broad range of advanced topics in computer science, and to develop the ability to learn sophisticated technical material independently.
- To be able to communicate technical information both orally and in writing.
- To understand the theoretical, practical, and ethical ramifications of computational solutions to problems, and to be aware of current research developments in computer science.
History of the Major
2024 | Replace "Attend 12 junior-year Colloquia + 12 senior-year Colloquia" → "Attend 24 Colloquia". |
2023 | |
2022 | Remove CSCI 051J (Intro to Computer Science in Java) and CSCI 051G (Intro to Computer Science in Grace) options for first course. |
2021 | |
2020 | |
2019 | Add CSCI 051A (Introduction to Computer Science Exploring Topics in Artificial Intelligence) option for first course. |
2018 | Replace CSCI 052 (Fundamentals of Computer Science) + CSCI 055 (Discrete Mathematics) -> CSCI 054 (Discrete Math and Functional Programming). Replace CSCI 081 (Logic and Computability) + CSCI 131 (Programming Languages) → CSCI 101 (Introduction to Languages and the Theory of Computation). Replace MATH 031 (Calculus II) + MATH 060 (Linear Algebra) → MATH 058 (Introduction to Statistics) or MATH 060. Add Colloquium requirement for juniors. |
2017 | Split CSCI 051 (Introduction to Computer Science [in Java]) into CSCI 051J (Java), CSCI 051G (Grace), and CSCI 051P (Python). |
2016 | Drop Senior Capstone (Thesis or Project) requirement. |
2015 | |
2014 |