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: none. Offered by Pomona. Spring
Introduction to the field of computer science using the object-oriented
language Java. Topics include iteration and recursion, basic data structures,
sorting and searching, elementary analysis of algorithms and a thorough
introduction to object-oriented programming. Special emphasis on graphics,
animation, event-driven programming and the use of concurrency to make more
interesting programs. No previous programming experience required
Weekly laboratory sessions.
Offered by Pomona. Each semester.
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 or equivalent experience. Offered by Pomona. Fall semester.
Introduction to the study of finite mathematical structures and
the ways to build them, count them, and
analyze them. Topics and examples are 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: CS 51 or equivalent experience. Offered by
Pomona. Spring semester.
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. Includes an introduction to
manual memory management in C++. Serves the same role as HM 70 as a
prerequisite for upper-division computer science courses at any of The
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.
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 52 and 62,
or HMC CS 60 and 70.
Offered jointly with HMC. Each semester.
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. Each semester.
CS 124 - Non-Traditional User-Interfaces
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.
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.
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.
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.
Last Offered: Spring 2011
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.
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.
CS 136 - Advanced 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.
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
CS 143 - Applied Algorithms
What role do algorithms play in solving real-world
problems? In this class we will consider general problem solving
techniques, dealing with NP-completeness and issues concerning
implementation and evaluation. The topics examined may be motivated by
problems in areas such as computational biology, scientific computing
and networks. There will be a research-oriented final project.
Prerequisite: CS 140. Alternate years.
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.
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.
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.
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.
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.
CS 156 - Parallel and Real-TimeComputing
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.
CS 157 - Computer Animation
Algorithms and data structures for building and
animating articulated figures and particle systems including
interpolation techniques, deformations, forward and inverse kinematics,
rigid body dynamics, and physically based modeling. Prerequisites: CS
jointly with HMC. Alternate years.
CS 158 - Machine Learning
An exploration of concepts and methods in machine learning including
decision trees, Markov models and neural networks. Students will
implement Machine Learning methods, read and discuss contemporary
research articles in the space and independently propose, research and
implement a Machine Learning approach to a modern artificial
intelligence problem. Prerequisites: CS 151. Alternate years.
CS 159 - Natural Language Processing
An introduction to fundamental concepts in natural language
processing and computational linguistics, a field whose goals include
enabling human-computer interaction via language and text translation
and understanding. Use of statistical and logical techniques to study
language processing at word, syntactic, and semantic levels.
Assignments require constructing and modifying systems as well as using
large, existing corpora for validation. Prerequisite: 51 and 62.Alternate years.
CS 160 - Information Retrieval
This course will explore how search engines work, covering text processing, index construction, text similarity, evaluation and searching other media. In addition, we will examine other applications relevant to search, including language modeling, clustering, classification and e-commerce. The course is project driven and we will build a functioning search engine. Prerequisite: 52 or 62. Offered occasionally.
Last offered: Fall 2009.
CS 181,182 - Seminar in Computer Science
Selected topics in computer science. May be repeated for credit.
Permission of instructor required. Each semester.
CS 183,184 - Computer Science Clinic
Two-semester, industry-sponsored project in computer science.
Prerequisite: CS 121. Offered by HMC.
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.
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.