Computer Science Courses
51. Introduction to Computer Science
First computer science course intended for students planning
to minor (sequence) or major in computer science or a related
field. Students will learn principles of developing
object-oriented programs using a modern programming language such
as Java. Fundamental concepts covered will include abstraction
using classes, control structures, elementary data structures
(arrays and linked lists), object-oriented design, elementary
algorithms (sorting and searching), and recursion. No previous
programming experience assumed. Offered jointly with Pomona
College. Offered every semester.
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: Computer Science 51. Offered every fall by CMC or
Pomona.
62. Data Structures and Advanced Programming
This course builds on the computing concepts and programming
skills acquired in Computer Science 51. Key topics include
abstract data types (including stacks, queues, trees, priority
queues, dynamic dictionaries, disjoint sets), classical
algorithms (including sorting and searching), analysis of
algorithms (including worst-case, average-case, and amortized
analysis), and storage management. 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 Computer Science 70 as a prerequisite
for upper division computer science courses at any of the
Claremont Colleges. Prerequisite: Computer Science 51. Offered
every semester (fall at CMC; spring at Pomona).
76. Encryption and Encoding
The theory and practice of data encoding and encryption, with
much of the necessary mathematical background developed in the
course. Topics include: an introduction to finite algebraic
structures; residue arithmetic and the Chinese Remainder Theorem;
basic notions of encoding and error correcting capabilities;
complexity-theoretic foundations of cryptography; one-way and
trapdoor functions; secret key and public key encoding: the Data
Encryption Standard, the RSA algorithm; the factorization problem:
elementary algorithms and the quadratic sieve method; theory of
zero-knowledge protocols. Prerequisites: Mathematics 90; Computer
Science 51 recommended. Offered every other year.
81. Computability and Logic
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 62 and Mathematics 50. Offered jointly by CMC, Harvey
Mudd College, and Pomona College. Offered by CMC, Pomona, or HMC
each semester..
105. Computer Systems
Introduction to computer systems from a programmer's
point of view. Machine level representations of programs,
optimizing program performance, memory hierarchy, linking,
exceptional control flow, measuring program performance,
virtual memory, concurrent programming with threads,
network programming. Prerequisite: Computer Science 62 or
permission of the instructor. Offered by CMC, Pomona, or HMC
each semester.
121. Software Development
Practical exposure to the process of creating large software
systems, including requirements specifications, design,
implementation, testing, debugging, and maintenance. Emphasis on
software process, software tools (debuggers, profilers, source code
repositories, test harnesses), software engineering techniques
(time management, code and documentation standards, source code
management, object-oriented analysis and design), development
methods (pair programming, test first development, etc.), and team
development practice. Some of the work will be in groups.
Prerequisite: Computer Science 62. Offered by CMC, Pomona, or HMC
each semester.
131. Programming Languages
Ideas behind the design and implementation of programming
languages. Syntactic description, scope and lifetime of variables,
runtime stack organization, parsing and abstract syntax, semantic
issues, type systems, programming paradigms, interpreters and
compilers. Prerequisite: Computer Science 81 or permission of the
instructor. Offered jointly by CMC, Harvey Mudd College, and
Pomona College. Offered by CMC, Pomona, or HMC each semester.
133. Database Systems
Representing information about real world enterprises using
important data models including the entity-relationship, relational
and object-oriented approaches. Database design criteria, including
normalization and integrity constraints. Implementation techniques
using commercial database management system software. Selected
advanced topics such as distributed, temporal, active, and
multi-media databases. Prerequisite: Computer Science 81 or
permission of the instructor. Offered every spring semester.
134. Operating Systems
Characteristics, objectives, and issues concerning computer
operating systems. Hardware/software interactions, process
management, memory management, protection, synchronization,
resource allocation, file systems, security, and distributed
systems. Extensive systems programming. Prerequisite: Computer
Science 105. Offered by CMC, Pomona, or HMC every year.
135. Distributed Software Architecture
Software architectures, programming models, and programming
environments pertinent to developing Internet applications.
Topics include network protocols, client-server model, multi-tier
software architecture, client-side scripting (e.g., JavaScript),
server-side programming (e.g., Servlets and JavaServer Pages),
component reuse (e.g., JavaBeans), database connectivity (e.g.,
JDBC), web servers, and developing web applications. A team
project. Prerequisite: Computer Science 62. Offered every
fall semester.
140. Algorithms
Balanced trees, string matching, graph algorithms, external
sorting and searching. Dynamic programming, exhaustive search.
Space and time complexity, derivation and solution of recurrence
relations, complexity hierarchies, reducibility, NP completeness.
Prerequisites: Computer Science 62 and Mathematics 50. Offered
jointly by CMC, Harvey Mudd College, and Pomona College. Offered
by CMC, Pomona, or HMC each semester.
181. Special Topics in Computer Science
Selected topics in computer science. May be repeated for
credit. Instructor's permission required. Offered
occasionally.
|