Computer Science Courses available at Pomona and Harvey Mudd

Course Schedule

Courses for Non-Majors

CS Foundation Courses

Interdisciplinary Course

CS Core Courses

Upper-Level Courses

CS 30 Computation and Cognition
Introduction to computer programming for cognitive science and the computational modeling of human cognition. The nature of computation, the relation between computation and intelligence, and various approaches from artificial intelligence will be explored. Intensive programming practice during weekly lab sessions. No previous programming experience required. Prerequisite: An introductory course in linguistics, cognitive science, or psychology, or permission of the instructor. Offered by Pomona. Spring semester.

Course pages: Most recent offering

CS 51 Introduction to Computer Science
Introduction to computer science for students planning to major in computer science or a related field. Topics include iteration and recursion, arrays, linked lists, sorting and searching, binary search trees, elementary analysis of algorithms, and a thorough introduction to object-oriented programming in Java. Weekly laboratory sessions. No previous programming experience required. Prerequisite: none. Offered by Pomona. Each semester.

Course pages: Most recent offering

CS 52 Fundamentals of Computer Science
A solid foundation in functional programming, procedural and data abstraction, recursion, and problem-solving. Applications to key areas of computer science, including algorithms and complexity, computer architecture and organization, programming languages, finite automata, and computability. This course serves the same role as HMC CS 60 as a prerequisite for upper division computer science courses at any of the Claremont Colleges. Prerequisite: CS 51. Offered by Pomona. Fall semester.

Course pages:  Most recent offering

CS 55 Discrete Mathematics
Introduction to the study of finite mathematical structures and the ways to build them, count them, and analyze them. Topics and examples 05 chosen to relate to concepts of interest in the design and analysis of computer algorithms, including permutations and combinations, graphs and trees, and codes. Emphasis on creative problem solving and learning to read and write proofs. Prerequisite: Precalculus mathematics. Offered by Pomona. Spring semester.

Course pages: Most recent offering

CS 62 Data Structures and Advanced Programming
Abstract data types and efficient data structures, including priority queues, dynamic dictionaries, and disjoint sets. Analysis of data structures, including worst-case, average-case, and amortized analysis. Storage reclamation. Extensive practice in implementing these data structures in Java. Includes an introduction to manual memory management in C++. This course serves the same role as HMC CS 70 as a prerequisite for upper division computer science courses at any of the Claremont Colleges. Spring semester.

Course pages: Most recent offering

CS 66 Mathematical and Computational Foundations of Linguistics
This course is concerned with representational and computational issues relevant to the formal study of natural languages. A solid understanding of logic, lattices, and the lambda calculus will help us understand how to represent linguistic phenomena and to compute the meaning of discourse in natural languages. Logic provides an important first step, but a compositional understanding of language requires more powerful computational tools like the lambda calculus that will allow us to build up the meaning of phrases. Some programming will be taught so that students can understand computational models of languages. Prerequisite: Some programming experience and either PHIL/LGCS 60, CSCI 81, or permission of the instructor. Alternate years.

Course pages: Spring 2006

CS 81 Computability and Logic
An introduction to formal systems, mathematical models of machines, and computability. Topics include predicate logic, regular languages, context-free languages, and recursive and recursively enumerable sets. Students will learn to understand and construct formal proofs. Prerequisites: CS 52 and 55. Offered jointly with HMC. Each semester.

Course pages: Spring 2005  |  Fall 2005

CS 105 Computer Systems
Data representations, machine level representations 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. Prerequisite: CS 62 or HMC CS 70. Offered jointly with HMC. Each semester.

Course pages: Fall 2003  |  Fall 2004  |  Fall 2005

CS 121 Software Development
Introduction to the technological and managerial discipline concerned with the design and implementation of large software systems. Techniques for software specification, design, verification, and validation. Formal methods for proving the correctness of programs. Student teams design, implement, and present a substantial software project. Prerequisites: CS 62 or HMC CS 70. Offered by HMC. Each semester.

Course pages: Fall 2001  |  Spring 2002  |  Fall 2002  |  Spring 2003  |  Fall 2003  |  Fall 2005  |   Spring 2007  |   Fall 2007  |  

CS 124 User-Interface Design
This course introduces students to issues in the design, implementation, and evaluation of human-computer interfaces, with emphasis on user-centered design and graphical interfaces. In this course, students learn skills that aid them in choosing the right user interaction technique and developing an interface that is well-suited to the people for whom it is designed. Prerequisite: CS 62 or HMC CS 70. Offered by HMC. Fall 2002.

Course pages: Fall 2002

CS 125 Computer Networks
Principles and analysis techniques for internetworking. Analysis of networking models and protocols. Presentation of computer communication with emphasis on protocol architecture. Prerequisite: CS 105. Offered by HMC. Fall semester.

Course pages: Spring 2002  |  Fall 2002  |  Fall 2003  |  Fall 2005

CS 131 Programming Languages
A thorough examination of issues and features in programming 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: (CS 62 or HMC CS 70) and CS 81. Offered jointly with HMC. Each semester.

Course pages: Most recent offering

CS 132 Compiler Design
Theory, design, and implementation of compilers and interpreters. Interaction between compiler design and run-time organization. Logistics of porting to new hardware. Prerequisites: CS 105 and 131. Offered by HMC. Alternate years.

Course pages: Spring 2005

CS 133 Databases and Knowledge-Based Systems
Fundamental models of databases: entity-relationship, relational, deductive, object-oriented. Relational algebra and calculus, query languages. Data storage, caching, indexing, and sorting. Locking protocols and other issues in concurrent and distributed databases. Prerequisites: (CS 62 or HMC CS 70) and 81; CS 131 recommended. Offered by HMC. Alternate years.

Course pages: Spring 2004

CS 134 Advanced Operating Systems
Communication (client-server model, remote procedure call, and multicast), processes (threads, real-time, fault tolerance), clock synchronization, mutual exclusion, deadlocks, distributed file systems, semantics of file sharing, shared memory (consistency, object-based), case studies. Prerequisite: CS 105. Offered by HMC. Alternate years.

Course pages: Spring 2000  |  Spring 2002  |  Fall 2003

CS 136 Advanced Computer Architecture
Reduced vs. complex instruction set architecture, pipelining, instruction-level parallelism, superscalar architectures, advanced memory-hierarchy design, advanced computer arithmetic, multiprocessor systems, cache coherence, interconnection networks, performance analysis and case studies. Prerequisite: CS 105. Offered by HMC. Alternate years.

Course pages: Fall 1999

CS 140 Algorithms
Algorithm design, computer implementation, and analysis of efficiency. Discrete structures, sorting and searching, parsing, pattern-matching, and data management. Reducibility and theoretical limitations. Prerequisites: (CS 62 or HMC CS 70) and CS 55. Offered jointly with HMC. Each semester.

Course pages: Most recent offering

CS 151 Artificial Intelligence
Introduction to artificial intelligence covering traditional topics such as knowledge representation, state-space search, game playing, and theorem proving, as well as more recent approaches such as neural networks, genetic programming, robotics, and machine learning. Philosophical issues surrounding artificial intelligence and cognitive science will also be considered. Prerequisite: CS 52 or 60. Offered jointly with HMC. Alternate years.

Course pages: Most recent offering

CS 152 Neural Networks
Modeling, simulation, and analysis of artificial neural networks. Relationship to cognitive science, neuroscience, and biological neural networks. Supervised and unsupervised learning algorithms, including backpropagation and other gradient descent methods. Self-organizing feature maps. Recurrent network architectures. Evolutionary approaches to neural network design. Prerequisites: Math 60 and CS 52 or 60, or permission of instructor. Offered jointly with HMC. Fall semester.

Course pages: Fall 2000  |  Fall 2001  |  Fall 2002  |  Fall 2003  |  Fall 2004

CS 153 Computer Vision
Computational algorithms for visual perception. Image acquisition, image processing, segmentation. Representation of color, shading, texture, shape. Stereo and motion analysis. Object recognition. Relations to robotics, human perception, image databases. Prerequisites: (CS 62 or HMC CS 70) and Math 60. Offered by HMC. Alternate years.

Course pages: Fall 2000   Fall 2005

CS 154 Robotics
This course introduces students to robotics from a behavioral perspective. Topics span from sensor operation and low-level actuator control to architectures and algorithms for accomplishing tasks. The basic framework and analysis of both industrial and biologically-motivated robots are addressed. The laboratory component of the class provides experience in developing algorithms, programming, and testing a range of robot behaviors on a variety of systems. Prerequisites: CS 105 and Math 60. Offered by HMC. Alternate years.

Course pages: Spring 2001  |  Spring 2003  |  Spring 2005

CS 155 Computer Graphics
Geometric models for visual output. Rastering. Three-dimensional volume and surface modeling. Reflectance and illumination models. Texturing and shading. Color and animation. Prerequisite: CS 140, Math 60. Offered by HMC. Fall semester.

Course pages: Fall 2000  |  Fall 2001  |  Fall 2002  |  Spring 2003  |  Fall 2003  |  Fall 2005

CS 156 Parallel Computing
Characteristics and applications for parallel and real-time systems. Specification techniques, algorithms, architectures, languages, design, and implementation. Prerequisites: CS 105 and 140; CS 131 recommended. Offered jointly with HMC. Alternate years.

Course pages: Spring 2001  |  Spring 2003  |  Spring 2004

CS 162 Beyond Calculation: The Next 25 Years of Computing
Students will review the history of computing, the current state of computing, and various predictions of the future of computing. Using these 3 views of computing and their breadth in science and the humanities, students will produce their own prediction of the state of computing in twenty-five years. This prediction will include all aspects of the computing equation: scientific, economic, social, etc. Permission of instructor required. Offered by HMC.Fall 2002.

Course pages: Fall 2001  |  Fall 2002

CS 181,182 Seminar in Computer Science
Selected topics in computer science. May be repeated for credit. Permission of instructor required. Each semester.

Course pages: 


CS 183,184 Computer Science Clinic
Two-semester, industry-sponsored project in computer science. Prerequisite: CS 121. Offered by HMC.

Course pages: Most recent offering

CS 190 Senior Seminar
Reading and discussion in an area of computer science and preparation for the senior project. Topics will vary from year to year. Half-course. Fall semester.

Course pages:   Most recent offering

CS 191 Senior Research and Thesis in CS
This course provides highly motivated students an opportunity to work with faculty on research topics chosen in consultation with faculty. Students will be expected to perform a literature review, propose a research topic, and investigate extensions to the current state of the art. Projects are usually closely related to faculty research. The course culminates in a concise, well written report describing a problem, its background history, any independent results achieved, and directions for future research. Each semester.

CS 192 Senior Project
A substantial, independent project in an area of computer science, undertaken with the supervision of a faculty member. Background research, a written report, and an oral presentation are required. Prerequisite: CS 190. Half-course. Spring semester.

CS 99,199 Independent Study: Reading and Research
Course or half-course, arranged with approval. Each semester.