Computer Science

What Will Studying Computer Science Look Like in Fall 2020?

In line with the rest of the College, the only courses in the sciences likely to be offered in-person are the First Year Studies courses in Biology (FYS: Conflicts in Biology) and Chemistry (FYS: The Extraordinary Chemistry of Everyday Life). Because other courses will likely have a mixture of students who are living on-campus, commuting, and participating online, the class meetings will be conducted on line via MySLC, Zoom, or another platform. Where possible, individual conferences for students will be conducted in-person. Group conferences for lectures will be conducted online for small cohorts of remote students and in-person where possible for on-campus and commuting students. The topics of discussion covered in classes and conferences will remain the same, regardless of whether students are in person or online.

The Introduction to Computer Science course will be conducted synchronously online via Zoom, with all lectures recorded for students who cannot participate synchronously. Online interactive lab sessions designed to reinforce the material presented in lecture will be conducted synchronously each week, and will make full use of the features of remote learning to provide equitable experiences for all students, regardless of whether they are on-campus or remote. An optional small-group conference will also be held each week (either in-person or online, depending on circumstances) for students desiring extra practice and discussion of the course concepts. The course and lab content will not be diminished in any way by going remote. If possible, additional online peer-tutoring support will be available each week during designated hours.

As of now, the Summer Science Program for 2021 is expected to proceed as normal. Information and applications regarding internship and externship opportunities for research in science and mathematics will be made available towards the end of the fall and beginning of the spring semester. Advising for our pre-professional programs (pre-health and Columbia combined Engineering plan) will continue to be provided to students in-person or online.

Further questions regarding any of the 2020-21 academic year plans should be directed to the appropriate faculty.


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.

2020-2021 Courses

Computer Science

Introduction to Computer Science: The Way of the Program

Open , Small Lecture—Fall

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

Artificial Intelligence and Society

Open , Seminar—Fall

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

Digital Disruptions

Open , Seminar—Fall

From TikTok to Zoom, from Bitcoin to Uber, from Instagram to Snapchat, to massively multiplayer online games to the Internet of Things, digital technology plays an evermore "disruptive" role in society. In this seminar, we ponder where this phenomenon may be taking us in both the immediate and the 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, 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 to 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. The first half of this seminar will focus on the relationship between digital networks (the web, social networks, and beyond) to current events, particularly the economy, politics, and law. In the middle of the semester—in real time!—we will discuss how the digital principles that we are studying impact the November 2020 US elections. The final part 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 we will at times discuss some details that lie behind certain crucial technologies—in particular, the internet and the World Wide Web.

Faculty

Introduction to Functional Programming

Open , Seminar—Spring

This course will explore the functional programming paradigm, a style of programming in which all computation is performed by applying functions to arguments. Our study of functional programming will make ample use of recursion—one of the most powerful concepts in computer science—and recursively-defined data structures such as lists, using the strangely beautiful programming language Scheme. Scheme and other functional languages provide powerful abstraction techniques for controlling the complexity of programs and a simple mathematical basis for reasoning about their correctness. Many of the most important concepts and features of modern programming languages were first introduced and studied within the framework of functional programming. Today, functional languages remain at the cutting edge of new programming-language design, and key ideas from functional programming continue to play a central role in the development of highly parallel, scalable, and distributed computing systems. Topics to be covered include recursion and its close cousin, mathematical induction; induction proofs and program correctness; mapping, filtering, and reducing lists; lambda expressions and higher-order functions; data abstraction and representation independence; infinite lists; continuations and continuation-passing style; and other topics as time permits. No prior knowledge of computer programming is necessary, though students should be comfortable with algebra and the fundamentals of mathematical thinking.

Faculty

Programming the Web: An Introduction

Open , Seminar—Spring

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

Faculty

Privacy, Technology, and the Law

Open , Seminar—Spring

What do remote-conferencing systems, digital currency, self-driving vehicles, and Edward Snowden have in common? The answer lies in this course, which focuses on how a few very specific computer technologies are dramatically altering daily life. In this course, we will develop a series of core principles that explain the rapid change and that help us chart a reasoned path to the future. We 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 are 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 phone booth (remember those?) without a warrant. Quickly, we will arrive in the age of information and 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 tweet 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. To get a better handle on the problem, we will consider the central irony of the internet: It was developed at the height of the Cold War as a way to maintain a robust communication system in the event of a nuclear attack; now, its open nature puts us at risk of 21st-century security threats, such as electronic surveillance, aggregation and mining of personal information, and cyberterrorism. We will contrast doomsday myths popularized by movies such as War Games with more mundane scenarios such as total disruption of electronic commerce. Along the way, we will address questions such as: Does modern technology allow people to communicate secretly and anonymously? Can a few individuals disable the entire internet? Can hackers launch missiles or uncover blueprints for nuclear power plants from remote computers on the other side of the world? We will also investigate other computer security issues, including spam, computer viruses, and identity theft. Meanwhile, with our reliance on smart phones, text messages, and electronic mail, have we unwittingly signed up ourselves to live in an Orwellian society? Or can other technologies keep "1984" at bay? Our goal is to investigate if and how society can strike a balance so as to achieve computer security without substantially curtailing rights to free speech and privacy. Along the way, we will introduce the science of networks and describe the underlying theories that make the internet and its related technologies at once tremendously successful and so challenging to regulate. A substantial portion of the course will be devoted to introductory cryptology— the science (and art) of encoding and decoding information to enable private communication. We will conclude with a discussion of how cutting-edge technologies, such as blockchains, are impacting commerce today and how quantum cryptography and quantum computing may impact the privacy of communications tomorrow.

Faculty

Intermediate Programming

Intermediate , Seminar—Fall

Permission of the instructor is required. Students should have at least one semester of programming experience.

This course is designed for students who understand the basics of computer programming (whether in Python, JavaScript, or another language) but want to take their skills to the next level. We will use the elegant and sophisticated programming language Haskell to learn about software design, abstract data types, and higher-order functions. We will introduce the basic principles of computational complexity and tree structures. We will emphasize top-down problem solving, using recursion. We will also learn how to use cloud-based version control; e.g., using git and GitHub. Time permitting, we will learn how to build larger programs that leverage databases and networking protocols.

Faculty

Bio-Inspired Artificial Intelligence

Intermediate , Seminar—Spring

Students should have at least one semester of programming experience in a high-level, object-oriented language such as Python, Java, or C++.

The field of artificial intelligence (AI) is concerned with reproducing the abilities of human intelligence in computers. In recent years, exciting new approaches to AI have been developed, inspired by a wide variety of biological processes and structures that are capable of self-organization, adaptation, and learning. This course is a hands-on introduction to the algorithms and techniques of biologically-inspired AI and is intended for students with prior programming experience. Examples of these new approaches include evolutionary computation, artificial neural networks, autonomous robots, and swarm intelligence. We will focus, from both theoretical and practical perspectives, primarily on genetic algorithms, neural networks, deep learning, and reinforcement learning. We will use the Python programming language to implement and experiment with these techniques in detail and to test them out on both simulated and real robots. Students will have many opportunities for extended exploration through open-ended, hands-on lab exercises and conference work.

Faculty

Problems by Design: Theory and Practice in Architecture, 1960 to the Present.

Open , Large Lecture—Spring

This course will involve works in philosophy, theory, criticism, politics, and social analysis that deal with the aesthetic, formal, infrastructural, and sociopolitical questions raised by design strategies, buildings, and utopian or speculative projects. Our focus will be on methods and movements such as blobs, dots and folds, fractal form, fractured landscapes, datatowns and metacities, ascetic aesthetic/minimalist consumption, megastructures, themed urbanism, transformational design grammars, and economic models for sustainable growth/development/design. Topics will be introduced in PowerPoint presentations. Authors will include Adolf Loos, Martin Heidegger, Jane Jacobs, Peter Eisenman, Rem Koolhaas, Bruce Sterling, and Anthony Vidler. Buildings will include work by major architects such as Frank Lloyd Wright, Mies van der Rohe, Louis Kahn, Tadao Ando, Frank Gehry, Zaha Hadid, Bjarke Ingels, Elizabeth Diller, and Jean Gang. Movements discussed will include Modernism, Post-Modernism, Formalism, Situationism, Minimalism, Counter Culture, Green Urbanism, and Parametrics. Assignments will involve analytical and critical papers, directed discussions on close reading of texts, historical context for ideas, and buildings that are prescribed, described, or proscribed by theory in practice. This course complements courses on urbanism, visual arts, environmental science and studies, literary theory, physics, and, of course, art and architectural criticism and history.

Faculty

Game Theory: The Study of Conflict and Strategy

Open , Lecture—Spring

Prerequisite: one-year each of high-school algebra and geometry

Warfare, elections, auctions, labor/management negotiations, inheritance disputes, even divorce—these and many other conflicts can be successfully understood and studied as games. A game, in the parlance of social scientists and mathematicians, is any situation involving two or more participants (players) capable of rationally choosing among a set of possible actions (strategies) that lead to some final result (outcome) of typically unequal value (payoff or utility) to the players. Game theory is the interdisciplinary study of conflict, whose primary goal is the answer to the single, simply-stated but surprisingly complex question: What is the best way to play? Although the principles of game theory have been widely applied throughout the social and natural sciences, their greatest impact has been felt in the fields of economics, political science, and biology. This course represents a survey of the basic techniques and principles in the field. Of primary interest will be the applications of the theory to real-world conflicts of historical or current interest.

Faculty

Mathematics in Theory and Practice: Probability, Risk Analysis, and Optimization

Intermediate , Seminar—Year

Prerequisite: successful completion of two semesters of college-level calculus (or its equivalent)

What is chance, and how do we measure it? Do we measure the probability of winning the Mega Millions Lottery in the same way that we assess the likelihood of a volcanic eruption in Hawaii? What tools are available to understand and measure uncertainty and risk? How can an understanding of probabilities better inform the decisions that we make in our personal and professional lives? How can we make the very best choice(s) amidst an enormous number of available options? How can individuals and businesses make critical decisions with confidence despite incomplete information and considerable uncertainty of future states? This calculus-based introduction to advanced probability theory, risk analysis, and operations research (optimization theory) engages these topics with an eye on diverse applications in the natural sciences, business, economics, and the social sciences. Topics of exploration will include the essential preliminaries of discrete mathematics (symbolic logic, proof technique, and set theory), combinatorial probabilities, distributions of prominent discrete and continuous random variables (Gaussian normal, binomial, Poisson, etc.), conditional probability and independence, joint distributions, expectation, variance, covariance, laws of large numbers, the Central Limit Theorem, Bayes Theorem, Markov chains, stochastic processes, linear programming and the powerful simplex method, sensitivity of optimized solutions to slight shifts in input parameters, duality theory, integer programming, nonlinear optimization, stochastic programming, and the four classic examples of optimization theory (the transportation/assignment problem, the network flow problem, the diet problem and the traveling salesman problem). Using mathematical software, students will gain practical experience in the art of computer simulation and optimal solution identification.

Faculty

Time to Tinker

Open , Small Lecture—Spring

Do you enjoy designing and building things? Do you have lots of ideas for things that you wished existed but do not feel you have enough technical knowledge to create it yourself? This course is meant to provide 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 multiple units, including: the engineering design process, tools and materials, basic electronics, introduction to Arduino, basic mechanics, and 3D printing. There will be weekly readings and assignments, and each unit will include a small group project to demonstrate the new skills that you have acquired. For a semester-long, team-based conference project, your team will create an engineered piece that will be exhibited and presented, as well as write a report reflecting on the design, desired functionality, and individual contributions that led to the finished product.

Faculty

Chaos

Open , Seminar—Fall

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

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

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 image-making 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

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