2022-2023 Catalog 
    
    May 14, 2024  
2022-2023 Catalog [ARCHIVED CATALOG]

Courses


Browse the entire list of course offerings below, or use the course filter search to view a course or selection of courses.

 

Computer Science

  
  • CSCI005 HM - Introduction to Computer Science

    See Harvey Mudd College Catalog for course description.

    Offered: Every fall

    Credit: 1

    Course Number: CSCI005 HM
  
  
  • CSCI036 CM - Foundations of Data Science

    Data science is the interdisciplinary study of the tools and theory behind using data to extract knowledge. It combines ideas from statistics, computer science, and particular domains in the hard and social sciences in order to make predictions and optimal decisions. This course covers the foundations of data science including the basics of how to structure, visualize, transform, and model data. Not open to students who have completed CSCI036  PZ, ECON 122 CM , or ECON 160 CM .

    Prerequisite: Introductory course in programming such as CSCI 005 HM  or CSCI 040 CM  

    Offered: Every year

    Credit: 1

    Course Number: CSCI036 CM
  
  • CSCI040 CM - 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. No previous programming experience assumed. Not open to students who have completed CSCI 005 HM  or equivalent. Students may not earn credit for both this course and any other introductory computer science course.

    Offered: Occasionally

    Credit: 1

    Course Number: CSCI040 CM
  
  • CSCI046 CM - Data Structures and Algorithms

    An introduction to abstract data types and fundamentals of algorithm analysis in Python. Topics may include: stacks, queues, trees, priority queues, graphs, recursion, sorting, searching, Big-O notation, and complexity classes. The course is a part of Computer Science sequence, but it does not count towards Computer Science major.

    Prerequisite: One python-based programming course, including CSCI 005 HM , CSCI 040 CM , and CSCI 051P PO .

    Offered: Every year

    Credit: 1

    Course Number: CSCI046 CM
  
  • CSCI048 CM - Numerical Linear Algebra

    Numerical linear algebra covers techniques of linear algebra over the real numbers including vector scaling, addition, matrix scaling, addition, multiplication, inversion, factoring, eigenvalues, eigenvectors, and singular value decompositions. Both direct methods such as Gaussian Elimination and iterative methods such as Gauss-Seidel will be introduced, with an emphasis on the computational complexity and numerical errors incurred by these operations. The course or MATH 060 CM  will serve as a linear algebra prerequisite for CMC CS courses. Those planning to take higher level mathematics courses should take MATH 060 CM . Credit will not be given for both MATH 060 CM  and CSCI 048.

    Prerequisites: CSCI 040 CM  , CSCI 005 HM  , or CSCI051 (any language).

    Offered: Every year

    Credit: 1

    Course Number: CSCI048 CM
  
  • CSCI051 CM - 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: Occasionally

    Credit: 1

    Course Number: CSCI051 CM
  
  • CSCI051G PO - Introduction to Computer Science in Grace with Lab

    See Pomona College Catalog for course description.

    Credit: 1

    Course Number: CSCI051G PO
  
  • CSCI051J PO - Introduction to Computer Science in Java with Lab

    See Pomona College Catalog for course description.

    Credit: 1

    Course Number: CSCI051J PO
  
  • CSCI051P PO - Introduction to Computer Science in Python with Lab

    See Pomona College Catalog for course description.

    Credit: 1

    Course Number: CSCI051P PO
  
  • CSCI052 CM - 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 CM  

    Offered: Occasionally

    Credit: 1

    Course Number: CSCI052 CM
  
  • CSCI055 CM - 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 CM
  
  
  • CSCI062 CM - 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 CM  

    Offered: Occasionally

    Credit: 1

    Course Number: CSCI062 CM
  
  
  • CSCI135 CM - Distributed Software Architecture

    Software architectures, programming models, and programming environments pertinent to developing Internet applications. Topics include communication protocols, client-server model, multi-tier software architecture, client-side scripting, server-side programming, component reuse, database connectivity, web servers, and developing web applications. New trends in distributed systems.

    Prerequisite: CSCI 062 CM  

    Offered: Occasionally

    Credit: 1

    Course Number: CSCI135 CM
  
  • CSCI143 CM - Big Data

    Analyze large-scale datasets (between 10GB-100TB) that cannot fit in the memory of a single computer.Topics include the relational and non-relational databases, advanced SQL programming, and advanced data structures like b-trees, GIN indexes, HyperLogLog, and BloomFilters.
    Example applications include web analytics, multilingual text analysis, and GIS problems.

    Prerequisites: CSCI 036 CM , CSCI 046 CM , and CSCI 055 CM 

    Offered: Every spring

    Credit: 1

    Course Number: CSCI143 CM
  
  • CSCI145 CM - Introduction to Data Mining

    Data mining is the process of discovering patterns in large data sets using techniques from mathematics, computer science and statistics with applications ranging from biology and neuroscience to history and economics. The goal of the course is to teach students fundamental data mining techniques that are commonly used in practice. Students will learn advanced data mining techniques (including linear classifiers, clustering, dimension reduction, transductive learning and topic modeling). Also listed as MATH 166 CM .

    Prerequisites: MATH 060 CM ; CSCI 062 CM  or proof-based math course above 100; or instructor consent.

    Offered: Every year

    Credit: 1

    Course Number: CSCI145 CM
  
  • CSCI148 CM - Graph Algorithms

    Design and analysis of algorithms for graphs and for problems with graph-like structure. Topics may include minimum spanning trees, shortest paths, network flow, divide and conquer algorithms, greedy algorithms, dynamic programming, and complexity. Skills may include representing real-world problems as graphs, analyzing recurrences, developing new algorithms, proving algorithm correctness, analyzing time and space complexity, and reductions. This course does not count towards the computer science major.

    Prerequisites:  CSCI 046 CM  and MATH 055 CM  

    Offered: Occasionally

    Credit: 1

    Course Number: CSCI148 CM
  
  • CSCI181 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