Computer Science Course Descriptions
CS 5.
Introduction to Computer
Programming
Alvarado, Dodds, Kuenning, Libeskind-Hadas.
Introduction to programming and problem solving via computer. Students
are introduced to and program in Java.
In this course, students explore data representation (both simple and
structured data types, classes, objects),
flow-control structures (if, for, recursion, subroutines), basic
algorithms (sorting, searching, numeric
computation), and program design. No prior programming experience
required.
3 credit hours (First semester.)
CS 60.
Principles of
Computer Science
Dodds, Keller, and Libeskind-Hadas.
Introduction to principles of computer science.
Information structures, functional programming, object-oriented
programming, grammars, logic, logic programming, correctness,
algorithms, complexity analysis,
finite-state machines, basic processor architecture,
and theoretical limitations.
Prerequisites: Computer Science 5 (or equivalent) and
one semester of calculus.
3 credit hours.
(Both semesters.)
CS 70.
Data
Structures and Program Development
Kuenning, O'Neill, Stone.
Abstract data types including priority queues, dynamic
dictionaries, and disjoint sets. 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 in implementing these data
structures for a variety of applications.
Prerequisites: Computer Science 60. 3 credit
hours. (Both semesters.)
CS 81.
Computability and Logic
Keller, Bull (Pomona).
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: Computer Science 60 and Math 55.
3 credit hours. (Both semesters.)
CS 105.
Computer Systems
Erlinger, Kuenning, Bull (Pomona).
An introduction to computer systems.
In particular the course investigates data representations,
machine level representations of programs, processor architecture,
program optimizations, the memory hierarchy, linking,
exceptional control flow
(exceptions, interrupts, processes, and Unix signals),
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: Computer Science 70.
3 credit hours. (Both semesters.)
CS 121.
Software
Development
Keller, Sweedyk.
Rigorous 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: Computer Science 70.
3 credit hours. (Both semesters.)
CS 124.
User Interface Design
O'Neill.
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.
Students will 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.
(Second semester, alternate years).
CS 125.
Computer
Networks
Erlinger.
Principles and analysis techniques for internetworking.
Analysis of networking models and protocols. Presentation of computer
communication with emphasis on protocol architecture.
Prerequisite: Computer Science 105.
3 credit hours. (Second semester.)
CS 131.
Programming
Languages
O'Neill, Stone, and Bruce (Pomona).
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. Prerequisite: Computer Science 70 and 81. 3 credit hours. (Both
semesters.)
CS 132.
Compiler
Design
Stone.
The theory, design, and implementation of compilers and
interpreters. The interaction between compiler design and run-time
organization. Logistics of porting to new hardware.
Prerequisite: Computer Science 105 and 131.
3 credit hours. (Second semester, alternate years.)
CS 133.
Databases
Keller.
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 data-bases.
Prerequisite: Computer Science 70 and 81 (131
recommended).
3 credit hours. (First semester, alternate years.)
CS 134.
Operating Systems: Design and Implementation
O'Neill.
Design and implementation of operating systems, including processes,
memory management, synchronization, scheduling, protection,
filesystems, and I/O. These concepts are used to illustrate wider
concepts in the design of other large software systems, including
simplicity; efficiency; event-driven programming; abstraction design;
client-server architecture; mechanism vs. policy; orthogonality;
naming and binding; static vs. dynamic, space vs. time, and other
tradeoffs; optimization; caching; and managing large codebases.
Group projects provide experience in working with and extending a
real operating system.
Prerequisite: Computer Science 105.
3credit hours. (Second semester, alternate years.)
CS 136.
Advanced Computer Architecture
Erlinger, Kuenning.
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: Computer Science 105.
3 credit hours. (Second semester, alternate years.)
CS 140.
Algorithms
(joint-listed as Mathematics 168).
Libeskind-Hadas, Sweedyk, Chen (Pomona).
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 others. An introduction to computational
complexity, NP-completeness, and approximation algorithms. Proficiency
with programming is expected as some assignments require algorithm
implementation.
Prerequisite: Computer Science 70 and Mathematics 55.
3 credit hours. (Both semesters. Students taking the course as Mathematics
168 have slightly different prerequisites.)
CS 141.
Advanced Topics in Algorithms
Libeskind-Hadas.
Advanced topics in the design and analysis of combinatorial
algorithms.
Example topics are amortized analysis of data structures,
competitive analysis of on-line algorithms,
matroid theory, and introduction to parallel and distributed
algorithms.
A significant component of the course is written and oral student
presentations of material from the original literature.
Prerequisite: Computer Science 140/Mathematics 168.
3 credit hours. (First semester, alternate years.)
CS 142.
Complexity Theory .
Libeskind-Hadas, Bull (Pomona).
Brief review of computability theory
through Rice's Theorem and the Recursion Theorem 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.
Prerequisite: Computer Science 81.
3 credit hours. (First semester.)
CS 144.
Scientific Computing (joint-listed as Mathematics 164).
dePillis. 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: Mathematics 63 and 64,
and
Computer Science 60. 3 credit hours. (Second semester.)
CS 147.
Computer Systems Performance Analysis
Kuenning. Measurement and analysis of computer software and systems performance,
with emphasis on methodological issues. Measurement planning and
experimental design. Statistical methods for data analysis.
Hypothesis testing. Effective graphical and tabular presentation of
data. Common errors in performance measurement. Elementary queueing
theory. Simulation methods. Project in performance measurement.
Typical projects include measurement of databases, theorem provers,
file systems, networks, OS kernels, and computer processors.
Prerequisites: Mathematics 62 and
Computer Science 70.
3 credit hours. (Second semester, alternate years.)
CS 151.
Artificial Intelligence
Alvarado.
Knowledge representation, including rule-based systems and
neural networks, learning paradigms, and philosophical challenges to
artificial intelligence. Discussion of areas of current research:
natural language processing, robotics, vision, cognitive modeling,
case-based-reasoning.
Prerequisite: Computer Science 81 (131 recommended).
3 credit hours. (Second semester.)
CS 152.
Neural
Networks
Keller.
Modeling, simulation, and analysis of artificial neural
networks and their relation to biological networks.
Design and
optimization of discrete and continuous neural networks.
Back propagation, and other gradient descent methods. Hopfield and
Boltzmann networks. Unsupervised learning. Self-organizing feature
maps. Applications chosen from function approximation, signal
processing, control, computer graphics, pattern recognition,
time-series analysis. Relationship to fuzzy logic, genetic
algorithms, and artificial life.
Prerequisites: Computer Science 60 and Mathematics 63.
3 credit hours. (First semester.)
CS 153.
Computer Vision
Alvarado, Dodds.
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.
Prerequisite: Computer Science 70.
3 credit hours. (Second semester, alternate years.)
CS 154.
Robotics
Dodds.
Hands-on introduction to autonomous robotics.
Topics span sensor operation and low-level
actuator control through architectures and algorithms for accomplishing tasks.
There is an emphasis on the recent success of probabilistic approaches
throughout the course.
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 our hardware platforms.
Prerequisite: Computer Science 70.
3 credit hours. (Second semester)
CS 155.
Computer
Graphics
Sweedyk.
Geometric models for visual output. Rastering.
Three-dimensional volume and surface modeling. Reflectance and
illumination models. Texturing and shading. Color and animation.
Prerequisite: Computer Science 140 and Mathematics 63 (Linear Algebra).
3 credit hours. (First semester.)
CS 156.
Parallel and
Real-Time Computation
Keller, Chen (Pomona).
Characteristics and applications for parallel and real-time
systems. Specification techniques,
algorithms, architectures, languages, design,
and implementation.
Prerequisites: Computer Science 105 and 140 (131 recommended).
3 credit hours. (Second semester, alternate years.)
CS 157.
Computer
Animation
Sweedyk.
This course introduces students to the theory and practice
of computer animation.
The course covers the 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.
In addition the course surveys the art, history
and production of computer animation.
Prerequisites: Computer Science 155.
3 credit hours. (Second semester, alternate years.)
CS 181, 182. Computer Science
Seminar
Staff.
Advanced topics of current interest in computer science.
Prerequisite: permission of instructor. 3 credit hours. (Both
semesters.)
CS 183, 184.
Computer Science
Clinic I, II
Staff.
Team project in computer science, with corporate affiliation.
Prerequisites: Computer Science 121. 3 credit hours.
CS 185, 186. Senior Research Project I, II
Staff.
Projects involving original research under faculty supervision.
1-3 credit hours.
CS 189. Programming Practicum.
Dodds, Stone.
This course is a weekly programming
seminar, emphasizing efficient recognition of
computational problems and their difficulty, developing and implementing
algorithms to solve them, and the testing of those
implementations. Attention is given to the effective use of programming tools
and available libraries, as well as to the
dynamics of team problem-solving.
1 credit hour. (May be repeated
for elective credit up to 3 times.)
(Both semesters.)
CS 191, 192. Computer Science Project I, II.
Staff.
Participation in projects of substantial interest to computer
scientists. Emphasis is on the design and implementation of computer
systems for real problems. Students typically work in
small teams with faculty supervision.
1-3 credit hours per semester.
CS 193, 194, 195, 196. Computer
Science Colloquium.
Staff.
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. Required for all junior and senior
computer science majors any semester in residence at HMC.
Study abroad students should coordinate this requirement with the
Computer Science Faculty member who is organizing colloquium.
0 credit hours.
CS 197, 198. Advanced Problems in Computer Science.
Staff.
Independent study in a field agreed upon by student and
a faculty member.
1-3 credit hours.
Last Modified Sunday, 13-Nov-2005 12:54:57 PST
|