Computer Science

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!)

What are the basic building blocks of algorithms? How do we go about finding algorithmic solutions to problems? What makes an efficient algorithm in terms of the resources (time, memory, energy) that it requires? What does the efficiency of algorithms say about major applications of computer science such as cryptology, databases, and artificial intelligence? Computer-science courses at Sarah Lawrence College are aimed at answering questions such as those. Sarah Lawrence computer-science students also investigate how the discipline intersects other fields of study, including mathematics, philosophy, biology, and physics.

Computer Science 2023-2024 Courses

Introduction to Computer Science: The Way of the Program

Open, Small Lecture—Fall | 5 credits

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.


Digital Disruptions

Open, Seminar—Fall | 5 credits

From autonomous vehicles to ChatGPT and Stable Diffusion, from the rise to the fall of cryptocurrency and NFTs, from YouTube to TikTok, from Instagram and Snapchat to BeReal, from Twitter to Mastodon, from Mr. Robot to M3gan, from Wordle to Elden Ring, from Apple to technology plays an ever-more “disruptive” role in society. In this seminar, we ponder where this phenomenon may be taking us in the immediate and not-so-immediate future and whether there is (or will be) anything we can (or should) do about it. The miniaturization of electronic computers and the resulting increase in computing power, decrease in short-term cost to harness that power, and ubiquity of computer networks all bring people and places together and make distances formerly thought of as insurmountable ever more trivial. With the advent of gigabit fiber-optic networks, smart phones, and wearable computers, information of all kinds can flow around the world, between people and objects and back again, in an instant. In many ways, the plethora of smaller, cheaper, faster networked devices improves our quality of life. But there is also a dark side of a highly connected society: the more smart phones, the more workaholics; the more text messages exchanged and the easier the access to drones, the less privacy; the greater reach of the internet, the faster the spread of misinformation and the more piracy, spam, and pornography; the more remote-controlled thermostats, the greater the risk of cyberterrorism. This seminar will focus on the relationship between digital networks (the web, social networks, and beyond) to current events, including the economy, politics, and the law. The second half of the course will focus on the cultural impact of digital technology, ranging from video games to science fiction and the rise of artificial intelligence. This is not a technical course, though at times we will discuss some details that lie behind certain crucial technologies—in particular, the internet and the web.


Intermediate Programming in Python

Intermediate, Seminar—Fall | 5 credits

Prerequisite: at least one semester of prior programming experience in Python or a closely-related language

This course is for students with prior programming experience in Python and who want to take their programming skills to the next level. We will explore a variety of advanced programming features of Python, including iterators and generators, list comprehensions, operator overloading, exception handling, context management, first-class functions, introspection and meta-programming, and other topics as time permits. We will also make extensive use of the object-oriented programming paradigm through the development of larger-scale programs organized as collections of classes, with an emphasis on clean, modular design.


Artificial Intelligence and Society

Open, Seminar—Spring | 5 credits

In recent years, the field of artificial intelligence (AI) has made astonishing technical progress and has begun to assume an increasingly widespread and important role in society. AI systems can now (at least to some extent) drive cars; recognize human faces, speech, and gestures; diagnose diseases; control autonomous robots; converse fluently in English; instantly translate text from one language to another; beat world-champion human players at chess, Go, and other games; and perform many other amazing feats that just a few decades ago were only possible within the realm of science fiction. This progress has led to extravagant expectations, claims, hopes, and fears about the future of AI technology and its potential impact on society. In this course, we will attempt to peer beyond the hype and come to grips with both the promise and the peril of AI. We will consider AI from many angles, including historical, philosophical, ethical, and public-policy perspectives. We will also examine in detail many of the technical concepts and achievements of the field, as well as its many failures and setbacks. Throughout the course, students will be asked to read texts, write responses, do follow-up research, and participate in classroom discussions. This is not a programming course, and no background in computer programming is either expected or required.


Data Structures and Algorithms

Intermediate, Seminar—Spring | 5 credits

Prerequisite: at least one semester of programming experience in an object-oriented language such as Python, Java, or C++

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.


Random and Prime

Advanced, Seminar—Spring | 5 credits

Prerequisite: permission of instructor; at least one semester of a college-level programming course (preferably in Python); and at least one semester of proof-based, college-level mathematics

This course is a journey analogous to space exploration. Our infinite cosmos will be the set of natural numbers. Our exploratory rocket ships will be computer programs of our own design. The planets possibly bearing alien life forms are different classes of prime numbers. More literally, this course is a research-driven introduction to elementary number theory, its essential application to computer-network security, and its purported implications for the future of money (think of the buzzwords “crytpo,” “blockchain,” and “bitcoin”). We will write a series of computer programs of increasing sophistication, whose aim will be to identify patterns among prime numbers. We will pose philosophical questions regarding the nature of modern mathematics and computer science; for instance, to what extent can a computer be used to prove theorems? We will investigate what it means to be random: Can true randomness be generated by an algorithmic process? We will see examples of how some problems that appear to be very difficult may be solved quickly using random numbers, with the caveat that the answer we get is only “probably” true. In particular, we will contrast, on the one hand, the ease with which random numbers can be harnessed to discover primes and, on the other, the challenge of finding divisors of composite numbers. We will also consider the web-shaking implications if the latter problem turns out to be less difficult than it appears. Topics in elementary number theory include: primality, unique factorization, modular arithmetic, relative primality, Fermat's Little Theorem, primitive roots, and quadratic residues. Topics in cryptology include: Diffie-Hellman key exchange, RSA encryption, pseudorandom number generators, zero-knowledge proofs, and applications of these to blockchain databases and dreams of digital currency. Algorithmic topics include: modular exponentiation, probabilistic prime testing, factorization and discrete logarithms, and the theory of NP-completeness.


Environmental Data

Open, Seminar—Spring

The global environmental movement of the past half-century coincided with a technological revolution that has allowed us to collect many types of new data about our planet. From remote data generated by satellites, to data generated by sensors operating under harsh environmental conditions, to crowdsourced observations submitted by the general public, environmental scientists now have access to a wealth of new information that can be used to better understand Earth systems and the ways that human activities impact our environment. In this seminar, we will explore a variety of types and formats of environmental data and their applications. Participating students will develop a foundation in scientific computing and data visualization using SciPy, a collection of open-source software packages in Python. We will also consider broader issues when using data in environmental science, including privacy, accessibility, communicating uncertainty, and ethics. Through conference work, students will design and implement an environmental data-analysis project focused on a topic of their choice.


Game Workshop and Video Game Development

Open, Seminar—Year

This yearlong course will cover the basics of developing and coding video games. Students will learn the fundamentals of programming, level design, and the implementation of art assets into the game engine Unity. We will stress dialogue systems and interaction with non-player characters, as well as health and inventory systems. In the fall semester, we will focus on the theory of designing games and the creation of a 2D game. In the spring semester, we will continue on to more advanced programming techniques, as well as the creation of a 3D game.


2D Character Animation

Open, Seminar—Year

This course focuses on the fundamentals of animation through the development of 2D character design. The course will introduce students to traditional hand-drawn and digital techniques of frame-by-frame animation, where movement is created through successive, sequential character drawings. Students will learn the principles of animation through character design and visual development. Students will gain knowledge in drawing by engaging with formal spatial concepts in order to create fully-realized animated characters both visually and conceptually. Through the development of character boards, beat boards, and character animation, students will draw and animate human, animal, mechanical, and hybrid figures. Students will learn about body mechanics and motion flow in the development of animated characters through techniques that include walk cycles, rotating forms, transformations, holds, squash and stretch, weight, and resistance. Additional instruction will include techniques in pencil-test animation and lip syncing. Students will research characters in their visual, environmental, psychological, and social aspects to establish a full understanding of characterization. Examples of animations illustrating frame-by-frame character movement will be screened regularly. The course will conclude with a final project, for which students will develop, conceptualize, and produce a short animated character study. ToonBoom animation software Harmony will be the primary software incorporated in this course and will be provided to each student through the Animation Lab. Information and skills established in this class can be used to improve basic drawing and animation proficiency, establish fundamentals for digital animation production, create and enhance an animation portfolio, and develop tangible skills for producing graphic novels or a character outline for an interactive media project.


Modern Mathematics: Logic, Risk, Analytics, and Optimality

Open, Seminar—Year

There is great elegance in the fact that mathematics can be both deeply theoretical and magnificently useful. This course, available to both first-year students (as an FYS) and upper-class students (as an open seminar), explores the theory of optimization and its profound applications. We will study and employ elements in the toolbox of mathematics—specifically logic, probability, game theory, and operations research—for the purpose of optimization. In various and diverse settings, our goal will be to identify the single optimal choice amidst a sea of available options to determine the optimal decision despite a cloud of incomplete information and the mystery of an uncertain future and to select the optimal mode of behavior (strategy) in situations of personal or professional conflict. Specific applications of the mathematical theory will be explored through case-study analysis in business, biology, psychology, sociology, education, politics, law, literature, and art (among others). For example: How should SLC most effectively assign courses to students during Registration Week based on students’ indicated course preferences? How should United Airlines most efficiently route its planes to meet the transportation needs of its customers? How can Rubik’s Cubes be used in mass to most accurately reproduce Leonard da Vinci’s Mona Lisa? How can jointly-owned possessions be most fairly divided in an inheritance or divorce settlement? Specific topics of study in this calculus-based course will include topics in the foundation of mathematics (logic, proof technique, set and function theory); probability theory (combinatorics, discrete and continuous random variables, conditional probability, independence, expectation, Bayes Theorem); game theory (zero-sum conflicts, cooperative solutions); and analytics (linear programming, the simplex method, sensitivity analysis, duality theory, decision theory). Students pursuing this course should have prior working knowledge of 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. Students taking the course as an FYS seminar will meet with the instructor for individual conferences and donning weekly in fall and biweekly in spring. Enrolled upper-class students will conference with the instructor biweekly across both terms.


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.


Calculus I

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 and study the changes that we see. Ancient Greeks began a detailed study of change but were scared to wrestle with the infinite; 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 topics 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 in some other branch of mathematics. This seminar is intended for students interested in advanced study in mathematics or science, students preparing for careers in the health sciences or engineering, and any student wishing to broaden and enrich the life of the mind.


Calculus II

Open, Seminar—Spring

This course continues the thread of mathematical inquiry, following an initial study of the dual topics of differentiation and integration (see Calculus I course description). Topics to be explored in this course include the calculus of exponential and logarithmic functions, applications of integration theory to geometry, alternative coordinate systems, infinite series, and power series representations of functions. 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, including artistic projects. This seminar is intended for students interested in advanced study in mathematics or science, preparing for careers in the health sciences or engineering, or simply wishing to broaden and enrich the life of the mind.


First-Year Studies: Music and Technology


This course will explore the effects that advancements in technology have had, and are having, on music. We will study the development of musical instruments, the recording studio, the advent of computers and synthesizers, as well as the impact that these areas have on contemporary music. Some of the topics to be covered will include the following: basic elements and fundamentals of music; principles of acoustics as related to music and electronics; an overview of Western and non-Western music such as traditional, classical, jazz, rock, and pop, as well as music for other media such as dance, film, and theatre. Some other questions to be considered are: How are composers and performers inspired by new developments in instrument making and technology? How has technology changed the course of music for the listener? What effect does technology have on music education? Students will select conference projects based on their particular interests and from a variety of perspectives, including but not limited to world history, musical genre, specific periods of music history, types of instruments, and developments in technology. Course work will include listening assignments, electronic and recording-studio demonstrations, guest lectures, and concert attendance. No previous musical training is necessary. Students will meet in one-on-one conferences for the first six weeks and then biweekly thereafter.


The Origins of Language: What Babies, Other Animals, and Machines Can Tell Us

Open, Lecture—Fall

Why is communication so important to us? We appear to understand messages from one another despite uncertainty, distraction, and ever-changing environments. Within milliseconds, we are often able to formulate a relevant response. In this course, we will consider central questions about communication: Are we the only ones who do 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 cognitive psychology 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 benefits and consequences of AI. Students should come prepared to engage with the topic of communication from multiple perspectives, including psychological, quantitative, and humanistic. 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), hosting a campus debate on the ethical consequences of artificial-language models, observing and analyzing children’s communication at the Early Childhood Center, or designing a behavioral intervention study that implements nonviolent communication practices.


Creative Nonfiction

Intermediate/Advanced, Seminar—Fall

This is a course for creative writers who are interested in exploring nonfiction as an art form. We will focus on reading and interpreting outside work—essays, articles, and journalism by some of our best writers—in order to understand what good nonfiction is and how it is created. During the first part of the semester, writing will be comprised mostly of exercises and short pieces aimed at putting into practice what is being illuminated in the readings; in the second half of the semester, students will create longer, formal essays to be presented in workshop.