A student looks at a computer screen

Computer Science studies computational structures and processes that appear throughout the natural and human world, lending insight into the functioning of our brains, ways people form communities, and many other questions across disciplines. Computer Science at Carleton provides creative problem solving balanced with theoretical study and practical application creating useful software tools.

    A student looks at a computer screen

    About Computer Science

    Computer Science studies the computational structures and processes that appear throughout the natural and human worlds. The study of those processes (known as algorithms) can lend insight into the functioning of our brains, the structure of our genes, the mechanisms by which people form communities, and many other questions in a wide range of disciplines. At the same time, an understanding of algorithms and the structure of data can help us create a tremendous variety of useful software tools. Carleton’s computer science curriculum is designed to provide students with a balance between theoretical study and the practical application of theory to the design and construction of software.

    Since computer science plays a key role in our world, we recommend Introduction to Computer Science (CS 111: Introduction to Computer Science) for all Carleton students.

    Those who choose to major in computer science find many opportunities following graduation. Carleton Computer Science graduates who pursue employment in the computing industry find jobs in many different roles and at a wide variety of companies. In addition to graduate programs in computer science, Carleton CS majors seeking further education have pursued graduate study in areas such as bioinformatics, linguistics, cognitive science, and law.

    Requirements for the Computer Science Major

    Major Requirements – 72 Total Credits

    Core Courses – 54 Credits

    • MATH 111: Introduction to Calculus
    • CS 111: Introduction to Computer Science
    • CS 201: Data Structures
      OR CS 200: Data Structures with Problem Solving
    • CS 202: Mathematics of Computer Science
      OR MATH 236: Mathematical Structures
    • CS 208: Introduction to Computer Systems
    • CS 251: Programming Languages: Design and Implementation
    • CS 252: Algorithms
    • CS 254: Computability and Complexity
    • CS 257: Software Design

    Elective Course – Required 6 credits

    Courses numbered 200 or above (excluding independent study, senior seminar and comps). Occasionally courses outside the CS department may count towards this requirements; a list is maintained on the CS Department website of any such courses. If more than one junior seminar course is taken, the second junior seminar course may count towards the elective requirement.

    • ARTS 220*: Art, Interactivity, and Microcontrollers (*=Junior Seminar)
    • CS 220: Art, Interactivity, and Microcontrollers (not offered 2025-26)
    • CS 220*: Art, Interactivity, and Microcontrollers (*=Junior Seminar)
    • CS 301: History of Computing in England Program: History of Computing
    • CS 302*: The Why Behind Everyday Technologies (*=Junior Seminar)
    • CS 304: Social Computing (not offered 2025-26)
    • CS 311: Computer Graphics (not offered 2025-26)
    • CS 314: Data Visualization (not offered 2025-26)
    • CS 314*: Data Visualization (*=Junior Seminar)
    • CS 320: Machine Learning
    • CS 321: Making Decisions with Artificial Intelligence (not offered 2025-26)
    • CS 322: Natural Language Processing
    • CS 327*: Introduction to Robotics (*=Junior Seminar)
    • CS 330: Introduction to Real-Time Systems (not offered 2025-26)
    • CS 331: Computer Networks (not offered 2025-26)
    • CS 331*: Computer Networks (*=Junior Seminar)
    • CS 332: Operating Systems (not offered 2025-26)
    • CS 332*: Operating Systems (*=Junior Seminar) (not offered 2025-26)
    • CS 334: Database Systems
    • CS 338: Computer Security
    • CS 341: History of Computing in England Program: Cryptography
    • CS 344: Human-Computer Interaction
    • CS 347: Advanced Software Design (not offered 2025-26)
    • CS 348: Parallel and Distributed Computing (not offered 2025-26)
    • CS 361: Artificial Life and Digital Evolution (not offered 2025-26)
    • CS 361*: Artificial Life and Digital Evolution (*=Junior Seminar) (not offered 2025-26)
    • CS 362: Computational Biology
    • CS 364: Computational Modeling and Simulation of Natural Systems (not offered 2025-26)
    • DGAH 220: Creative Coding and Generative AI (not offered 2025-26)
    • ECON 285: Computational Economics (not offered 2025-26)
    • MATH 271: Optimization
    • PHYS 343: Electronics and Lab

    Junior Seminar Course – Required 6 credits

    A junior seminar course that emphasizes technical communication. Seminars are offered on a variety of topics, changing from year to year. Each seminar may emphasize a slightly different facet of technical communication, including but not limited to technical writing, oral presentation, and/or writing of design documents, and all will provide opportunities for students to get individualized feedback to improve their communication skills. Ideally, you should complete this seminar course in your junior year, helping you to prepare for comps. Junior Seminar courses are marked with an asterisk (*) at the end of the course number.

    • ARTS 220*: Art, Interactivity, and Microcontrollers (*=Junior Seminar)
    • CS 220*: Art, Interactivity, and Microcontrollers (*=Junior Seminar)
    • CS 302*: The Why Behind Everyday Technologies (*=Junior Seminar)
    • CS 314*: Data Visualization (*=Junior Seminar)
    • CS 327*: Introduction to Robotics (*=Junior Seminar)
    • CS 331*: Computer Networks (*=Junior Seminar)
    • CS 332*: Operating Systems (*=Junior Seminar) (not offered 2025-26)
    • CS 361*: Artificial Life and Digital Evolution (*=Junior Seminar) (not offered 2025-26)

    Senior Capstone Seminar and Integrative Exercise – Required 6 credits

    Majors must complete a capstone experience (CS 399: Senior Seminar and CS 400: Integrative Exercise) during the senior year. The student will participate on a small team of students working on a faculty-specified project.

    Additional Departmental Notes

    Potential majors should take Computer Science 111, Mathematics 111, and at least one of Computer Science 200, 201 and 202 by the end of the sophomore year.

    Although only one mathematics course is required for the CS major, we encourage our students to take mathematics and statistics courses beyond Mathematics 111. Students contemplating graduate study should consider taking the full Calculus sequence plus Statistics 120 and Mathematics 232, and additional computer science electives. Those interested in computer engineering should consider taking physics courses through Electricity & Magnetism and Electronics.

    Under certain circumstances, the CS department offers exceptions to the stipulated academic requirements. More information can be found at Computer Science Department Exceptions and Clarifications.

    Computer Science Courses

    • 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 object-oriented design. No previous programming experience is necessary.

    • 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.

    • 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.

    • 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.

    • 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.

    • CS 220 Art, Interactivity, and Microcontrollers

      In this hands-on 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 campus-wide exhibition. No prior building experience is required. Not open to students who have taken previous offering of Art, Interactivity and Robotics.

      Not offered in 2025-26

    • CS 220* Art, Interactivity, and Microcontrollers (*=Junior Seminar)

      In this hands-on 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, we bring together sculpture, engineering, computer science, and aesthetic design. Students engage the nuts and bolts of fabrication, learn to program microcontrollers, and study the design of interactive constructions. Additionally, students will deliver technical presentations describing their work and receive feedback for improvement. Collaborative labs and individual projects culminate in a campus-wide exhibition. No prior building experience is required.

      ARTS 220* is cross listed with CS 220*.

    • 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.

    • 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.

    • 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 finite-state automata, pushdown automata, and Turing machines; formal languages, including regular expressions and context-free grammars; computability and uncomputability; and computational complexity, particularly NP-completeness.

    • 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 medium-sized programming projects, we will investigate code construction techniques, debugging and profiling tools, testing methodologies, UML, principles of object-oriented design, design patterns, and user interface design.

    • 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 long-run 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 end-of-term product, typically a paper or presentation.

    • CS 301 History of Computing in England Program: History of Computing

      In the mid-1800s, 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 WWII-era code-breaking 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.

    • CS 302* The Why Behind Everyday Technologies (*=Junior Seminar)

      What makes computers computers? Are computers defined by their existing functionalities, future capabilities, individual components, or something else? Are there inherent risks to the technologies we surround ourselves with, and are there ways we can mitigate those risks to live happier lives? How do we arrive at a β€˜true’ interpretation of data, and does its presentation and visualization matter?

      By peering into the black-box of everyday technologies alongside the philosophical discussions they engender, we will investigate the fundamental questions computing technologies and its mind-bending pace of advancement are posing in our lives, communities, and society. Technical communication is emphasized through student-led discussions, project pages for written and visual communication, and presentations.

    • 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 socio-technical 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.

      Not offered in 2025-26

    • CS 311 Computer Graphics

      Scientific simulations, movies, and video games often incorporate computer-generated 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 trade-offs come into play? In this course we learn the basic theory and methodology of three-dimensional computer graphics, including both triangle rasterization and ray tracing.Β Familiarity with vectors and matrices is recommended but not required.

      Not offered in 2025-26

    • CS 314 Data Visualization

      Though the wealth of data surrounding us can be overwhelming, we have evolved incredible tools for finding patterns in large amounts of information: our eyes! Data visualization is concerned with turning information into pictures to better communicate patterns or discover new insights, drawing from computer graphics, human-computer interaction, design, and perceptual psychology. In this course, we will learn 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.

      Not offered in 2025-26

    • CS 314* Data Visualization (*=Junior Seminar)

      Though the wealth of data surrounding us can be overwhelming, we have evolved incredible tools for finding patterns in large amounts of information: our eyes! Data visualization is concerned with turning information into pictures to better communicate patterns or discover new insights, drawing from computer graphics, human-computer interaction, design, and perceptual psychology. In this junior seminar, we will learn different ways in which data can be expressed visually and which methods work best for which tasks, with a particular focus on technical communication. Using this knowledge, we will critique existing visualizations as well as design and build new ones.

    • 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 intelligence-related 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.

    • 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 search-and-rescue 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.

      Not offered in 2025-26

    • CS 322 Natural Language Processing

      Advances like deep learning and large language models have led to computer programs that seem to converse intelligently with people. But how do these programs work, and do they really understand language? In this course, we’ll explore techniques that aim to enable computers to interpret and respond appropriately to ideas expressed using natural languages (such as Chinese or English) as opposed to formal languages (such as Python or C). Topics may include classical and modern approaches, and varying applications, such as machine translation, semantic analysis, and question answering.

    • CS 327* Introduction to Robotics (*=Junior Seminar)

      Have you ever wondered how a robotic vacuum is able to navigate back to its charger after cleaning? In this course we will explore concepts of robotic systems including: kinematics, sensors and perception, path planning, and control. In addition to learning the theory behind these topics, students will have the opportunity to design, program, and deploy behaviors for a mobile robot. This course emphasizes technical communication, including both writing and speaking components.

    • CS 330 Introduction to Real-Time 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 real-time 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.

      Not offered in 2025-26

      • 6
      • FSR, Formal or Statistical Reasoning
      • Student has completed any of the following course(s): CS 200 with a grade of C- or better or CS 201 with a grade of C- or better or received a Carleton Computer Science 200 Requisite Equivalency AND CS 202 with a grade of C- or better or received a Carleton Computer Science 202 Requisite Equivalency or MATH 236 with a grade of C- or better or received a Carleton Math 236 Requisite Equivalency. MATH 236 will be accepted in lieu of CS 202.

      • CL: 300 level CS Major Electives
    • CS 331 Computer Networks

      The Internet is composed of a large number of heterogeneous, independently-operating computer networks that work together to transport data all over the world. The fact that it does this so well given its complexity is a minor miracle.Β We’ll study the structure of these individual networks, of smaller-scale local networks, and of the Internet, and learn how this β€œmagic” takes place. Topics include protocols, routing, security, network architecture, and performance measurement along with economic, ethical, and privacy issues.

      Not offered in 2025-26

      • 6
      • FSR, Formal or Statistical Reasoning
      • Student has completed any of the following course(s): CS 200 or CS 201 with a grade of C- or better or received a Carleton Computer Science 201 or better Requisite Equivalency. Not open to students who have previously taken CS 331* (*=Junior Seminar).

      • CL: 300 level CS Major Electives
    • CS 331* Computer Networks (*=Junior Seminar)

      The Internet is composed of a large number of heterogeneous, independently-operating computer networks that work together to transport data all over the world. The fact that it does this so well given its complexity is a minor miracle. We’ll study the structure of these individual networks, of smaller-scale local networks, and of the Internet, and learn how this β€œmagic” takes place. Topics include protocols, routing, security, network architecture, and performance measurement along with economic, ethical, and privacy issues. Students will develop technical communication skills in writing and oral presentations through several network analysis projects.

    • CS 332 Operating Systems

      While you use a lab machine to write a program and browse online documentation, the computer clock ticks, a program keeps watch for incoming e-mail, and other users can log on from elsewhere in the network. 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.

      Not offered in 2025-26

      • 6
      • FSR, Formal or Statistical Reasoning
      • Student has completed any of the following course(s): CS 200 or CS 201 with a grade of C- or better or received a Carleton Computer Science 201 or better Requisite Equivalency AND CS 208 with a grade of C- or better. Not open to students who have taken CS 332* (*=Junior Seminar).

      • CL: 300 level CS Major Electives
    • CS 332* Operating Systems (*=Junior Seminar)

      While you use a lab machine to write a program and browse online documentation, the computer clock ticks, a program keeps watch for incoming e-mail, and other users can log on from elsewhere in the network. 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. In addition to implementing kernel fundamentals, students will engage in technical communication such as writing and evaluating design documents and presenting project or research paper summaries.

      Not offered in 2025-26

    • CS 334 Database Systems

      Database systems are used in almost every aspect of computing, including managing data for websites and apps, but also large-scale data science archives. Why, and how? This course takes a multi-pronged approach. From a systems perspective, we will look at the low-level 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.

    • CS 338 Computer Security

      When hackers can disable gas pipelines, national hospital systems, and electrical grids, and data brokers can create a largely unregulated world-wide 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 security-related law.

    • 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, password-protected 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 public-key encryption, digital signatures, code-breaking techniques (like those used at Bletchley Park during WWII to break the Enigma machine’s cryptosystem), pseudorandom number generation, and other cryptographic applications.

    • CS 344 Human-Computer Interaction

      The field of human-computer 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.

    • 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 back-end 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.

      Not offered in 2025-26

    • CS 348 Parallel and Distributed Computing

      As multi-core 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.

      Not offered in 2025-26

    • 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.

      Not offered in 2025-26

    • CS 361* Artificial Life and Digital Evolution (*=Junior Seminar)

      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. Students will develop technical communication skills in writing and user interface design through several projects aimed at explaining science to public and scientific audiences.

      Not offered in 2025-26

    • CS 362 Computational Biology

      Recent advances in high-throughput 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.

    • 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: agent-based models to prevent forest fires, compartmental models to protect endangered species, N-body 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.

      Not offered in 2025-26

    • 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 long-run 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 end-of-term product, typically a paper or presentation.

    • CS 399 Senior Seminar

      As part of their senior capstone experience, majors will work together in small teams on faculty-specified 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.

    • CS 400 Integrative Exercise

      Beginning with the prototypes developed in the Senior Seminar (CS 399), project teams will complete their project and present it to the department. Required of all senior majors. Each CS 400 is paired with a particular section of CS 399, and the prerequisite for CS 400 must be filled by satisfactory completion of that CS 399.