Sarah Lawrence College

Undergraduate Academics

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, environmental science, biology, and physics.

Computer Science 2026-2027 Courses

  • First-Year Studies—Year | 10 credits

    COMP 1213

    In this seminar, we will explore the past, present, and future of artificial intelligence (AI) and its growing impact on our society. In recent years, AI research has made astonishing technical progress and has assumed an increasingly widespread and important role in many aspects of our lives. AI systems can now (to varying degrees) drive cars; recognize human faces, speech, and gestures; diagnose diseases; control autonomous robots; converse fluently in English and other languages; instantly translate between languages; 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. Especially with the public release of ChatGPT and other systems powered by "large language models," AI has become for many people a source of profound fascination, inspiration, and even dread. These developments have led to extravagant claims, hopes, and fears about the potential consequences of AI for the future. In this course, we will attempt to peer beyond the hype and to come to grips with both the promise and the peril of AI technology. We will consider AI from many angles, including historical, philosophical, ethical, and public-policy perspectives. We will also examine in depth many of the technical concepts, major debates, 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, give presentations, and participate in classroom discussions. This is not a programming course, and no background in computer programming is expected or required. In fall until mid-semester, students will meet weekly with the instructor for individual conferences; thereafter through spring, individual conferences will be biweekly.

    Faculty

  • Open, Small Lecture—Fall | 5 credits

    COMP 2092

    This lecture will present 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 gaining the programming skills necessary for further study in the discipline. We will emphasize the power of abstraction, the theory of algorithms, and the benefits of clearly written, well-structured programs. Fundamental topics will include: how computers represent and manipulate numbers, text, and other data (such as images and sound); variables and symbolic abstraction; Boolean logic; conditional, iterative, and recursive computation; functional abstraction (“black boxes”); and standard data structures, such as arrays, lists, and dictionaries. We will learn introductory computer graphics and how to process simple user interactions via mouse and keyboard. We will also consider the role of randomness in otherwise deterministic computation, basic sorting and searching algorithms, and some principles of game design. Toward the end of the semester, we will investigate somewhat larger programming projects and, so, will discuss file processing; modules and data abstraction; and object-oriented concepts such as classes, methods, and inheritance. As we proceed, we will debate the relative merits of writing programs from scratch versus leveraging existing libraries of code. Weekly hands-on laboratory sessions will reinforce the programming concepts covered in class.

    Faculty

  • Intermediate, Seminar—Fall | 5 credits

    COMP 3557

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

    This course is intended for students with prior programming experience in Python who want to take their programming skills to the next level. We will make extensive use of the object-oriented programming paradigm and recursion through the implementation of larger-scale programs organized as collections of classes, with an emphasis on elegant code and clean, modular design. We will also explore a number of more advanced programming techniques in Python, including list comprehensions; iterators and generators; operator overloading; exception handling; context management; decorators and first-class functions; introspection and metaprogramming; and other topics as time permits. The goal will be for students to deepen their programming proficiency by applying their knowledge to the development of more complex and challenging software projects.

    Faculty

  • Intermediate, Seminar—Fall | 5 credits

    COMP 3220

    Prerequisite: knowledge of algebra; calculus recommended

    Note: Also offered as MATH 3220.

    What is truth? One idea is that if that something is true, if using a small collection of assumptions and a few basic rules, then we can prove our claim from those assumptions. In this course, we will focus on mathematical proof and how it represents a formal backbone on which both theoretical computer science and most of the rest of mathematics can be constructed. We will work from the ground up, starting with Boolean logic and deductive arguments and moving onto elementary number theory where we will focus on the use of induction (e.g., to establish a formula for triangular numbers) and contradiction (e.g., to prove the infinitude of primes). We will introduce a formal notion of algorithm and demonstrate how number theory can be used to explain the principles behind modern cryptography. We will study sets, both finite and infinite, and how they can be used to formalize relations and functions. We will introduce basic notions of combinatorics (a fancy word for counting) with emphasis on the import of exponential growth. (Example: If you walked into a pizza shop that offered ten different toppings, would you want to sample all of the combinations?) We will then use our improved methods of counting to develop a basic theory of probability. Near the end of the semester, we will apply most, if not all, of the earlier concepts to introduce the theory of graphs. Along the way, we will explore the interplay between discrete mathematics and computation including recursion and programming; big-oh notation and categorizing the efficiency of algorithms; and graph theory's role in circuit design. Time permitting, we will circle back to the original question and investigate the limits of proof by trying to show that some true things can never be proven! For conference, students will do a deep dive on a related mathematical or computational topic. Examples include, but are not limited to: studying the proof and applications of a famous theorem (e.g., Fermat's "little" theorem); explaining how computers can be used (without so-called "artificial intelligence (AI)") to verify the validity of a formal proof; learning to program using logic; measuring the performance of related algorithms; or designing and simulating nontrivial digital circuits.

    Faculty

  • Open, Seminar—Spring | 5 credits

    COMP 3122

    From so-called “artificial intelligence” to cryptocurrency, from Apple Watches to Meta AI Glasses, from Balatro to Clair Obscur: Expedition 33, from Instagram to TikTok, from Bluesky to X, digital technology plays an ever-more “disruptive” role in society. In this seminar, we will 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, science fiction, and the rise of artificial intelligence.

    Faculty

  • Intermediate, Seminar—Spring | 5 credits

    COMP 3515

    Prerequisite: familiarity with the basics of linear algebra (vectors and matrices) or equivalent mathematical preparation

    Note: No advanced background in physics, mathematics, or computer programming is necessary, beyond a basic familiarity with linear algebra.

    Physicists and philosophers have been trying to understand the strangeness of the subatomic world as revealed by quantum theory since its inception back in the 1920s, but it was not until the 1980s—over half a century after the development of the theory—that computer scientists first began to suspect that quantum physics might hold profound implications for computing, as well, and that its inherent weirdness might possibly be transformed into a source of immense computational power. This dawning realization was followed soon afterward by key theoretical and practical advances, including the discovery of several important algorithms for quantum computers that could potentially revolutionize (and disrupt) the cryptographic systems protecting practically all of our society's electronic banking, commerce, telecommunications, and national security systems. Around the same time, researchers succeeded in building the first working quantum computers, albeit on a very small scale. Today, the multidisciplinary field of quantum computing lies at the intersection of computer science, mathematics, physics, and engineering, and is one of the most active and fascinating areas in science, with potentially far-reaching consequences for the future. This course will introduce students to the theory and applications of quantum computing, from the perspective of computer science. Topics to be covered will include bits and qubits, quantum logic gates and reversible computing, Deutsch's algorithm, the Deutsch-Jozsa algorithm, Grover's search algorithm, Shor's factoring algorithm, quantum teleportation, and applications to cryptography. We will study the quantitative, mathematical theory of quantum computing in detail, but will also consider broader philosophical questions about the nature of physical reality, as well as the future of computing technologies.

    Faculty

  • Intermediate, Seminar—Spring | 5 credits

    COMP 3865

    Prerequisite: Introduction to Computer Programming (COMP 2092) and prior programming experience

    In this course, we will study a wide range 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 hands-on lab sessions will reinforce the concepts covered in class.

    Faculty

© Sarah Lawrence College. All rights reserved.