 2024–2025 Courses:
 Browse by Course Number
 Browse by Term

CS 111: Introduction to Computer Science
This course will introduce you to computer programming and the design of algorithms. By writing programs to solve problems in areas such as image processing, text processing, and simple games, you will learn about recursive and iterative algorithms, complexity analysis, graphics, data representation, software engineering, and objectoriented design. No previous programming experience is necessary.
Prerequisites:NOT open to students who have completed any of the following course(s): CS 201 or greater with a grade of C or better.
6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; offered Fall 2024, Winter 2025, Spring 2025 · Tom Finzell, Anya Vostinar, Bridger Herman, Chelsey Edge 
CS 200: Data Structures with Problem Solving
Think back to your favorite assignment from Introduction to Computer Science. Did you ever get the feeling that “there has to be a better/smarter way to do this problem”? The Data Structures course is all about how to store information intelligently and access it efficiently. How can Google take your query, compare it to billions of web pages, and return the answer in less than one second? How can one store information so as to balance the competing needs for fast data retrieval and fast data modification? To help us answer questions like these, we will analyze and implement stacks, queues, trees, linked lists, graphs, and hash tables. This version of Data Structures includes extra class time to support students’ problem solving by meeting five days per week, and is encouraged for students who may have struggled in CS111 or otherwise believe they would benefit from extra support. This course fulfills all requirements of CS 201, and students should take only one of CS 200 or CS 201. 6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; offered Winter 2025 · Anna Rafferty 
CS 201: Data Structures
Think back to your favorite assignment from Introduction to Computer Science. Did you ever get the feeling that “there has to be a better/smarter way to do this problem”? The Data Structures course is all about how to store information intelligently and access it efficiently. How can Google take your query, compare it to billions of web pages, and return the answer in less than one second? How can one store information so as to balance the competing needs for fast data retrieval and fast data modification? To help us answer questions like these, we will analyze and implement stacks, queues, trees, linked lists, graphs, and hash tables. Students who have received credit for a course for which Computer Science 201 is a prerequisite are not eligible to enroll in Computer Science 201. Prerequisites:Student has completed any of the following course(s): CS 111 – Introduction to Computer Science with a grade of C or better or a score of 4 or better on the Computer Science A AP exam or equivalent.
6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; offered Fall 2024, Winter 2025, Spring 2025 · Sneha Narayan, David Musicant, Tanya Amert, Jean Salac 
CS 202: Mathematics of Computer Science
This course introduces some of the formal tools of computer science, using a variety of applications as a vehicle. You’ll learn how to encode data so that when you scratch the back of a DVD, it still plays just fine; how to distribute “shares” of your floor’s PIN so that any five of you can withdraw money from the floor bank account (but no four of you can); how to play chess; and more. Topics that we’ll explore along the way include: logic and proofs, number theory, elementary complexity theory and recurrence relations, basic probability, counting techniques, and graphs. Prerequisites:Student has completed any of the following course(s): CS 111 – Introduction to Computer Science with a grade of C or better or received a score of 4 or better on the AP Computer Science exam AND MATH 101 – Calculus with Problem Solving or MATH 111 – Introduction to Calculus or greater with a grade of C or better or greater or received a score of 4 or better on the Calculus AB AP exam or received a score of 4 or better on the Calculus BC AP exam or received a score of 5 or better on the Mathematics IB exam or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; offered Fall 2024, Winter 2025, Spring 2025 · Sneha Narayan, Eric Alexander 
CS 208: Introduction to Computer Systems
Are you curious what’s really going on when a computer runs your code? In this course we will demystify the machine and the tools that we use to program it. Our broad survey of how computer systems execute programs, store information, and communicate will focus on the hardware/software interface, including data representation, instruction set architecture, the C programming language, memory management, and the operating system process model. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; offered Fall 2024, Winter 2025, Spring 2025 · Tanya Amert, Bridger Herman 
CS 231: Computer Security
Hackers, phishers, and spammers–at best they annoy us, at worst they disrupt communication systems, steal identities, bring down corporations, and compromise sensitive systems. In this course, we’ll study various aspects of computer and network security, focusing mainly on the technical aspects as well as the social and cultural costs of providing (or not providing) security. Topics include cryptography, authentication and identification schemes, intrusion detection, viruses and worms, spam prevention, firewalls, denial of service, electronic commerce, privacy, and usability. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structure or CS 202 – Math of Computer Science (MATH 236 will be accepted in lieu of Computer Science 202) or CS 208 – Introduction to Computer Systems with a grade of C or better.
6 credits; FSR, Formal or Statistical Reasoning; not offered 2024–2025 
CS 232: Art, Interactivity, and Microcontrollers
In this handson course, taught (in an art studio) by a sculpture professor and computer science professor, we'll explore and create interactive three dimensional art. Using basic construction techniques, microprocessors, and programming, this class brings together sculpture, engineering, computer science, and aesthetic design. Students will engage the nuts and bolts of fabrication, learn to program microcontrollers, and study the design of interactive constructions. Collaborative labs and individual projects will culminate in a campuswide exhibition. No prior building experience is required. Not open to students who have taken previous offering of Art, Interactivity and Robotics.
Prerequisites:Student has completed any of the following course(s): CS 111 – Introduction to Computer Science with a grade of C or better or a score of 4 or better on the Computer Science A AP exam or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; not offered 2024–2025 
CS 251: Programming Languages: Design and Implementation
What makes a programming language like “Python” or like “Java”? This course will look past superficial properties (like indentation) and into the soul of programming languages. We will explore a variety of topics in programming language construction and design: syntax and semantics, mechanisms for parameter passing, typing, scoping, and control structures. Students will expand their programming experience to include other programming paradigms, including functional languages like Scheme and ML. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; offered Fall 2024, Winter 2025, Spring 2025 · Josh Davis, David Musicant, Bridger Herman 
CS 252: Algorithms
A course on techniques used in the design and analysis of efficient algorithms. We will cover several major algorithmic design paradigms (greedy algorithms, dynamic programming, divide and conquer, and network flow). Along the way, we will explore the application of these techniques to a variety of domains (natural language processing, economics, computational biology, and data mining, for example). As time permits, we will include supplementary topics like randomized algorithms, advanced data structures, and amortized analysis. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures AND CS 202 – Mathematics of Computer Science or MATH 236 – Mathematical Structures with a grade of C or better or equivalent. MATH 236 will be accepted in lieu of Computer Science 202.
6 credits; FSR, Formal or Statistical Reasoning; offered Fall 2024, Winter 2025, Spring 2025 · Layla Oesper, Sneha Narayan, Eric Alexander 
CS 254: Computability and Complexity
An introduction to the theory of computation. What problems can and cannot be solved efficiently by computers? What problems cannot be solved by computers, period? Topics include formal models of computation, including finitestate automata, pushdown automata, and Turing machines; formal languages, including regular expressions and contextfree grammars; computability and uncomputability; and computational complexity, particularly NPcompleteness. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures AND CS 202 – Mathematics of Computer Science or MATH 236 – Mathematical Structures with a grade of C or better or equivalent. MATH 236 will be accepted in lieu of Computer Science 202.
6 credits; FSR, Formal or Statistical Reasoning; offered Fall 2024, Winter 2025, Spring 2025 · Chelsey Edge, Layla Oesper 
CS 257: Software Design
It’s easy to write a mediocre computer program, and lots of people do it. Good programs are quite a bit harder to write, and are correspondingly less common. In this course, we will study techniques, tools, and habits that will improve your chances of writing good software. While working on several mediumsized programming projects, we will investigate code construction techniques, debugging and profiling tools, testing methodologies, UML, principles of objectoriented design, design patterns, and user interface design. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; offered Fall 2024, Winter 2025, Spring 2025 · Jean Salac, Jeff Ondich, Anya Vostinar 
CS 294: Directed Research in Computer Science
Students work on a research project related to a faculty member's research interests, and directed by that faculty member. Student activities vary according to the field and stage of the project. The longrun goal of these projects normally includes dissemination to a scholarly community beyond Carleton. The faculty member will meet regularly with the student and actively direct the work of the student, who will submit an endofterm product, typically a paper or presentation.
1 – 6 credit; No Exploration; not offered 2024–2025 
CS 301: History of Computing in England Program: History of Computing
In the mid1800s, Charles Babbage’s analytical engine, inspired by programmable looms, was the first conception of an automated programmable computing device. A century later, British researchers built some of the first physical computers—particularly WWIIera codebreaking work, and programmable machines developed immediately after the war. We will explore those two eras, through historical writings (including Babbage and Ada Lovelace, who wrote programs for the analytical engine, and Alan Turing) and visits to relevant museums and archives. We will also study some of the more recent history of computing, particularly the major advances in the 1960s and 1970s. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures AND CS 202 – Mathematics of Computer Science or MATH 236 – Mathematical Structures with a grade of C or better or equivalent. MATH 236 will be accepted in lieu of Computer Science 202.
6 credits; FSR, Formal or Statistical Reasoning; not offered 2024–2025 
CS 304: Social Computing
The last decade has seen a vast increase in the number of applications that connect people with one another. This course presents an interdisciplinary introduction to social computing, a field of study that explores how computational techniques and artifacts are used to support and understand social interactions. We will examine a number of sociotechnical systems (such as wikis, social media platforms, and citizen science projects), discuss the design principles used to build them, and analyze how they help people mobilize and collaborate with one another. Assignments will involve investigating datasets from online platforms and exploring current research in the field. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; offered Spring 2025 · Sneha Narayan 
CS 311: Computer Graphics
Scientific simulations, movies, and video games often incorporate computergenerated images of fictitious worlds. How are these worlds represented inside a computer? How are they “photographed” to produce the images that we see? What performance constraints and design tradeoffs come into play? In this course we learn the basic theory and methodology of threedimensional computer graphics, including both triangle rasterization and ray tracing. Familiarity with vectors and matrices is recommended but not required.
Prerequisites:Student has completed any of the following course(s): CS 208 – Intro to Computer Systems with grade of C or better.
6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; offered Spring 2025 · Josh Davis 
CS 314: Data Visualization
Understanding the wealth of data that surrounds us can be challenging. Luckily, we have evolved incredible tools for finding patterns in large amounts of information: our eyes! Data visualization is concerned with taking information and turning it into pictures to better communicate patterns or discover new insights. It combines aspects of computer graphics, humancomputer interaction, design, and perceptual psychology. In this course, we will learn the different ways in which data can be expressed visually and which methods work best for which tasks. Using this knowledge, we will critique existing visualizations as well as design and build new ones. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; not offered 2024–2025 
CS 318: Computational Media
How does computation enable new forms of creative expression? What kinds of media artifacts and experiences can only happen on computers? In this course, we’ll explore these notions through a handson survey of various forms of computational media, such as: computer simulation, computergenerated visual art, poetry generation, story generation, chatbots, Twitter bots, explorable explanations, and more. For each topic in the survey, students will learn about the past, present, and future of a given form through short readings and direct engagement with major works. Assignments and a final project will center on the creation of novel media artifacts and also reimplementations of lost or defunct historical programs. Prerequisites:Student has completed any of the following course(s): CS 111 – Introduction to Computer Science or CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; No Exploration; not offered 2024–2025 
CS 320: Machine Learning
What does it mean for a machine to learn? Much of modern machine learning focuses on identifying patterns in large datasets and using these patterns to make predictions about the future. Machine learning has impacted a diverse array of applications and fields, from scientific discovery to healthcare to education. In this artificial intelligencerelated course, we’ll both explore a variety of machine learning algorithms in different application areas, taking both theoretical and practical perspectives, and discuss impacts and ethical implications of machine learning more broadly. Topics may vary, but typically focus on regression and classification algorithms, including neural networks. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures AND CS 202 – Mathematics of Computer Science or MATH 236 – Mathematical Structures with a grade of C or better or equivalent. MATH 236 will be accepted in lieu of Computer Science 202.
6 credits; FSR, Formal or Statistical Reasoning; offered Spring 2025 · Tom Finzell 
CS 321: Making Decisions with Artificial Intelligence
There are many situations where computer systems must make intelligent choices, from selecting actions in a game, to suggesting ways to distribute scarce resources for monitoring endangered species, to a searchandrescue robot learning to interact with its environment. Artificial intelligence offers multiple frameworks for solving these problems. While popular media attention has often emphasized supervised machine learning, this course instead engages with a variety of other approaches in artificial intelligence, both established and cutting edge. These include intelligent search strategies, game playing approaches, constrained decision making, reinforcement learning from experience, and more. Coursework includes problem solving and programming. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures AND CS 202 – Mathematics of Computer Science or MATH 236 – Mathematical Structures with a grade of C or better or equivalent. MATH 236 will be accepted in lieu of Computer Science 202.
6 credits; FSR, Formal or Statistical Reasoning; offered Winter 2025 · Chelsey Edge 
CS 322: Natural Language Processing
Computers are poor conversationalists, despite decades of attempts to change that fact. This course will provide an overview of the computational techniques developed in the attempt to enable computers to interpret and respond appropriately to ideas expressed using natural languages (such as English or French) as opposed to formal languages (such as C++ or Lisp). Topics in this course will include parsing, semantic analysis, machine translation, dialogue systems, and statistical methods in speech recognition. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures AND CS 202 – Mathematics of Computer Science or MATH 236 – Mathematical Structures with a grade of C or better or equivalent. MATH 236 will be accepted in lieu of Computer Science 202.
6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; offered Fall 2024 · Eric Alexander 
CS 330: Introduction to RealTime Systems
How can we prove that dynamic cruise control will brake quickly enough if traffic suddenly stops? How must a system coordinate processes to detect pedestrians and other vehicles to ensure fair sharing of computing resources? In realtime systems, we explore scheduling questions like these, which require provable guarantees of timing constraints for applications including autonomous vehicles. This course will start by considering such questions for uniprocessor machines, both when programs have static priorities and when priorities can change over time. We will then explore challenges introduced by modern computers with multiple processors. We will consider both theoretical and practical perspectives. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures AND CS 202 – Mathematics of Computer Science or MATH 236 – Mathematical Structures with a grade of C or better or equivalent. MATH 236 will be accepted in lieu of Computer Science 202.
6 credits; FSR, Formal or Statistical Reasoning; offered Winter 2025 · Tanya Amert 
CS 331: Computer Networks
The Internet is composed of a large number of heterogeneous, independentlyoperating computer networks that work together to transport all sorts of data to points all over the world. The fact that it does this so well given its complexity is a minor miracle. In this class, we’ll study the structure of these individual networks and of the Internet, and figure out how this “magic” takes place. Topics include TCP/IP, protocols and their implementations, routing, security, network architecture, DNS, peertopeer networking, and WiFi along with ethical and privacy issues. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; not offered 2024–2025 
CS 332: Operating Systems
If you’re working in the lab, you might be editing a file while waiting for a program to compile. Meanwhile, the onscreen clock ticks, a program keeps watch for incoming email, and other users can log onto your machine from elsewhere in the network. Not only that, but if you write a program that reads from a file on the hard drive, you are not expected to concern yourself with turning on the drive’s motor or moving the read/write arms to the proper location over the disk’s surface. Coordinating all this hardware and software is the job of the operating system. In this course we will study the fundamentals of operating system design, including the operating system kernel, scheduling and concurrency, memory management, and file systems. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures AND CS 208 – Introduction to Computer Systems with a grade of C or better or equivalents.
6 credits; FSR, Formal or Statistical Reasoning; not offered 2024–2025 
CS 334: Database Systems
Database systems are used in almost every aspect of computing, including managing data for websites and apps, but also largescale data science archives. Why, and how? This course takes a multipronged approach. From a systems perspective, we will look at the lowlevel details of how a database system works internally, studying data storage, indexing, and query optimization. From a theory perspective, we will examine ideas such as normal forms and relational algebra. From a utilization perspective, we will look at how query languages such as SQL interface with the database system, and understand how SQL queries really work.
Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; not offered 2024–2025 
CS 338: Computer Security
When hackers can disable gas pipelines, national hospital systems, and electrical grids, and data brokers can create a largely unregulated worldwide surveillance system, there’s a clear need for people who understand the mechanisms of computer security and insecurity. Towards that end, in this course we will study technical and social aspects of computer and network security. Topics will include threat modeling, cryptography, secure network protocols, web security, ethical hacking and penetration testing, authentication, authorization, historical hacking incidents, usability, privacy, and securityrelated law. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; offered Fall 2024 · Jeff Ondich 
CS 341: History of Computing in England Program: Cryptography
Modern cryptographic systems allow parties to communicate in a secure way, even if they don’t trust the channels over which they are communicating (or maybe even each other). Cryptography is at the heart of a huge range of applications: online banking and shopping, passwordprotected computer accounts, and secure wireless networks, to name just a few. In this course, we will introduce and explore some fundamental cryptographic primitives. Topics will include publickey encryption, digital signatures, codebreaking techniques (like those used at Bletchley Park during WWII to break the Enigma machine’s cryptosystem), pseudorandom number generation, and other cryptographic applications. Prerequisites:Acceptance in the Carleton OCS History of Computing in England program.
6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; not offered 2024–2025 
CS 344: HumanComputer Interaction
The field of humancomputer interaction addresses two fundamental questions: how do people interact with technology, and how can technology enhance the human experience? In this course, we will explore technology through the lens of the end user: how can we design effective, aesthetically pleasing technology, particularly user interfaces, to satisfy user needs and improve the human condition? How do people react to technology and learn to use technology? What are the social, societal, health, and ethical implications of technology? The course will focus on design methodologies, techniques, and processes for developing, testing, and deploying user interfaces. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; offered Winter 2025 · Jean Salac 
CS 347: Advanced Software Design
This course helps students to strengthen their ability to design modular, extensible and maintainable software. The focus of the course is on the design of modern cloud applications. Students will learn how to decompose complex applications into a set of backend services, develop and debug these services, and deploy them in the cloud. This class is structured around a large project that will be extended over the course of the term. Prerequisites:Student has completed any of the following course(s): CS – 257 – Software Design with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; offered Spring 2025 · Jeff Ondich 
CS 348: Parallel and Distributed Computing
As multicore machines become more prevalent, different programming paradigms have emerged for harnessing extra processors for better performance. This course explores parallel computation for both shared memory and distributed parallel programming paradigms. In particular, we will explore how these paradigms affect the code we write, the libraries we use, and the advantages and disadvantages of each. Topics will include synchronization primitives across these models for parallel execution, debugging concurrent programs, fork/join parallelism, example parallel algorithms, computational complexity and performance considerations, computer architecture as it relates to parallel computation, and related theory topics. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; offered Spring 2025 · David Musicant 
CS 352: Advanced Algorithms
A second course on designing and analyzing efficient algorithms to solve computational problems. We will survey some algorithmic design techniques that apply broadly throughout computer science, including discussion of wideranging applications. A sampling of potential topics: approximation algorithms (can we efficiently compute nearoptimal solutions even when finding exact solutions is computationally intractable?); randomized algorithms (does flipping coins help in designing faster/simpler algorithms?); online algorithms (how do we analyze an algorithm that needs to make decisions before the entire input arrives?); advanced data structures; complexity theory. As time and interest permit, we will mix recently published algorithmic papers with classical results. Prerequisites:Student has completed any of the following course(s): CS – 252 – Algorithms with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; not offered 2024–2025 
CS 358: Quantum Computing
Quantum computing is a promising technology that may (or may not) revolutionize computer science over the next few decades. By exploiting quantum phenomena such as superposition and entanglement, quantum computers can solve problems in a fundamentally different way from that of conventional computers. This course surveys the computer science and mathematics of quantum algorithms, including Shor’s and Grover’s algorithms, error correction, and cryptography. No prior experience with quantum theory is needed. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures AND MATH 134 – Linear Algebra with Applications or MATH 232 – Linear Algebra AND CS 202 – Math of Computer Science (MATH 236 will be accepted in lieu of CS 202) with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; not offered 2024–2025 
CS 361: Artificial Life and Digital Evolution
The field of artificial life seeks to understand the dynamics of life by separating them from the substrate of DNA. In this course, we will explore how we can implement the dynamics of life in software to test and generate biological hypotheses, with a particular focus on evolution. Topics will include the basic principles of biological evolution, transferring experimental evolution techniques to computational systems, cellular automata, computational modeling, and digital evolution. All students will be expected to complete and present a term research project recreating and extending recent work in the field of artificial life. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning; offered Spring 2025 · Anya Vostinar 
CS 362: Computational Biology
Recent advances in highthroughput experimental techniques have revolutionized how biologists measure DNA, RNA and protein. The size and complexity of the resulting datasets have led to a new era where computational methods are essential to answering important biological questions. This course focuses on the process of transforming biological problems into well formed computational questions and the algorithms to solve them. Topics include approaches to sequence comparison and alignment; molecular evolution and phylogenetics; DNA/RNA sequencing and assembly; and specific disease applications including cancer genomics. Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures AND CS 202 – Mathematics of Computer Science or MATH 236 – Mathematical Structures with a grade of C or better or equivalent. MATH 236 will be accepted in lieu of Computer Science 202.
6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; not offered 2024–2025 
CS 364: Computational Modeling and Simulation of Natural Systems
Computational models have become a fundamental part of how we make sense of the world, doing everything from economic forecasting to simulating the birth of the universe. But we need to understand how to use models effectively. In this class we’ll explore computational models used across many disciplines, including: agentbased models to prevent forest fires, compartmental models to protect endangered species, Nbody models to track the spread of germs from a sneeze, and more. We’ll learn about what problems are (and are not) suited for computational modeling and engage with extensive datasets to evaluate and refine models for practical use.
Prerequisites:Student has completed any of the following course(s): CS 200 – Data Structures with Problem Solving or CS 201 – Data Structures with a grade of C or better or equivalent.
6 credits; FSR, Formal or Statistical Reasoning, QRE, Quantitative Reasoning; offered Fall 2024 · Tom Finzell 
CS 394: Directed Research in Computer Science
Students work on a research project related to a faculty member's research interests, and directed by that faculty member. Student activities vary according to the field and stage of the project. The longrun goal of these projects normally includes dissemination to a scholarly community beyond Carleton. The faculty member will meet regularly with the student and actively direct the work of the student, who will submit an endofterm product, typically a paper or presentation.
1 – 6 credit; No Exploration; not offered 2024–2025 
CS 399: Senior Seminar
As part of their senior capstone experience, majors will work together in small teams on facultyspecified topics to design and implement the first stage of a project. Required of all senior majors. Students are strongly encouraged to complete CS 252 and CS 257 before starting CS 399.
Prerequisites:Student is a Computer Science major and has senior priority.
3 credits; S/CR/NC; No Exploration; offered Fall 2024 · Anna Rafferty, Jeff Ondich, Tanya Amert, David Musicant, Eric Alexander, Layla Oesper