Fall 2022

  • CS 100: The Internet: Protocols, Platforms, and People

    The internet is an essential technology that touches virtually every aspect of our lives. Since its introduction in the early 80s, it has grown widely and transformed how we work, learn, and communicate. How does this critical piece of global infrastructure work, and how is it governed? What implications did its arrival have on how we interact with one another and participate in society? In this course, we will explore topics related to the structure and origins of the internet, the legal frameworks and business models that shape how we experience it, its transformation of the public sphere, and its potential to both reduce and exacerbate inequalities.

    6 credits; Argument and Inquiry Seminar, Writing Requirement; offered Fall 2022 · Sneha Narayan
  • 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. Students who have received credit for Computer Science 201 or above are not eligible to enroll in Computer Science 111.

    6 credits; Formal or Statistical Reasoning, Quantitative Reasoning Encounter; offered Fall 2022, Winter 2023, Spring 2023 · David Musicant, Anya Vostinar, Richard Wells, Sneha Narayan, Amy Csizmar Dalal
  • 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: Computer Science 111 or instructor permission 6 credits; Formal or Statistical Reasoning, Quantitative Reasoning Encounter; offered Fall 2022, Winter 2023, Spring 2023 · Richard Wells, Kiran Tomlinson
  • 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: Computer Science 111 and Mathematics 111 or instructor permission 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Eric Alexander, Kiran Tomlinson
  • 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: Computer Science 201 or instructor permission 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023 · Anna Rafferty, David Musicant
  • 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: Computer Science 201 and Computer Science 202 (Mathematics 236 will be accepted in lieu of Computer Science 202) 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Jeffrey Ondich, 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 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.

    Prerequisites: Computer Science 201 and Computer Science 202 (Mathematics 236 will be accepted in lieu of Computer Science 202) 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Josh Davis, Anna Rafferty
  • 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. Prerequisites: Computer Science 201 or instructor permission 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Jeffrey Ondich, Amy Csizmar Dalal
  • CS 294: CS Tea Colloquium

    Students earn credit by attending at least five of the research-based events in the Computer Science department’s weekly colloquium series. Speakers come from academia, industry, nonprofits, and government, and present on a variety of topics, within and adjacent to computer science. Students will submit brief written reports after each talk that they attend.

    Prerequisites: At least one CS course (concurrent enrollment is allowed) 1 credit; S/CR/NC; Does not fulfill a curricular exploration requirement; offered Fall 2022, Winter 2023, Spring 2023 · Anna Rafferty
  • CS 298: Reading and Analysis Associated with External Computing Experience

    An independent study course intended for students who require Curricular Practical Training (CPT) or Optional Practical Training (OPT) to go with an external activity related to computer science (for example, an internship or an externship). The student will choose and read academic material relating to a practical experience (e.g., internship), and write a paper describing what the student learned from the reading, and how it related to the practical experience.

    Prerequisites: Instructor’s permission 1 credit; S/CR/NC; Does not fulfill a curricular exploration requirement; offered Fall 2022, Winter 2023, Spring 2023 · Eric Alexander
  • 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, matrices, and the C programming language is recommended but not required.

    Prerequisites: Computer Science 201 6 credits; Quantitative Reasoning Encounter, Formal or Statistical Reasoning; offered Fall 2022 · Josh Davis
  • 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: Computer Science 201 6 credits; Formal or Statistical Reasoning; offered Fall 2022 · Anya Vostinar
  • CS 399: Senior Seminar

    As part of their senior capstone experience, majors will work together in teams (typically four to seven students per team) on faculty-specified topics to design and implement the first stage of a project. Required of all senior majors.

    Prerequisites: Senior standing. Students are strongly encouraged to complete Computer Science 252 and Computer Science 257 before starting Computer Science 399. 3 credits; S/CR/NC; Does not fulfill a curricular exploration requirement; offered Fall 2022, Winter 2023 · Amy Csizmar Dalal, Sneha Narayan, Eric Alexander, Anna Rafferty, Jeffrey Ondich
  • CS 400: Integrative Exercise

    Beginning with the prototypes developed in the Senior Seminar, project teams will complete their project and present it to the department. Required of all senior majors. Prerequisites: Computer Science 399 3 credits; S/NC; offered Fall 2022, Fall 2022, Winter 2023, Winter 2023 · Jeffrey Ondich, Anna Rafferty, Amy Csizmar Dalal, Sneha Narayan, Eric Alexander
  • CS 400: Integrative Exercise

    Beginning with the prototypes developed in the Senior Seminar, project teams will complete their project and present it to the department. Required of all senior majors. Prerequisites: Computer Science 399 3 credits; S/NC; offered Fall 2022, Fall 2022, Winter 2023, Winter 2023 · Jeffrey Ondich, Anna Rafferty, Amy Csizmar Dalal, Sneha Narayan, Eric Alexander

Winter 2023

  • 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. Students who have received credit for Computer Science 201 or above are not eligible to enroll in Computer Science 111.

    6 credits; Formal or Statistical Reasoning, Quantitative Reasoning Encounter; offered Fall 2022, Winter 2023, Spring 2023 · David Musicant, Anya Vostinar, Richard Wells, Sneha Narayan, Amy Csizmar Dalal
  • 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: Computer Science 111 or instructor permission 6 credits; Formal or Statistical Reasoning, Quantitative Reasoning Encounter; offered Fall 2022, Winter 2023, Spring 2023 · Richard Wells, Kiran Tomlinson
  • 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: Computer Science 111 and Mathematics 111 or instructor permission 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Eric Alexander, Kiran Tomlinson
  • 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: Computer Science 201 or instructor permission 6 credits; Formal or Statistical Reasoning; offered Winter 2023, Spring 2023 · Jeffrey Ondich
  • 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: Computer Science 201 or instructor permission 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023 · Anna Rafferty, David Musicant
  • 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: Computer Science 201 and Computer Science 202 (Mathematics 236 will be accepted in lieu of Computer Science 202) 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Jeffrey Ondich, 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 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.

    Prerequisites: Computer Science 201 and Computer Science 202 (Mathematics 236 will be accepted in lieu of Computer Science 202) 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Josh Davis, Anna Rafferty
  • 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. Prerequisites: Computer Science 201 or instructor permission 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Jeffrey Ondich, Amy Csizmar Dalal
  • CS 294: CS Tea Colloquium

    Students earn credit by attending at least five of the research-based events in the Computer Science department’s weekly colloquium series. Speakers come from academia, industry, nonprofits, and government, and present on a variety of topics, within and adjacent to computer science. Students will submit brief written reports after each talk that they attend.

    Prerequisites: At least one CS course (concurrent enrollment is allowed) 1 credit; S/CR/NC; Does not fulfill a curricular exploration requirement; offered Fall 2022, Winter 2023, Spring 2023 · Anna Rafferty
  • CS 298: Reading and Analysis Associated with External Computing Experience

    An independent study course intended for students who require Curricular Practical Training (CPT) or Optional Practical Training (OPT) to go with an external activity related to computer science (for example, an internship or an externship). The student will choose and read academic material relating to a practical experience (e.g., internship), and write a paper describing what the student learned from the reading, and how it related to the practical experience.

    Prerequisites: Instructor’s permission 1 credit; S/CR/NC; Does not fulfill a curricular exploration requirement; offered Fall 2022, Winter 2023, Spring 2023 · Eric Alexander
  • 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.

    Prerequisites: Computer Science 201. Additionally Computer Science 202 is strongly recommended. 6 credits; Formal or Statistical Reasoning; offered Winter 2023, Spring 2023 · David Musicant
  • 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.

    Prerequisites: Computer Science 201 6 credits; Formal or Statistical Reasoning; offered Winter 2023 · Kent Lee
  • CS 399: Senior Seminar

    As part of their senior capstone experience, majors will work together in teams (typically four to seven students per team) on faculty-specified topics to design and implement the first stage of a project. Required of all senior majors.

    Prerequisites: Senior standing. Students are strongly encouraged to complete Computer Science 252 and Computer Science 257 before starting Computer Science 399. 3 credits; S/CR/NC; Does not fulfill a curricular exploration requirement; offered Fall 2022, Winter 2023 · Amy Csizmar Dalal, Sneha Narayan, Eric Alexander, Anna Rafferty, Jeffrey Ondich
  • CS 400: Integrative Exercise

    Beginning with the prototypes developed in the Senior Seminar, project teams will complete their project and present it to the department. Required of all senior majors. Prerequisites: Computer Science 399 3 credits; S/NC; offered Fall 2022, Fall 2022, Winter 2023, Winter 2023 · Jeffrey Ondich, Anna Rafferty, Amy Csizmar Dalal, Sneha Narayan, Eric Alexander
  • CS 400: Integrative Exercise

    Beginning with the prototypes developed in the Senior Seminar, project teams will complete their project and present it to the department. Required of all senior majors. Prerequisites: Computer Science 399 3 credits; S/NC; offered Fall 2022, Fall 2022, Winter 2023, Winter 2023 · Jeffrey Ondich, Anna Rafferty, Amy Csizmar Dalal, Sneha Narayan, Eric Alexander

Spring 2023

  • 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. Students who have received credit for Computer Science 201 or above are not eligible to enroll in Computer Science 111.

    6 credits; Formal or Statistical Reasoning, Quantitative Reasoning Encounter; offered Fall 2022, Winter 2023, Spring 2023 · David Musicant, Anya Vostinar, Richard Wells, Sneha Narayan, Amy Csizmar Dalal
  • 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: Computer Science 111 or instructor permission 6 credits; Formal or Statistical Reasoning, Quantitative Reasoning Encounter; offered Fall 2022, Winter 2023, Spring 2023 · Richard Wells, Kiran Tomlinson
  • 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: Computer Science 111 and Mathematics 111 or instructor permission 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Eric Alexander, Kiran Tomlinson
  • 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: Computer Science 201 or instructor permission 6 credits; Formal or Statistical Reasoning; offered Winter 2023, Spring 2023 · Jeffrey Ondich
  • 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: Computer Science 201 and Computer Science 202 (Mathematics 236 will be accepted in lieu of Computer Science 202) 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Jeffrey Ondich, 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 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.

    Prerequisites: Computer Science 201 and Computer Science 202 (Mathematics 236 will be accepted in lieu of Computer Science 202) 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Josh Davis, Anna Rafferty
  • 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. Prerequisites: Computer Science 201 or instructor permission 6 credits; Formal or Statistical Reasoning; offered Fall 2022, Winter 2023, Spring 2023 · Jeffrey Ondich, Amy Csizmar Dalal
  • CS 294: CS Tea Colloquium

    Students earn credit by attending at least five of the research-based events in the Computer Science department’s weekly colloquium series. Speakers come from academia, industry, nonprofits, and government, and present on a variety of topics, within and adjacent to computer science. Students will submit brief written reports after each talk that they attend.

    Prerequisites: At least one CS course (concurrent enrollment is allowed) 1 credit; S/CR/NC; Does not fulfill a curricular exploration requirement; offered Fall 2022, Winter 2023, Spring 2023 · Anna Rafferty
  • CS 298: Reading and Analysis Associated with External Computing Experience

    An independent study course intended for students who require Curricular Practical Training (CPT) or Optional Practical Training (OPT) to go with an external activity related to computer science (for example, an internship or an externship). The student will choose and read academic material relating to a practical experience (e.g., internship), and write a paper describing what the student learned from the reading, and how it related to the practical experience.

    Prerequisites: Instructor’s permission 1 credit; S/CR/NC; Does not fulfill a curricular exploration requirement; offered Fall 2022, Winter 2023, Spring 2023 · Eric Alexander
  • 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.

    Prerequisites: Computer Science 201 6 credits; Formal or Statistical Reasoning, Quantitative Reasoning Encounter; offered Spring 2023 · Sneha Narayan
  • 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, human-computer 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: Computer Science 201 6 credits; Formal or Statistical Reasoning, Quantitative Reasoning Encounter; offered Spring 2023 · Eric Alexander
  • 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.

    Prerequisites: Computer Science 201. Additionally Computer Science 202 is strongly recommended. 6 credits; Formal or Statistical Reasoning; offered Winter 2023, Spring 2023 · David Musicant