27 courses with the subject CMPU, each shown exactly as we captured it from the college's catalog, with every element we hold. Where the wording looks broken, that is our reading of the catalog, not the college's text.
CMPU 100Programming with Data1
Introduces fundamentals of computer programming and data analysis. Students learn to write programs to collect, clean, transform, and visualize data from a variety of domains. Working on real-world problems and data sets, students also consider social issues surrounding data collection and analysis. This course is designed for students from any discipline who want to learn to use programming as a tool for data-driven discovery. No prior programming experience is required. A weekly laboratory period provides guided hands-on experience. The Department. Two 75-minute periods and one 2-hour lab. Course Format: CLS
Introduces object-oriented software design, covering objects and classes, abstraction, encapsulation, inheritance, and polymorphism. Additional topics include recursion, unit testing, and error handling. Students who are thinking about the Computer Science major should take this course. A weekly laboratory period provides guided hands-on experience. Peter Lemieszewski. Open to all classes. Two 75-minute periods and one 2-hour lab. Course Format: CLS
Explores ways to solve computational problems by organizing data in canonical data structures and associated algorithms, using an object-oriented programming language. Data structures that realize common abstract data types such as lists, queues, stacks, maps, and trees are studied in depth. Additionally, common algorithm design techniques and asymptotic analysis are introduced. A weekly laboratory period provides guided hands-on experience. The Department.
CMPU 101 or by the Department’s placement test. Open to all classes. CMPU 102 and CMPU 145 may be taken in either order or concurrently. Two 75-minute periods and one 2-hour lab. Course Format: CLS
Offered
Fall and Spring
CMPU 145Foundations of Computer Science1
Uses the functional programming paradigm to illuminate the important connections between recursive data structures, recursive functions and (structural) induction. Other topics include: sets, logic and probability. Concepts are reinforced by regular assignments with mathematical and programming components. A weekly laboratory period provides guided hands-on experience. The Department.
CMPU 101 or AP CS A score of 4 or 5. Open to all classes. CMPU 145 and CMPU 102 may be taken in either order or concurrently. CMPU 145 and CMPU 203 may be taken in either order or concurrently. Two 75-minute periods and one 2-hour lab. Course Format: CLS
Offered
Fall and Spring
CMPU 203Software Design and Implementation1
Focuses on the systematic application of scientific principles to the development of computer software, from requirements analysis to design, implementation, and testing. Covers techniques such as iterative development, use cases, and software design patterns, as well as tools such as source version control and Unified Modeling Language (UML) diagrams. Students consolidate knowledge by working in groups on the creation of a mobile application of their own design over the course of the semester. Rui Meireles.
CMPU 102 . CMPU 203 and CMPU 145 may be taken in either order or concurrently. Two 75-minute periods and one 2-hour lab. Course Format: CLS
Offered
Fall and Spring
CMPU 224Computer Organization1
Examines the hierarchical structure of computing systems, from digital logic and microprogramming through machine and assembly languages. Topics include the structure and workings of the central processor, instruction execution, memory and register organization, addressing schemes, input and output channels, and control sequencing. The course includes a weekly hardware/software laboratory where digital logic is explored and assembly language programming projects are implemented. Jason Waterman.
CMPU 102 and CMPU 145 . Two 75-minute periods plus laboratory. Course Format: CLS
Offered
Fall and Spring
CMPU 235Computer Systems1
This course bridges the gap between high-level programming and underlying hardware, providing a deep understanding of how computer systems execute software. Students explore the fundamental concepts of computer organization and architecture. Topics include data representation, machine-level programming, the design of pipelined processors, memory hierarchy and caching, concurrency, and techniques for code optimization. By the end of the course, students are equipped to write more efficient, hardware-aware code and understand the full stack of execution from software down to the processor. Jason Waterman.
CMPU 102 and CMPU 145 . Two 75-minute periods and one 2-hour lab. Course Format: CLS
Offered
Fall and Spring
CMPU 240Theory of Computation1
Introduces the theory of computation while exploring the fundamental powers and limitations of all computing machines. Considers appropriate models of a computer and what problems are and are not solvable in such models. Aims to develop an understanding of the intimate connection between computation and language recognition, using as examples several classes of abstract machines and the corresponding classes of formal languages. Students learn how to reason about the nature of computation itself, and develop the intuition of a computer scientist. Provides theoretical foundations for CMPU 331 and 366 . Luke Hunsberger.
CMPU 102 and CMPU 145 . Two 75-minute periods. Course Format: CLS
Offered
Fall and Spring
CMPU 241Analysis of Algorithms1
Introduces the systematic study of algorithms and their analysis with regard to time and space complexity. Topics include divide-and-conquer, dynamic programming, greediness, randomization, upper and lower-bound analysis, and introduction to NP completeness. Emphasis is placed on general design and analysis techniques that underlie algorithmic paradigms. Builds a foundation for advanced work in computer science. The Department.
CMPU 102 and CMPU 145 . Two 75-minute periods. Course Format: CLS
Offered
Fall and Spring
CMPU 250Data and its Discontents1
(Same as STS 250 ) Explores the intersection of data science, ethics, and societal impact. This course equips students with practical skills in data analysis and machine learning while critically examining data and data-driven technologies. This course emphasizes responsible data practices. Topics may include algorithmic discrimination and carcerality, data feminism, surveillance, and the social impacts of data science applications. Readings and class discussions may focus on critical scholarship and case studies around data and algorithms in a variety of real-world contexts, such as social media, military, healthcare, government, and criminal-legal systems. Concurrently, through hands-on projects and case studies, students will develop technical proficiency to use data to solve problems. This course is designed for students who want to apply and understand data science techniques in social contexts. The Department.
Investigation and critical analysis of a topic in experimental or theoretical computer science. Experimental research may include building or experimentation with a non-trivial hardware or software system. A student electing this course must first gain, by submission of a written research proposal, the support of at least one member of the computer science faculty with whom to work out details of a research strategy. The formal research proposal, a written thesis, and oral presentation of results are required for the course. A second faculty member participates in both the planning of the research and final evaluation.
Minimum 3.5 GPA in 200- and 300-level Computer Science coursework at the end of the junior year, and permission of the department. Yearlong course 300- CMPU 301 . Course Format: OTH
(Same as COGS 319 ) This course explores computational models as a powerful tool for developing and testing scientific theories in cognitive science. What exactly are models? How can models be used to test hypotheses? How do we decide whether one model is better than another? Why is modeling such an important part of the scientific process? We will tackle these sorts of questions through hands-on creation and exploration of models, as well as discussion of research papers that exemplify modeling work in cognitive science. By the end of the course, students will understand the foundational issues of modeling, be better consumers of research that uses modeling, and be able to build their own models. Because there are a wide variety of modeling approaches used in cognitive science, the focus of this class changes periodically to cover different areas of modeling. The course may be repeated for credit if the topic has changed.
Subject
CMPU
Credits (min)
1
Credits (max)
1
Credit unit
unit(s)
Type
course
Repeatable
may be repeated for credit if the topic has changed.
A 200-level course in Cognitive Science, Computer Science, or a related discipline; or permission of the instructor. One 2-hour period plus one 50-minute period. Course Format: CLS
Offered
Spring
CMPU 331Compilers1
This course covers the implementation of compilers – programs that transform source programs written in a higher-level language into executable formats. Topics include syntax, error-handling, and code generation. Throughout the course, increasingly sophisticated compilers are implemented to demonstrate how different language features are handled, and the design challenges that each language feature introduces. Additional topics may include compiler optimizations and other advanced topics. Anna Gommerstadt.
CMPU 224 and CMPU 240 . In addition, CMPU 235 or CMPU 245 is recommended, but not required. Two 75-minute periods. Course Format: CLS
Offered
Fall and Spring
CMPU 333Computer Networks1
Computer networks, in the form of the Internet, have revolutionized society in the last 3 decades. This course provides an introduction to the design and operation of the Internet and computer networks in general. Topics include layered communication protocols, routing, transport, naming, security and mobility. Knowledge is consolidated through projects involving the creation of network applications. Rui Meireles.
CMPU 203 and CMPU 224 , or permission of the instructor. Two 75-minute periods. Course Format: CLS
Offered
Spring
CMPU 337Parallel Programming1
An introduction to parallel computing, with coverage of parallel architectures, programming models, and techniques. Topics include SIMD and MIMD models, shared-memory and message-passing styles of computation, synchronization, deadlock, and parallel language design. Students are exposed to common techniques for solving problems in sorting, searching, numerical methods, and graph theory, and gain practical experience through programming assignments run on a parallel processing system. Marc Smith.
CMPU 203 and CMPU 224 . Two 75-minute periods. Course Format: CLS
Offered
Spring
CMPU 340Discrete Optimization1
(Same as MATH 340 ) This course gives a theoretical treatment of fundamental problems in algorithmic graph theory and discrete / combinatorial optimization that lie at the interface of computer science, discrete mathematics, and operations research. We begin with sophisticated and efficient exact algorithms for flow, matching, and cut problems. Next, we tackle NP-hard problems arising in scheduling, clustering, and network design, and explore effective solution approaches through the study of approximation algorithms. Finally, we introduce modern approaches and models, such as decision-making under uncertainty (online algorithms), parameterized analysis, randomized algorithms, and the exploding area of beyond-worst-case analysis. Throughout, we emphasize the power of techniques from continuous optimization, mainly linear programs (LPs), in solving discrete problems, e.g., by introducing frameworks such as LP rounding and the primal-dual method. Heather Newman.
At least one of CMPU 241 , MATH 263 , AND at least one of CMPU 240 , MATH 241 , MATH 261 or permission of the department. Strongly recommend: MATH 221 . Helpful but not required: MATH 241 . Two 75-minute periods. Course Format: CLS
Offered
Fall
CMPU 353Bioinformatics1
(Same as BIOL 353 ) DNA is the blueprint of life. Although it’s composed of only four nucleotide “letters” (A, C. T, G), the order and arrangement of these letters in a genome gives rise to the diversity of life on earth. Thousands of genomes have been partially sequenced, representing billions of nucleotides. How can we reach this vast expanse of sequence data to find patterns that provide answers to ecological, evolutionary, agricultural, and biomedical questions? Bioinformatics applies high-performance computing to discover patterns in large sequence datasets. In this class students from biology and computer science work together to formulate interesting biological questions and to design algorithms and computational experiments to answer them. Jodi Schwarz, Marc Smith.
For students registering under the BIOL prefix, the
CMPU 365Artificial Intelligence1
An introduction to Artificial Intelligence as a discipline of Computer Science, covering the traditional foundations of the field and a selection of recent advances. Traditional topics include: search, two-player adversarial games, constraint satisfaction, knowledge representation and reasoning, and planning. Additional topics vary from year to year and are selected from the following: reasoning about time, probabilistic reasoning, neural networks, philosophical foundations, multiagent systems, robotics, and recent advances in planning. Significant programming assignments and a course project complement the material presented in class.
CMPU 203 and CMPU 241 . Two 75-minute periods. Not offered in 2026/27. Course Format: CLS
CMPU 366Natural Language Processing1
This course examines the intersection of human language and computation, focusing on how computers understand, analyze, and generate natural language. Students explore both traditional techniques (e.g., n-grams and rule-based systems) and modern methods (e.g., neural networks and deep learning) for language modeling and manipulation. Through hands-on projects, they apply these approaches to tasks such as information extraction, text classification, machine translation, and language generation. The course also addresses the ethical implications and societal impacts of language technologies, encouraging critical reflection on their development and use. Jonathan Gordon.
CMPU 250 or MATH 244 , or permission of the instructor. Two 75-minute periods. Course Format: CLS
Offered
Fall
CMPU 375Computer Networks1
Computer networks, in the form of the Internet, have revolutionized society in the last 3 decades. This course provides an introduction to the design and operation of the Internet and computer networks in general. Topics include layered communication protocols, routing, transport, naming, security and mobility. Knowledge is consolidated through projects involving the creation of network applications. Rui Meireles.
CMPU 203 and CMPU 224 , or permission of the instructor. Two 75-minute periods. Course Format: CLS
Offered
Fall
CMPU 378Graphics1
A survey of computational and mathematical techniques for modeling and rendering realistic images of three-dimensional scenes. Topics include: event-driven user interfaces; geometric transformations and projections; scene graphs; implicit and parametric surfaces; models of color and light; surface shading and texturing; local and global rendering algorithms; and an introduction to computer animation.