Search:

Course Descriptions

This is a listing of the all the courses we offer. For a graphical depiction of course precedence, click here. To see the courses we are offering in the current semester, visit this page.

CS 0. Introduction to Computing and Programming

Requirements
Not open to HMC students.

Credit Hours
3.0

Offered
Fall.

An introduction to computing using Python and multi-media. Students will be able to read, understand, modify, and assemble programs that achieve useful communication tasks: Image manipulation, sound synthesis and editing, text (e.g., HTML) creation and manipulation, and digital video effects. Students will learn useful computing skills, including database concepts.

CS 5. Introduction to Computer Science

Requirements
Computer Science core course required for all HMC students.

Credit Hours
3.0

Offered
Fall semester.

Introduction to elements of computer science. Students learn general computational problem-solving techniques and gain experience with the design, implementation, testing and documentation of programs in a high-level language. In addition, students learn to design digital devices, understand how computers work, and learn to program a computer in its own machine language. Finally, students are exposed to ideas in computability theory. The course includes discussions of societal and ethical issues related to computer science.

CS 5GR. Introduction to Biology and Computer Science

Requirements
Must be a first-year student.

Credit Hours
3.0

Offered
Fall semester.

This course introduces fundamental concepts from the core course Computer Science 5 using biology as the context for those computational ideas. Students see both the intellectual and practical connections between these two disciplines and write computer programs to explore biological phenomena. Biology topics include the basics of biochemistry, the central dogma, population genetics, molecular evolution, metabolism, regulation, and phylogenetics. Computer science material includes basic data types and control structures, recursion, dynamic programming, and an introduction to automata and computability. This course fulfills the computer science core requirement at Harvey Mudd College. It does not fulfill the HMC biology core requirement.

CS 10. Introduction to Game Development

Requirements
Prerequisites: CS 0, CS 5 (or equivalent), or CS 42.

Credit Hours
3.0

Offered
Spring semester.

Students learn to design and develop 2D computer games. Students are exposed to core computer science topics including data structures, artificial intelligence algorithms, computer graphics, software architecture and design, user interface design, and computer simulation. The course culminates in a team game project in which students learn to use modern software project management practices and principles. Cannot be used as a CS or Math/CS technical elective.

CS 42. Principles and Practice of Computer Science

Requirements
Prerequisites: Permission of instructor, must be a first-year student.

Credit Hours
3.0

Offered
Fall semester.

Accelerated breadth-first introduction to computer science as a discipline for students (usually first-year) who have some programming background. Computational models of functional, object-oriented, and logic programming. Data structures and algorithm analysis. Computer logic and architecture. Grammars and parsing. Regular expressions. Computability. Extensive practice constructing applications from principles, using a variety of languages. Successful completion of this course satisfies the Computer Science 5 core requirement and Computer Science 60 coursework.

CS 60. Principles of Computer Science

Requirements
Prerequisites: CS 5 (or equivalent) or permission of instructor.

Credit Hours
3.0

Offered
Both semesters.

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. Those who have completed Computer Science 42 cannot take Computer Science 60.

CS 70. Data Structures and Program Development

Requirements
Prerequisites: CS 42, CS 60, or equivalent.

Credit Hours
3.0

Offered
Both semesters.

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 building programs for a variety of applications.

CS 81. Computability and Logic

Requirements
Prerequisites: Math 55 and CS 42, CS 60 or equivalent.

Credit Hours
3.0

Offered
Both semesters.

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.

CS 105. Computer Systems

Requirements
Prerequisites: CS 70 or equivalent.

Credit Hours
3.0

Offered
Both semesters.

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.

CS 121. Software Development

Requirements
Prerequisites: CS 70 or equivalent.

Credit Hours
3.0

Offered
Both semesters.

Introduction to the discipline concerned with the design and implementation of software systems. The course presents a historical perspective on software development practice and explores modern, agile techniques for eliciting software requirements, designing and implementing software architecture and modules, robust testing practices, and project management. Student teams design, develop, and test a substantial software project.

CS 124A. Basics of User Interface Design

Requirements
Prerequisites: CS 5 (or equivalent) or CS 42.

Credit Hours
1.5

Offered
Spring semester, alternate years.

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 basic 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.

CS 124B. Non-Traditional User Interface Design

Requirements
Prerequisites: CS 60 or CS 42, and CS 124A.

Credit Hours
1.5

Offered
Spring semester, alternate years.

As computers move off of the desktop, interfaces are moving away from the traditional windows, icon, menu, pointer (WIMP) paradigm. This course builds on the basic ideas from CS124a to examine the technological and usability issues in constructing non-traditional (i.e. non-WIMP) interfaces. Styles of interfaces examined may include speech and natural language-based interfaces, tangible interfaces, vision-based interfaces, and pen-based interfaces.

CS 125. Computer Networks

Requirements
Prerequisites: CS 105.

Credit Hours
3.0

Offered
Fall semester.

Principles and analysis techniques for internetworking. Analysis of networking models and protocols. Presentation of computer communication with emphasis on protocol architecture.

CS 131. Programming Languages

Requirements
Prerequisites: CS 70 (or equivalent) and CS 81.

Credit Hours
3.0

Offered
Both semesters.

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.

CS 132. Compiler Design

Requirements
Prerequisites: CS 105 and CS 131 or instructor permission.

Credit Hours
3.0

Offered
Spring semester, alternate years.

The design and implementation of compilers. Topics include elegant theoretical results underlying compilation techniques, practical issues in efficient implementation of programming languages, and bit-level interactions with operating systems and computer architectures. Over the course of the semester, students build a working compiler.

CS 133. Databases

Requirements
Prerequisites: CS 70 and CS 81 (CS 131 recommended).

Credit Hours
3.0

Offered
Fall semester, alternate years.

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.

CS 134. Operating Systems: Design and Implementation

Requirements
Prerequisites: CS 105.

Credit Hours
3.0

Offered
Spring semester, alternate years.

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.

CS 135. File Systems

Requirements
Prerequisites: CS 105.

Credit Hours
3.0

Offered
Fall semester, alternate years.

Computer storage and file systems. Characteristics of nonvolatile storage, including magnetic disks and solid-state memories. RAID storage. Data structures used in file systems. Performance, reliability, privacy, replication, and backup. A major portion of the course is devoted to readings selected from current research in the field.

CS 136. Advanced Computer Architecture

Requirements
Prerequisite: CS 105.

Credit Hours
3.0

Offered
Spring semester, alternate years.

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.

CS 140. Algorithms

Joint Listings
Math 168

Requirements
Prerequisites: CS 70 and Math 55 (CS 81 recommended). Students taking this course as Math 168 have different prerequisites.

Credit Hours
3.0

Offered
Both semesters.

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.

CS 141. Advanced Topics in Algorithms

Requirements
Prerequisites: CS 140 (or Math 168).

Credit Hours
3.0

Offered
Fall semester, alternate years.

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.

CS 142. Complexity Theory

Joint Listings
Math 167

Requirements
Prerequisites: CS 81.

Credit Hours
3.0

Offered
Fall semester, alternate years.

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.

CS 143. Applied Algorithms

Requirements
Prerequisites: CS 140.

Credit Hours
3.0

Offered
Alternate years.

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.

CS 144. Scientific Computing

Joint Listings
Math 164

Requirements
Prerequisites: Math 65 (or equivalent), CS 42 or CS 60.

Credit Hours
3.0

Offered
Spring semester.

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.

CS 147. Computer Systems Performance Analysis

Requirements
Prerequisites: CS 70 and Math 35.

Credit Hours
3.0

Offered
Spring semester, alternate years.

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.

CS 151. Artificial Intelligence

Requirements
Prerequisites: CS 60 (or equivalent) and Math 35 (CS 70 recommended).

Credit Hours
3.0

Offered
Both semesters.

This course presents a general introduction to the field of Artificial Intelligence. In a nutshell, it examines the question: What does (will) it take for computers to perform human tasks? It presents a broad introduction to topics such as knowledge representation, search, learning, and reasoning under uncertainty. For each topic, it examines real-world applications of core techniques to problems which may include game playing, text classification, and visual pattern recognition.

CS 152. Neural Networks

Requirements
Prerequisites: Math 65 (or equivalent), CS 42 or CS 60.

Credit Hours
3.0

Offered
Fall semester.

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, and time-series analysis. Relationship to fuzzy logic, genetic algorithms, and artificial life.

CS 153. Computer Vision

Requirements
Prerequisites: CS 60 (or instructor permission).

Credit Hours
3.0

Offered
Fall semester, alternate years.

Computational algorithms for visual perception. Students will develop applications that acquire, process, and interpret still images and image streams. The course will cover representations of color, shading, texture, and shape along with stereo and motion analysis, object recognition and approaches for there-dimensional reconstruction. Applications include robotics, human perception, and the use of large image databases.

CS 154. Robotics

Requirements
Prerequisite: CS 60 (or equivalent) or instructor permission.

Credit Hours
3.0

Offered
Spring semester.

Introduction to robotics from a behavioral perspective. Topics span from sensor operation and low-level actuator control to architectures and algorithms for accomplishing tasks such as localization, navigation, and mapping. 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.

CS 155. Computer Graphics

Requirements
Prerequisites: CS 70, Math 25B.

Credit Hours
3.0

Offered
Fall semester.

This course introduces students to modern computer graphics. Topics include image processing, ray tracing and pipeline rendering, GPU processing, and 3D modeling. The course also covers a selection of recent research results. Students work on four substantial projects across the semester.

CS 156. Parallel and Real-Time Computing

Requirements
Prerequisites: CS 105 and CS 140 (CS 131 recommended).

Credit Hours
3.0

Offered
Spring semester, alternate years.

Characteristics and applications for parallel and real-time systems. Specification techniques, algorithms, architectures, languages, design, and implementation.

CS 157. Computer Animation

Requirements
Prerequisites: CS 155.

Credit Hours
3.0

Offered
Spring semester, alternate years.

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.

CS 158. Machine Learning

Requirements
Prerequisites: CS 151.

Credit Hours
3.0

Offered
Fall semester, alternate years.

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.

CS 159. Natural Language Processing

Requirements
Prerequisites: CS 81.

Credit Hours
3.0

Offered
Spring semester, alternate years.

An introduction to the fundamental concepts and ideas in natural language processing, sometimes called computational linguistics. The goals of the field range from text translation and understanding to enabling humans to converse with robots. We will study language processing starting from the word level to syntactic structure to the semantic meaning of text. Approaches include statistical as well as symbolic methods using logic and the lambda calculus. Students will build and modify systems and will use large existing corpora for validating their systems.

CS 160. Information Retrieval

Requirements
Prerequisites: CS 60 or CS 42.

Credit Hours
3.0

Offered
Spring semester, alternate years.

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.

CS 181-182. Computer Science Seminar

Requirements
Instructor permission.

Credit Hours
3.0

Offered
Both semesters.

Advanced topics of current interest in computer science.

CS 183-184. Computer Science Clinic I, II

Requirements
Prerequisites: CS 121.

Credit Hours
3.0

Offered
Yearly.

Team project in computer science, with corporate affiliation.

CS 185. Computer Science Research I

Requirements
Instructor permission.

Credit Hours
2.0-3.0

Offered
Fall semester.

An independent research project under faculty supervision. The course also has regular class meetings that address research methods and presentation skills.

CS 186. Computer Science Research II

Requirements
Prerequisites: CS 185.

Credit Hours
3.0

Offered
Spring semester.

A continuation of independent research carried out in Computer Science 185 culminating in a research paper and oral presentation.

CS 189. Programming Practicum

Requirements
Prerequisites: CS 5 (or equivalent) or permission of instructor.

Credit Hours
1.0

Offered
Both semesters.

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. May be repeated for elective credit up to three times.

CS 191-192. Computer Science Project I, II

Requirements
Instructor permission.

Credit Hours
1.0-3.0

Offered
Yearly.

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.

CS 195. Computer Science Colloquium

Requirements
Junior or Senior status.

Credit Hours
0.5

Offered
Both semesters.

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 while in residence at HMC. All majors welcome. Only 2 credit hours of colloquium can be used to satisfy department and college requirements. Pass/No Credit grading.

CS 197-198. Advanced Problems in Computer Science

Requirements
Instructor permission.

Credit Hours
1.0-3.0

Offered
Both semesters.

Independent study in a field agreed upon by student and a faculty member.