Computer Science Courses available at Pomona and Harvey Mudd
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.