Computer Science Courses

CSCI 040 - Computing for the Web

Practical computational problem solving by programming the Web and writing data analysis programs. Web programming covers languages (HTML, CSS, JavaScript, Python), tools, and techniques for developing interactive and dynamic web pages. In data programming students learn to write Python programs to analyze real world data found for example in science, business, and the humanities. Throughout the course, students learn many fundamental concepts vital in the study of computer science. Societal and ethical issues related to computing are also discussed. Prerequisites: None. No previous programming experience assumed.

Offered: Every semester

Credit: 1

Course Number: CSCI040


CSCI 051 - Introduction to Computer Science

First computer science course intended for students planning to complete a 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 (using inheritance), elementary algorithms (sorting and searching), recursion, exceptions, debugging, and files. No previous programming experience assumed.

Offered: Every semester

Credit: 1

Course Number: CSCI051


CSCI 052 - 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. Offered jointly by CMC and Pomona College. This course serves the same role as CSCI 60 at Harvey Mudd College as a prerequisite for upper division computer science courses at any of the Claremont Colleges.

Prerequisite: CSCI 051

Offered: Every fall

Credit: 1

Course Number: CSCI052


CSCI 055 - Discrete Structures

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.

Offered: Every Fall

Credit: 1

Course Number: CSCI055


CSCI 062 - Data Structures and Advanced Programming

This course builds on the computing concepts and programming skills acquired in CSCI 051 CM. 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 CSCI 70 at Harvey Mudd College as a prerequisite for upper division computer science courses at any of the Claremont Colleges. Offered jointly by CMC and Pomona College.

Prerequisite: CSCI 051

Offered: Every semester

Credit: 1

Course Number: CSCI062


CSCI 133 CM - 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.

Prerequisites: CSCI 081 CM or permission of the instructor

Offered: Every spring

Credit: 1

Course Number: CSCI133 CM


CSCI 135 CM - 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. Requires team project.

Prerequisite: CSCI 062 CM

Offered: Every fall

Credit: 1

Course Number: CSCI135 CM


CSCI 181 CM - Special Topics in Computer Science

Selected topics in computer science. May be repeated for credit.

Prerequisite: Instructor permission

Offered: Occasionally

Credit: 1

Course Number: CSCI181 CM