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 2021-2022 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 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

Programming the Web: An Introduction

Open, Small Lecture—Spring | 5 credits

This seminar introduces the fundamental principles of computer science, via the use of HTML and JavaScript, to create interactive web pages. Examples of the kinds of web applications that we will build include: a virtual art gallery; a password generator and validator; and an old-school, arcade-style game. We will learn JavaScript 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, loops, functions, arrays, objects, and event handling. We will also discuss how JavaScript communicates with hypertext markup language (HTML) via the document object model (DOM) and the relationship between HTML, JavaScript, and cascading style sheets (CSS). Along the way, we will discuss the history of the web, the challenge of establishing standards, and the evolution of tools and techniques that drive the web’s success. We will learn about client-server architectures and the differences between client-side and server-side web programming. We will consider when it makes sense to design from the ground up and when it might be more prudent to make use of existing libraries and frameworks rather than reinventing the wheel. We will also discuss the aesthetics of web design: Why are some pages elegant (even art) when others are loud, awkward to use, or—worse yet—boring. Weekly hands-on laboratory sessions will reinforce the programming concepts covered in class. No prior experience with programming or Web design is necessary (nor expected nor even desirable).

Faculty

Software Design and Development

Intermediate, Seminar—Year | 10 credits

Donald E. Knuth, one of the world's most distinguished computer scientists, has said both that “computer programs are fun to write” and that “software is hard.” The goal of this course is to give students a taste of what it is like to design and develop real software. The quotes by Knuth illustrate two themes of this course that are not necessarily at odds: The challenge of writing good software should not offset the pleasure derived from writing it. Some of the main topics that we will cover include the power of abstraction, the separation of design from implementation, version control, the selection of development environments, the creative use of existing software libraries and tools, the benefits of a flexible approach, and the role of maintaining good documentation. Nowere is the adage, “There is no substitute for experience,” more relevant than in software engineering. With that in mind, this course is intended to be hands-on. Design and development techniques will be taught primarily by having each student design and implement a single software project over the entire school year. Specific topics: design patterns, including Model-View-Controller; separating user-interface particulars from core algorithms; wireframe techniques; alpha vs. beta testing; using distributed software versioning tools, such as GitHub; the role of abstract data types and precise API specification; code reviews; workshopping; and the less heralded—but crucially important—skills of documentation writing, software testing, and project management.

Faculty

Digital Disruptions

Open, Seminar—Fall | 5 credits

From TikTok to Zoom, from Bitcoin to Uber, from Instagram to Snapchat, to massively multiplayer online games, to the Internet of Things, and non-fungible tokens, digital technology plays an evermore "disruptive" role in society. In this FYS 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, the decrease in short-term cost to harness that power, and the ubiquity of computer networks bring people and places together, making distances formerly thought of as insurmountable evermore trivial. With the advent of gigabit fiber-optic networks, smartphones, 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 and science fiction to 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 World Wide Web. While this course is open to all students, first-year students may take the course as a regular seminar or as their FYS seminar. In the latter case, students will have weekly conferences and be expected to enroll in Introduction to Web Programming in the spring as a continuation of their FYS experience.

Faculty

Principles of Programming Languages

Intermediate, Seminar—Fall | 5 credits

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 you 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 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 the lambda calculus (the basis of modern programming-language theory), scoping mechanisms, continuations, lazy evaluation, nondeterministic programming, and other topics if time permits. We will use Scheme as our "meta-language" for exploring those 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.

Faculty

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; 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 to 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 many of the technical concepts and achievements of the field in detail, 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 expected or required.

Faculty

Data Structures and Algorithms

Intermediate, Seminar—Spring | 5 credits

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 these 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

First-Year Studies: Climate Change

Open, FYS—Year

Climate change will be the defining issue of the coming decades. Climate change threatens the ecosystems and infrastructure that human society relies upon and will impact most aspects of the global economy, policymaking, and day-to-day life. This FYS course will provide the basic foundation in earth system science needed to understand why the planet is warming, drawing on fundamental concepts of physics, chemistry, and biology. During the spring semester, we’ll build upon this foundation to investigate the linkages between global climate, natural ecosystems, and human society. We will explore topics such as biodiversity, land use, adapting to climate-change impacts, and the energy-systems transition needed to prevent catastrophic global warming. This class will alternate biweekly individual conferences with biweekly small-group workshops on climate data analysis, technical writing, and communicating science.

Faculty

Geospatial Data

Open, Seminar—Spring

Geospatial data are information associated with locations on the surface of the Earth. This can include a variety of different types of data used in environmental science, such as sample collection locations at a field study site, the areal extent of a forest biome, or the output generated by global climate models. The analysis of geospatial data also allows social scientists to identify disparities in access to natural resources or exposure to pollutants and hazards and has been critical to the study of environmental justice. This course provides an introduction to foundational concepts in geodesy, cartography, and geostatistics, along with practical experience in geospatial data analysis using open-source geographic information systems (GIS) software. Although we will focus primarily on environmental applications, the skills learned in this course can be utilized in many natural and social-science disciplines—and can also help you avoid getting lost!

Faculty

Calculus I: The Study of Motion and Change

Open, Seminar—Fall and Spring

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 change that we see. The 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.

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

Mathematics in Theory and Practice: Real Analysis and Topology

Intermediate, Seminar—Year

The calculus of Newton and Leibniz was so successful that science forgave the logical shortcomings of its “fluxions” and “evanescent quantities.” In the 19th century, however, calculus evolved into the study of functions of a real variable—real analysis—which is a model of the foundational rigor that has come to define mathematics as a discipline. In the 20th century, the search for axioms of the real numbers uncovered subtle assumptions about spatial properties of the real line. These properties—such as continuity, separability, and dimension—do not depend on magnitude but on more general notions of position. The geometry of position, or topology as it is called today, is the study of exactly such properties. This yearlong seminar will begin with preliminaries of discrete mathematics, including symbolic logic, proof technique, and set theory. We will study these topics in the context of networks and surfaces, which are some of the most intuitive topological objects. This will be followed by an in-depth study of the real numbers, sequences and series, limits, continuity, the derivative, and the integral. To motivate our revision of these familiar calculus terms, the seminar will read and discuss important counterexamples, such as nowhere-differentiable continuous functions, rearrangements of infinite series, and the Cantor set. At the end of the year, we will return to topology. This will give us the opportunity to see how many of the geometric properties of curves, surfaces, and maps between them find a unified expression in terms of relations among point sets. Conference work will clarify seminar ideas and possibly their application to mathematical models in the natural sciences, computer science, or economics.

Faculty

Classical Mechanics (Calculus-Based General Physics)

Open, Seminar—Fall

Calculus-based general physics is a standard course at most institutions; as such, this course will prepare you for more advanced work in the physical science, engineering, or health fields. 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, as well as in weekly laboratory meetings.

Faculty

Theories of Agency and Action in Science Studies

Open, Lecture—Fall

This course surveys a rich historical debate in science, technology, and society studies on the nature of agency—or the motivation behind, and responsibility for, action. The lecture course begins with an exploration of the nature of scientific fact, including how discoveries are made and how they become accepted in society. We will pay special attention to the concepts of co-production, the idea that humans and technologies work together, and situated action, the reality that actions are rooted in social context, to study how technologies become central to social interaction. This grounding theory will lay a foundation for students to consider an ongoing debate on the distinction between human and nonhuman action. The course culminates with an exploration of three contemporary discussions on the nature of agency with respect to automated weapons systems, assistive technologies for people with disabilities, and the use of algorithms to order social life. For each topic, we will consider how technologies influence social interaction and who or what is responsible when things go wrong. In group conference, students will practice analyzing how technologies shape social interaction through a series of “object readings,” short analyses of a single technological object. These assignments are designed to prepare students for a final group analysis of a technology of their choice.

Faculty

Measuring Difference: Constructing Race, Gender, and Ability

Open, Seminar—Spring

In this seminar, we will explore the sociology of classification, a subfield that critiques the ways in which society measures differences like race, gender, ability, and other social categories that communicate social worth. Three questions guide our inquiry: How does society construct and understand categories of difference? How do people experience and resist categories of social difference in themselves? How does social difference shape institutions like the family, education, employment, and government? Each week, students will engage a selection of texts that put theory, substantive research on social categories, and critical responses to them in conversation with one another. For a final class project, students will explore one area of social difference through individual and group writing assignments. Those assignments will provide training in documentary analysis, a qualitative method often used in historical and ethnographic research. Students will leave the course with the ability to identify areas of social difference, the practices through which these are produced, and a systematic critique of the ways in which measurement creates inequality in the social world.

Faculty

Digital Imaging Studio

Open, Seminar—Fall

This course focuses on contemporary techniques for digital image manipulation with an emphasis on Photoshop skills, including imaging, retouching, and compositing workflow. We will cover proper use of adjustment layers, layer masks, retouching, and even design and basic animation. The skills covered will build a solid basis for further exploration and interventions within the realm of photography, illustration, and more radical digital experiments. While proper technical processes are emphasized, we will equally explore expressive use of the software, creating original, personal work through independent projects. The broader class discussion will emphasize computer-generated and -manipulated imagery beyond the basics of Photoshop as a driving force in art and media that now informs all imagemaking and reflects and informs our culture in general. Students are encouraged to explore the potential of digital tools within this greater context and that of their individual work and interests—visual arts-related or otherwise—stressing open-ended visual possibilities, as well as technical and conceptual rigor.

Faculty

3D Modeling

Open, Seminar—Spring

This course introduces students to the process of constructing digital objects and environments within the virtual space of the computer. Emphasis will be on a strong grasp of form, space, and composition. Fundamentals of hard-edge and organic surface modeling will be thoroughly exercised, while further exploration of the digital tools will cover shading and texturing, lighting, and rendering with the virtual camera. Over the course of the semester, students will be challenged to create increasingly complex objects, environments, and imagery. Through intensive hands-on studio time, as well as through readings and discussion, students will also be encouraged to consider the conceptual ramifications of working in illusionistic digital space. Contemporary examples of computer-generated imagery in art, film, and media—juxtaposed with historical views on visual illusion from art and philosophy—will form a broader context in which to examine the medium.

Faculty

Photogrammetry

Open, Concept—Spring

Photogrammetry is the process by which, using specialized software, multiple photographic views of an object or space are analyzed and reconstructed into digital 3D models. These uncanny virtual recreations from the real world can then be used as digital props and environments in rendering, games, and animation projects. In this course, we will work with this exciting process, generating our own models and importing them into 3D software to edit, texture, and combine them into larger virtual scenes or export them as assets for games, visual effects, or other more experimental uses. We will work in both controlled studio environments as well as “en plein air,” with the ability to capture manmade as well as natural objects and spaces, subsequently generating their virtual doppelgangers in the computer and transforming their meaning as digital art objects.

Faculty