What is computer science? Ask a hundred computer scientists, and you will likely receive a hundred different answers. One possible, fairly succinct answer is that computer science is the study of algorithms: step-by-step procedures for accomplishing tasks formalized into very precise, atomic (indivisible) instructions. An algorithm should allow a task to be accomplished by someone who—or something that—does not even understand the task. In other words, it is a recipe for an automated solution to a problem. Computers are tools for executing algorithms. (Not that long ago, a “computer” referred to a person who computed!)
Computer Science 2024-2025 Courses
Introduction to Computer Science: The Way of the Program
Open, Small Lecture—Fall | 5 credits
COMP 2012
This lecture course is a rigorous introduction to computer science and the art of computer programming using the elegant, eminently practical, yet easy-to-learn programming language Python. We will learn the principles of problem-solving with a computer while also gaining the programming skills necessary for further study in the discipline. We will emphasize the power of abstraction and the benefits of clearly written, well-structured programs, beginning with imperative programming and working our way up to object-oriented concepts such as classes, methods, and inheritance. Along the way, we will explore the fundamental idea of an algorithm; how computers represent and manipulate numbers, text, and other data (such as images and sound) in binary; Boolean logic; conditional, iterative, and recursive programming; functional abstraction; file processing; and basic data structures such as lists and dictionaries. We will also learn introductory computer graphics, how to process simple user interactions via mouse and keyboard, and some principles of game design and implementation. All students will complete a final programming project of their own design. Weekly hands-on laboratory sessions will reinforce the concepts covered in class through extensive practice at the computer.
Faculty
Privacy, Technology, and the Law
Open, Seminar—Fall | 5 credits
COMP 3207
What do Bitcoin, ChatGPT, self-driving vehicles, and Zoom have in common? The answer lies in this course, which focuses on how a few digital technologies are dramatically altering daily life. In this course, we will develop a series of core principles that attempt to explain the rapid change and to forge a reasoned path into the future. We will begin with a brief history of privacy, private property, and privacy law. Two examples of early 20th-century technologies that required legal thinking to evolve: whether a pilot (and passengers) of a plane are trespassing when the plane flies over someone's backyard and whether the police can listen to a phone call from a phonebooth (remember those?) without a warrant. Quickly, we will arrive in the age of information and can update those conundrums: A drone flies by with an infrared camera. A copyrighted video is viewed on YouTube via public WiFi. A hateful comment is posted on Reddit. A playful TikTok is taken out of context and goes viral for all to see. An illicit transaction involving Bitcoin is made between seemingly anonymous parties via Venmo. A famous musician infuriates his or her fanbase by releasing a song supporting an authoritarian politician—but it turns out to be a deepfake. A core tension in the course is whether and how the Internet should be regulated and how to strike a balance among privacy, security, and free speech. We will consider major US Supreme Court cases that chart slow-motion government reaction to the high-speed change of today’s wired world.
Faculty
Computer Networks
Open, Seminar—Fall | 5 credits
COMP 3065
Note: There is no formal prerequisite for this course, but the content is technical in nature. Registration interviews are required.
This course is a rigorous introduction to digital communication networks from a liberal-arts perspective. The main question that we will address is how information of all kinds can be transmitted efficiently, between two points at a distance, in such a way that very little assumption need be made about the physical mode of transport and how the route the information travels need not be known in advance. We emphasize the importance of abstraction and the use of redundancy to establish error-free transmission even in the face of significant noise. We study protocol stacks from the application layer (canonical example: web browser) down to the physical transmission medium. We analyze how high-level information (for instance, a message including an image attachment being sent via email) is translated to bits, broken into discrete packets, sent independently using the basic building blocks of the Internet—and then how those packets are reassembled, seemingly instantaneously, in the correct order. We will attempt to demystify the alphabet soup of networking terminology, including TCP/IP, HTTP, HTTPS, VPN, NFC, WiFi, Bluetooth, and 5G. We will consider major shifts in technology that have transformed communication networks from the telegraph to the telephone to radio, from copper wire to fiberoptics and satellite, and the ubiquity of cellular networks. We also will consider the close relationship between the open-source movement and the rise of the Internet and web.
Faculty
Principles of Programming Languages
Intermediate, Seminar—Fall | 5 credits
COMP 3816
Prerequisite: one semester of programming experience
This course explores the principles of programming language design through the study and implementation of computer programs called interpreters, which are programs that process other programs as input. A famous computer scientist once remarked that, if you don’t understand interpreters, you can still write programs and can even be a competent programmer—but you can’t be a master. We will begin by studying functional programming using the strangely beautiful and very recursive programming language Scheme. After getting comfortable with Scheme and recursion, we will develop an interpreter for a Scheme-like language of our own design—gradually expanding its power in a step-by-step fashion. Along the way, we will become acquainted with lambda functions, environments, scoping mechanisms, continuations, lazy evaluation, nondeterministic programming, and other topics as time permits. We will use Scheme as our “meta-language” for exploring these issues in a precise, analytical way—similar to the way in which mathematics is used to describe phenomena in the natural sciences. Our great advantage over mathematics, however, is that we can test our ideas about languages, expressed in the form of interpreters, by directly executing them on the computer. No prior knowledge of Scheme is necessary.
Faculty
Games Computers Play
Open, Seminar—Spring | 5 credits
COMP 3112
This is an introduction to computer programming through the lens of old-school, arcade-style video games such as Pong, Adventure, Breakout, Pac-Man, Space Invaders, and Tetris. We will learn programming from the ground up and demonstrate how it can be used as a general-purpose, problem-solving tool. Throughout the course, we will emphasize the power of abstraction and the benefits of clearly written, well-structured code. We will cover variables, conditionals, iteration, functions, lists, and objects. We will focus on event-driven programming and interactive game loops. We will consider when it makes sense to build software from scratch and when it might be more prudent to make use of existing libraries and frameworks rather than reinventing the wheel. We will also discuss some of the early history of video games and their lasting cultural importance. Students will design and implement their own low-res, but fun-to-play, games. No prior experience with programming or web design is necessary (nor expected nor even desirable).
Faculty
Data Structures and Algorithms
Intermediate, Seminar—Spring | 5 credits
COMP 3865
Prerequisite: Inrtoduction to Computer Programming
In this course, we will study a variety of data structures and algorithms that are important for the design of sophisticated computer programs, along with techniques for managing program complexity. Throughout the course, we will use Java, a strongly typed, object-oriented programming language. Topics covered will include types and polymorphism, arrays, linked lists, stacks, queues, priority queues, heaps, dictionaries, balanced trees, and graphs, as well as several important algorithms for manipulating those structures. We will also study techniques for analyzing the efficiency of algorithms. The central theme tying all of these topics together is the idea of abstraction and the related notions of information hiding and encapsulation, which we will emphasize throughout the course. Weekly lab sessions will reinforce the concepts covered in class through extensive hands-on practice at the computer.
Faculty
Related Anthropology Courses
Anthropological Approaches to Language and Technology
Open, Seminar—Spring
This course explores the profound role of technology in shaping our daily lives, cultures, and societies—with a focus on how digital media transforms communication, identity, and sense-making practices, both online and offline. Digital media has become a dominant form of communication, with tools like social media, mobile phone applications, and artificial intelligence tools profoundly influencing our sense of self and our identities, communication, social networks, information exchange, cultural and behavioral practices, social styles, and language learning. Key topics discussed in this class will include: language socialization and language practices in online communities; the construction of digital personalities, communities and social identities through language and digital “lifestyles”; language ideologies and symbols in digital spaces; language learning, multilingualism, and the evolving role of multimodal communication, including emojis and hashtags; literacy in the digital age and the rise of automated writing; and the ethics of conducting ethnographic research in digital spaces. Case studies include: a critical examination of language and discourse on Black Twitter; hashtag ethnography within the #BlackLivesMatter social movement; multilingual practices of adolescents, both in the United States and abroad, online and offline; language practices in online LGBTQ+ communities; ethical considerations in online ethnographies of dark-web communities; ethnography of data structures and algorithms; and engagement with language-learning apps like Duolingo. Students will also explore methods of online and blended ethnography, developing research skills for data collection and analysis in digital spaces. They will expand their intellectual understanding of language, culture, and communication in the context of technology, gaining insights into the potential research directions that link technology, language, and anthropology. In the conference component, students will engage in blended ethnography, utilizing both online and offline data collection methods. By studying a subject or reflecting on their own experiences, students will explore emerging digital identities and language styles, gaining deeper insights into the intersection of technology and self.
Faculty
Related Biology Courses
Human Genetics
Open, Lecture—Spring
The formation of an individual’s life is dependent upon a complex mix of cultural experiences, social interactions, and personal health and physiology. At the center of this intricate web is the biological component unique to each of us, yet shared in some form by all life on earth—our genes. Genes contribute much to what makes each of us an individual, from hair color and body shape to intelligence and personality. In this course, we will attempt to gain an understanding of how genes and chromosomes provide the basic blueprint that leads to these unique physical and behavioral characteristics. In doing so, we will discuss the central concepts of human genetics, including: the mechanisms and patterns of inheritance, sex-linked traits, the genetics of behavior, how genes encode information in the form of DNA, the role of mutations in causing disease, human origins and evolution, and the application of various genetic technologies such as gene therapy and genetically modified organisms. Readings will be drawn from texts as well as current popular-press and peer-reviewed articles. No previous background in biology is required, other than a curiosity and desire to understand the genetic mechanisms that shape human existence and make us who we are.
Faculty
Related Mathematics Courses
Calculus II: Further Study of Motion and Change
Open, Seminar—Fall
Calculus is the mathematical gift that keeps giving. (Thanks Newton and company!) In this class, you will expand your knowledge of limits, derivatives, and integrals with concepts and techniques that will enable you to solve many important problems in mathematics and the sciences. You will be able to judge whether answers provided by WolframAlpha or ChatGPT are correct. Topics will include: differentiation review, integration review, integration with nonpolynomial functions, applications of integration (finding area, volume, length, center of mass, moment of inertia, probability), advanced techniques for integration (substitution, integration-by-parts, partial fractions), infinite sequences, infinite series, convergent and divergent sums, power series, and, time permitting, parametric equations of a curve and polar coordinates. Students will work on a conference project related to the mathematical topics covered in class and are free to choose technical, historical, crafty, computational, or creative projects. It is recommended that students have at least one semester of calculus at either college or high-school level or be very comfortable with quickly learning any missing material.
Faculty
Modern Mathematics: Logic, Probability, and Statistics
Intermediate, Seminar—Year
This course will explore mathematical foundations, including logic, set theory, combinatorics, function theory, probability, and statistics. Each of these topics bridges both theoretical mathematical structures and applications to a broad range of real-world problems. Applications of these theoretical mathematical results will be explored through problems from the biological, physical, and social sciences; education; politics; music; and visual arts (among others). This course includes a calculus-based introduction to the theory and applications of probability and statistics. Students primarily interested in a more general, single-semester introduction to the principles and practices of statistics should consider the lecture course, An Introduction to Statistical Methods and Analysis. Students should be comfortable with methods and concepts from single-variable differential and integral calculus (one year of high-school study or one semester of college study). Conference work can focus on any topic relating to mathematics, including theoretical mathematical ideas or their applications to problems outside of mathematics.
Faculty
Multivariable Mathematics: Linear Algebra, Vector Calculus, and Differential Equations
Intermediate, Seminar—Year
Rarely is a quantity of interest—tomorrow’s temperature, unemployment rates across Europe, the cost of a spring-break flight to Fort Lauderdale—a simple function of just one primary variable. Reality, for better or worse, is mathematically multivariable. This course introduces an array of topics and tools used in the mathematical analysis of multivariable functions. The intertwined theories of vectors, matrices, and differential equations and their applications will be the central themes of exploration in this yearlong course. Specific topics to be covered include the algebra and geometry of vectors in two, three, and higher dimensions; dot and cross products and their applications; equations of lines and planes in higher dimensions; solutions to systems of linear equations, using Gaussian elimination; theory and applications of determinants, inverses, and eigenvectors; volumes of three-dimensional solids via integration; spherical and cylindrical coordinate systems; and methods of visualizing and constructing solutions to differential equations of various types. Conference work will involve an investigation of some mathematically-themed subject of the student’s choosing.
Faculty
Calculus I: The Study of Motion and Change
Open, Seminar—Fall
Our existence lies in a perpetual state of change. An apple falls from a tree; clouds move across expansive farmland, blocking out the sun for days; meanwhile, satellites zip around the Earth transmitting and receiving signals to our cell phones. The calculus was invented to develop a language to accurately describe the motion and change happening all around us. The ancient Greeks began a detailed study of change but were scared to wrestle with the infinite, and so it was not until the 17th century that Isaac Newton and Gottfried Leibniz, among others, tamed the infinite and gave birth to this extremely successful branch of mathematics. Though just a few hundred years old, the calculus has become an indispensable research tool in both the natural and social sciences. Our study begins with the central concept of the limit and proceeds to explore the dual processes of differentiation and integration. Numerous applications of the theory will be examined. For conference work, students may choose to undertake a deeper investigation of a single topic or application of the calculus or conduct a study of some other mathematically-related topic. This seminar is intended for students interested in advanced study in mathematics or sciences, students preparing for careers in the health sciences or engineering, and any student wishing to broaden and enrich the life of the mind.
Faculty
An Introduction to Statistical Methods and Analysis
Open, Lecture—Spring
Variance, correlation coefficient, regression analysis, statistical significance, and margin of error—you’ve heard these terms and other statistical phrases bantered about before, and you’ve seen them interspersed in news reports and research articles. But what do they mean? How are they used? And why are they so important? Serving as an introduction to the concepts, techniques, and reasoning central to the understanding of data, this lecture course focuses on the fundamental methods of statistical analysis used to gain insight into diverse areas of human interest. The use, misuse, and abuse of statistics will be the central focus of the course; and specific topics of exploration will be drawn from experimental design theory, sampling theory, data analysis, and statistical inference. Applications will be considered in current events, business, psychology, politics, medicine, and many other areas of the natural and social sciences. Statistical (spreadsheet) software will be introduced and used extensively in this course, but no prior experience with the technology is assumed. Group conferences, conducted in workshop mode, will serve to reinforce student understanding of the course material. This lecture is recommended for anybody wishing to be a better-informed consumer of data and strongly recommended for those planning to pursue advanced undergraduate or graduate research in the natural sciences or social sciences. Enrolled students are expected to have an understanding of basic high-school algebra and plane coordinate geometry.
Faculty
Calculus II: Further Study of Motion and Change
Open, Seminar—Spring
Calculus is the mathematical gift that keeps giving. (Thanks Newton and company!) In this class, you will expand your knowledge of limits, derivatives, and integrals with concepts and techniques that will enable you to solve many important problems in mathematics and the sciences. You will be able to judge whether answers provided by WolframAlpha or ChatGPT are correct. Topics will include: differentiation review, integration review, integration with nonpolynomial functions, applications of integration (finding area, volume, length, center of mass, moment of inertia, probability), advanced techniques for integration (substitution, integration-by-parts, partial fractions), infinite sequences, infinite series, convergent and divergent sums, power series, and, time permitting, parametric equations of a curve and polar coordinates. Students will work on a conference project related to the mathematical topics covered in class and are free to choose technical, historical, crafty, computational, or creative projects. It is recommended that students have at least one semester of calculus at either college or high-school level or be very comfortable with quickly learning any missing material.
Faculty
Related Physics Courses
Time to Tinker
Open, Small Lecture—Fall
Do you enjoy designing and building things? Do you have lots of ideas of things that you wished existed but do not feel you have enough technical knowledge to create yourself? Do you wish you could fix some of your favorite appliances that just stopped working? Do you want to help find solutions to problems in our community? This course is meant to give an introduction to tinkering, with a focus on learning the practical physics behind basic mechanical and electronic components while providing the opportunity to build things yourself. The course will have one weekly meeting with the whole class and three smaller workshop sessions to work on team-based projects. (You are expected to choose one of the three workshop sessions to attend weekly.) The course will be broken down into four primary units: design and modeling; materials, tools, and construction; electronics and microcontrollers; and mechanics. There will be weekly readings and assignments, and each unit will include both individual and small-group projects that will be documented in an individual portfolio to demonstrate the new skills that you have acquired. For a semester-long, team-based conference project, your team will create a display of your work that will be exhibited on campus and provide a description reflecting on the design, desired functionality, and individual contributions that led to the finished product. Let’s get tinkering!
Faculty
General Physics I (Classical Mechanics)
Open, Small Lecture—Fall
General physics is a standard course at most institutions; as such, this course will prepare you for more advanced work in physical science, engineering, or the health fields. Lectures will be accessible at all levels, and through group conference you will have the option of either taking an algebra-based or calculus-based course. This course will cover introductory classical mechanics, including kinematics, dynamics, momentum, energy, and gravity. Emphasis will be placed on scientific skills, including: problem solving, development of physical intuition, scientific communication, use of technology, and development and execution of experiments. The best way to develop scientific skills is to practice the scientific process. We will focus on learning physics through discovering, testing, analyzing, and applying fundamental physics concepts in an interactive classroom, through problem solving, as well as in weekly laboratory meetings. Students enrolling in the calculus-based section are encouraged to have completed at least one semester of calculus as a prerequisite. It is strongly recommended that students who still need to complete a second semester of calculus enroll in Calculus II, as well. Calculus II, or equivalent, is highly recommended to take the calculus-based section of General Physics II (Electromagnetism and Light) in the spring.
Faculty
General Physics II (Electromagnetism and Light)
Open, Small Lecture—Spring
General physics is a standard course at most institutions; as such, this course will prepare you for more advanced work in physical science, engineering, or the health fields. Lectures will be accessible at all levels, and through group conference you will have the option of either taking an algebra-based or calculus-based course. This course will cover waves, geometric and wave optics, electrostatics, magnetostatics, and electrodynamics. We will use the exploration of the particle and wave properties of light to bookend our discussions and ultimately finish our exploration of classical physics with the hints of its incompleteness. Emphasis will be placed on scientific skills, including: problem solving, development of physical intuition, scientific communication, use of technology, and development and execution of experiments. The best way to develop scientific skills is to practice the scientific process. We will focus on learning physics through discovering, testing, analyzing, and applying fundamental physics concepts in an interactive classroom, through problem solving, as well as in weekly laboratory meetings. Students enrolling in the calculus-based section are encouraged to have completed Calculus II as a prerequisite. It is highly recommended to have taken the first semester of General Physics I in the fall prior to enrolling in this course.
Faculty
Resonance and Its Applications
Intermediate, Seminar—Fall
This lab-based course is designed to teach students critical advanced laboratory skills while exploring the fascinating phenomenon of resonance and its many applications. The course will be broken into three main units: mechanical resonators, electronic resonators, and quantum mechanical resonators. Resonators are physical systems that undergo periodic motion and react quite dramatically to being driven at particular frequencies (like the opera singer hitting just the right note to break a wine glass). These systems are very common in everyday life, as well as inside many important technological devices. Each unit will explore a particular application of resonance (e.g., building RLC tank circuits for electronic resonance and utilizing our benchtop NMR spectrometer to explore quantum mechanical resonance). Although some class time will be spent going over the relevant theory, the majority of the class time will be spent designing and doing experiments using advanced lab equipment, analyzing data using Jupyter (iPython) notebooks, and reporting the results using LaTeX. For conference work, students are encouraged to develop an experimental research question, design an experiment to answer that question, perform the experiment, analyze the data, present their findings at the Science Poster Session, and write up their results in the form of a short journal article.
Faculty
Chaos
Open, Seminar—Spring
Learn to appreciate the complex order that can be found in chaos! This course introduces the beautiful world of nonlinear and chaotic dynamics and also provides the mathematical and numerical tools to explore the astounding patterns that can arise from these inherently unpredictable systems. We shall see how chaos emerges from fairly simple nonlinear dynamical systems; utilize numerical methods to simulate the dynamics of chaotic systems; and explore characteristics of chaos using iterated maps, bifurcation diagrams, phase space, Poincaré sections, Lyapunov exponents, and fractal dimensions. Class time will oscillate between the presentation of new material and workshops for hands-on exploration. Students are encouraged to build and/or analyze their own chaotic system as potential conference projects. No previous programming experience is required, and all relevant mathematical concepts will be introduced.
Faculty
Quantum Mechanics and Quantum Information
Intermediate, Seminar—Spring
This course will cover the fundamentals of the theory that governs the smallest scales of our universe: quantum mechanics. Throughout the semester, we’ll take a deep dive into the formalism behind, and physical predictions of, the theory. We’ll start by analyzing an experiment that can only be explained by a quantum theory and then dive into the mathematics that underlie quantum mechanics. We’ll then discuss matter waves along with the Schrödinger wave equation, as well as a variety of example problems, as we build intuition for the theory. We will conclude the course with a study of entanglement and quantum information. Familiarity with complex numbers, vector calculus, and matrices will be useful but not required.
Faculty
Related Psychology Courses
The Origins of Language: Animals, Babies, and Machines
Open, Small Lecture—Fall
Why is linguistic communication so important to us? Do other primates have language? How do humans understand messages from one another despite uncertainty, distraction, and ever-changing environments? In this course, we will consider central questions about language: Are we the only ones who have it? When did we learn it? What does artificial intelligence (AI) like ChatGPT actually learn? And what exactly is the point of so-called “small talk”? In this course, we will start with an introduction to comparative research with animals, allowing us to consider other forms of communication. Next, we’ll turn to our own species, examining what findings from studies with babies and children can tell us about the nature and goals of communication. Finally, we’ll confront the artificial elephant in the room: neural networks. What kind of language have they learned, and how can we study it? In class, we will discuss the advances and consequences of AI. Students should come prepared to engage with the topic of communication from multiple perspectives. Through small-group conferences each week, students will develop projects that relate the course to their collective interests, such as learning and communicating in Toki Pona (a philosophical artistic-constructed language), researching the limits of AI language models, observing and analyzing children’s communication, or designing a behavioral intervention study that implements different communication practices for their peers.
Faculty
Related Visual and Studio Arts Courses
Introduction to Rhino and 3D Fabrication
Open, Seminar—Spring
This course is a comprehensive introduction to Rhino7 for Mac OS X and additive digital fabrication. 3D software and digital fabrication have a variety of uses in contemporary art and the real world. The course covers basic model manipulation, rendering operations, and 3D printing; we will also explore ways of adapting more advanced 3D modeling techniques. In the first half of the semester, students will gain the technical knowledge needed for a rigorous exploration of 3D modeling in Rhino through a series of small projects. The second half of the course will focus on working toward the student’s approved project of their choosing. By course end, students will have the opportunity to output their work via 3D printing, 2D rendered visualization, and more. This multidisciplinary digital sculpture studio is open to interdisciplinary projects. Although not required, students are welcome to pursue the digital fabrication of the whole or part/s of their final projects.