CS Curricula

←All schools

Pomona CollegeWebsiteAcademic Catalog

Computer ScienceDepartment Website

Majors

Courses

source 1

CSCI 051A: Introduction to Computer Science Exploring Topics in Artificial Intelligence (1) intro

An introduction to computer science exploring topics in artificial intelligence (AI). The course will cover core programming concepts including iteration and recursion, basic data structures, and object-oriented programming using Python motivated by AI applications such as problem solving via search, game playing and basic machine learning. Students must take a lab associated with this section only. No previous programming experience required or expected.

CSCI 051P: Introduction to Computer Science in Python with Laboratory (1) intro

Introduction to the field of computer science using the Python programming language. Topics include iteration and recursion, basic data structures, sorting and searching, elementary analysis of algorithms, and an introduction to object-oriented programming. Special emphasis on working with and making sense of data in order to connect course material with applications in other disciplines. Students must take a lab associated with this section only. No previous programming experience required or expected.

CSCI 054: Discrete Math and Functional Programming (1) intro

A combined course on functional programming and formal proof. Students write programs over a variety of data structures, proving their programs correct with respect to precise logical specifications. Programming topics (and proof topics) range over: recursion (induction); combinatorics; algebraic data types, from lists to trees to abstract syntax trees (structural induction); parsers and interpreters (soundness properties); regular expressions (set theory and language theory). Prerequisites: any CSCI 051x course or Computer Science AP Exam-A with a score of 5.

CSCI 062: Data Structures and Advanced Programming (1) intro

Key topics include abstract data types (including stacks, queues, trees, priority queues and dynamic dictionaries), analysis of algorithms (including worst-case, average-case and amortized analysis) and program verification. Extensive practice in Java. Serves the same role as HM 70 as a prerequisite for upper-division computer science courses at any of The Claremont Colleges.

CSCI 101: Introduction to Languages and the Theory of Computation (1) theory

This class investigates models of computation such as finite-state automata and Turing machines, formal languages such as context free grammars, and computability. Connections to applications such as lexical analysis and parsing will be explored. Students will learn to read and to construct formal proofs in this context.

CSCI 105: Computer Systems (1) sys

Data representations, machine level representation of programs, processor architecture, program optimizations, the memory hierarchy, linking, exceptional control flow, performance measurement, virtual memory, system-level I/O and basic concurrent programming. These concepts are supported by a series of hands-on lab assignments.

CSCI 124: User Interfaces and User Experience (1) humans

This course will provide an introduction to the field of human-computer interaction, with an emphasis on designing user interfaces. Students will not only gain applicable skills that are desirable in industry, but will also acquire a good understanding of the cognitive and psychological underpinnings of human behavior and how it affects our interaction with technology.

CSCI 131: Programming Languages (1) pls

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.

CSCI 133: Database Systems (1) sys

Fundamental and cutting-edge concepts in database design: entity-relationship model, relational and semi-structured models. Query languages: relational algebra, relational calculus, SQL, XPath and SPARQL. Mechanism and design of database management systems: storage model, indexing, key algorithms such as sorting and joins, query evaluation and optimization, and concurrency control.

CSCI 134: Operating Systems Principles (1) sys

This course will provide an introduction to the design and structure of operating systems, to the services they provide, and to key issues that have confronted them, and broadly applicable approaches that have been developed to address them. Projects in the accompanying lab will focus on the exploitation of Operating System services, and practical experience with synchronization, file systems and security.

CSCI 140: Algorithms (1) algs

Algorithm design, computer implementation and analysis of efficiency. Discrete structures, sorting and searching, parsing, pattern matching and data management. Reducibility and theoretical limitations.

CSCI 143: Applied Algorithms (1) algs

In this course we will look at how algorithms are used in systems such as those for making recommendations and for processing images. We will discuss technical issues that can arise and social questions that can be raised when theoretical algorithms are deployed in practice. Students will implement algorithms, read papers, write reflective essays, and complete a research-oriented final project.

CSCI 151: Artificial Intelligence (1) ai

Introduction to artificial intelligence covering traditional topics such as state-space search and game playing, as well as more recent concepts including machine learning and a number of AI applications. Philosophical issues surrounding artificial intelligence and cognitive science will also be considered.

CSCI 152: Neural Networks (1) ai

An introduction to the theory and practical applications of neural networks. This course will cover simple perceptrons through modern convolutional and recurrent neural networks. Topics include gathering and processing data, optimization algorithms, and hyperparameter tuning. Application domains include computer vision, natural language processing, recommender systems, and content generation. Ethical implications of design decisions will also be considered throughout the course.

CSCI 158: Machine Learning (1) ai

Machine learning focuses on discovering patterns in and learning from data. This course is an introduction to the most common problems in machine learning and to the techniques used to tackle these problems.

CSCI 159: Natural Language Processing (1) ai

An introduction to fundamental concepts in natural language processing and computational linguistics, a field whose goals include enabling human-computer interaction via language, text translation and understanding. Use of statistical and logical techniques to study language processing at word, syntactic and semantic levels. Assignments require constructing and modifying systems as well as using large, existing corpora for validation.

CSCI 181G: Real-Time Graphics and Game Engine Programming (1) graphics

Digital games and other real-time interactive graphical systems synthesize computer graphics, physical simulation, and artificial intelligence into a cohesive whole. In this course students will learn the fundamental techniques of 2D and 3D graphics, collision detection and physics simulation, and agent AI, as well as the software architecture principles to combine these into reusable game “engines.”

CSCI 181N: Advanced Functional Programming (1) pls

Immutable, higher-order, side-effect free programming combines with various structuring disciplines (e.g., static type inference, monads) to offer a powerful, alternative viewpoint on programming. We will learn Haskell and its idioms, with an eye towards the language-based thinking of CSCI 131 (but none of its formalism). The course culminates in a project.

CSCI 181Q: Graph Algorithm and Application (1) algs

This course will cover graph algorithms with a special focus on how theoretical algorithms are adapted and used in practice to solve real world problems. Topics may include: finding shortest paths, graph coloring, finding cliques, stable matchings, and graph drawing. Projects will involve both adapting and implementing algorithms discussed in class.

CSCI 181S: System Security (1) sys

This course provides an introduction to system security. It focuses on principles and techniques for designing and implementing secure networked information systems. Topics include mechanisms for authentication, authorization, and audit, as well as cryptographic protocols and policy issues.

CSCI 181V: Principles of Programming Languages: Object-Oriented (1) pls

A thorough examination of issues and features in language design and implementation, including abstraction mechanisms, types, scoping, modularity, inheritance and concurrency. Special emphasis on issues with object-oriented languages.

CSCI 181W: Usable Security and Privacy (1) humans

There is a growing recognition that technology alone cannot solve all the problems relating to computer security and data privacy, and that human factors play an essential role in these areas. This course will introduce students to the field of usable security and privacy, which explores how people interact with security and privacy mechanisms.

CSCI 188: Computer Science Colloquium (0) talks

Colloquium presentations and discussions of topics in computer science and closely related disciplines. For junior Computer Science majors only.

CSCI 190: Computer Science Senior Seminar (0.25) special

Reading, discussion and presentation of research papers in an area of computer science. Each student will write a survey paper and must regularly attend the Computer Science Colloquium.

CSCI 191: Senior Research/Thesis Computer Science (1) capstone

Provides highly motivated students an opportunity to work with faculty on research topics chosen by the faculty. Students perform a literature review, propose a research topic and investigate extensions to the current state of the art. Culminates in a report describing a problem, its background history, any independent results achieved and directions for future research. Taken both semesters of the senior year; credit and grade awarded at the end of the second semester.

CSCI 192: Senior Project (0.5) capstone

A substantial, independent or group project in an area of computer science, undertaken with the supervision of a faculty member. Background research, a written report and an oral presentation are required.

CSCI 181DTPO: Computational Design Tools (1)

Students will discuss, critique, and create their own computational tools that support art, creativity, and design. Topics include critical making, design activism, digital fabrication techniques, and theories of creativity and craft. Students will work both individually on weekly making assignments and in a team to create an open-ended software “creativity support tool” through peer critique and user testing sessions.

CSCI 181ORPO: Computer Organization and Design (1) sys

An exploration of the fundamentals of computer architecture. From the C programming language down to the microprocessor, understand the abstraction layers between software and hardware. Topics covered include: abstraction, locality, parallelism, machine-level code, memory hierarchy, logic design, CPU design, and parallel programming.

CSCI 199DRPO: Computer Science: Directed Readings (0.51) special

Syllabus reflects workload of a standard course in the department or program. Examinations or papers equivalent to a standard course. Regular interaction with the faculty supervisor. Weekly meetings are the norm. Available for full- or half-course credit.

CSCI 199IRPO: Computer Science: Independent Research (0.51) special

A substantial and significant piece of original research or creative product produced. Pre-requisite course work required.

CSCI 199RAPO: Computer Science: Research Assistantship (0.5) special

Lab notebook, research summary or other product appropriate to the discipline is required.

MATH 058: Introduction to Statistics with lab (1) math

An introduction to the methodology and tools vital to the researcher in both the sciences and social sciences. Introduction to probability; binomial, normal, t and Chi-squared distributions; testing hypotheses; confidence intervals; analysis of variance; and regression and correlation analysis. Concepts will be applied to current data using statistical computer software.

MATH 060: Linear Algebra (1) math

Emphasizes vector spaces and linear transformations. Linear independence and bases, null spaces and ranks of linear transformations, the algebra of linear transformations, the representation of linear transformations by matrices. Additional topics may include Gaussian elimination, inner product spaces; determinants, eigenvalues; and applications of linear algebra.