My Bowdoin Courses


CSCI 3210: Computational Game Theory

Advanced algorithms course with a focus on game theory. Topics include non-cooperative and cooperative games, linear programming, network flow, computational complexity, explainable AI (XAI), graphical games, and computational social choice. Game theory, also known as the mathematical theory of strategic interactions, rose to prominence due to its applicability to a variety of strategic scenarios ranging from markets and auctions to kidney exchanges to social influence. These scenarios often involve complex interactions in large-scale systems, giving rise to many computational questions, including: how algorithms for certain games are devised; how local interactions lead to global outcomes; how individual choices, such as selfishness, impact outcomes. Most questions will be addressed theoretically, some by programming.

DCS 3350: Contagion

Project-based advanced networks course. Investigates how the historic perspective of contagion has inspired its expansive contemporary view, ranging from interventions in epidemics to diffusion in social networks to network effects on our behavioral aspects like smoking, obesity, and happiness. Studies various network models and their properties. Programming projects involve implementation of network models and applying these models to large-scale real-world networks with millions of agents, with a particular focus on critically assessing the models and algorithms using computational thinking. Projects also involve creating computer simulations to study models of residential segregation by race. Takes a critical view of the implications of various predictive algorithms, including techniques for disease prediction.

CSCI/DCS 2350: Social and Economic Networks

Examines the social and economic aspects of today's connected world from a multitude of perspectives; namely, network science, computer science, sociology, and economics. The fundamental questions to be addressed are: What are the properties of real-world networks? What are the effects of networks on our behavioral choices like quitting smoking or eating healthy? How do cascades in networks lead to outcomes like videos going viral? How does Google search the Internet and make money doing so? Debates issues around centrality in networks. Uses game theory to study strategic interactions in networks and markets.

DCS 1500: Understanding and Deploying Computational Methods

Computational tools, including programming, are increasingly important across the liberal arts. Such tools, however, cannot be effectively created or used without a fundamental understanding of computation. This course provides a foundation for the use of these tools in conjunction with the critical framework of DCS. A major goal of the course is to teach introductory programming in Python and R, but with a focus on how programming can be used to complement and even to implement methodologies including text analysis, network analysis, and visualization. Students will use these methods in the service of critically engaging with data. E.g., where computer science focuses mainly on problem solving, this course is fundamentally about exploration and often problem discovery. No prior programming knowledge is required.

CSCI 2320: Principles of Programming Languages

Studies design principles and paradigms of programming languages. Different paradigms of languages correspond to distinct ways of thinking about problem solving. For example, functional languages (such as Haskell) focus attention on the behavioral aspects of a problem; object-oriented languages (such as Ruby) focus attention on data--how to model and manipulate it. Despite their differences, a common set of principles often guide language design. Covers principles of language design and implementation including syntax, semantics, type systems, control structures, and compilers. Also covers various paradigms of languages including imperative, object-oriented, web, and functional languages. (Prerequisite: C programming.)

DCS 1100: Intro to Digital & Computational Studies (DCS)

This course is about computation within the broader socio-cultural context. We learn Python, ArcGIS, and Gephi with the goal of addressing critical questions like how humans create new knowledge, how they express themselves, how they interact, and how new technologies influence the kinds of questions they can ask about the world around them.

CSCI 1101: Introduction to Computer Science

This course is about computational thinking and an invitation to computer science. It gives an introduction to computer science with a focus on algorithmic problem solving using Python as the main tool.

If Winter comes, can Spring be far behind? -- Percy Bysshe Shelley