What is computer science? Ask 100 computer scientists, and you will likely receive 100 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!)

## 2019-2020 Courses

### Computer Science

#### Introduction to Computer Science: The Way of the Program

##### Open , 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

###### Related Disciplines

#### The Computational Beauty of Nature

##### Open , Lecture—Spring

This course will explore the concepts of emergence and complexity within natural and artificial systems. Simple computational rules interacting in complex, nonlinear ways can produce rich and unexpected patterns of behavior and may account for much of what we think of as beautiful or interesting in the world. Taking this as our theme, we will investigate a multitude of topics, including: fractals and the Mandelbrot set, chaos theory and strange attractors, cellular automata such as Wolfram’s elementary automata and Conway’s Game of Life, self-organizing and emergent systems, formal models of computation such as Turing machines, artificial neural networks, genetic algorithms, and artificial life. The central questions motivating our study will be: How does complexity arise in Nature? Can complexity be quantified and objectively measured? Can we capture the patterns of Nature as computational rules in a computer program? What is the essence of computation, and what are its limits? Throughout the course, we will emphasize mathematical concepts and computer experimentation rather than programming, using the computer as a laboratory in which to design and run simulations of complex systems and observe their behaviors.

###### Faculty

#### Computational Number Theory

##### Open , Seminar—Spring

Number theory is one of the oldest and most beautiful fields of mathematics, and many of the ideas it has generated over the millennia are just now becoming crucially important in the information age. This course will serve as an introduction to number theory, computer programming, and the interplay between the two. Topics will include divisibility, prime factorization, modular arithmetic, cryptography, and algorithms, with other topics selected based on class interest. We will spend some time formulating conjectures, generating evidence to support or disprove them, and attempting to prove the ones that seem true. We will also address algorithmic questions such as run-time efficiency and compare and contrast different mathematical algorithms that theoretically achieve the same goal but differ practically in consequential ways.

###### Faculty

###### Related Disciplines

#### Computer Organization

##### Intermediate , Seminar—Fall

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

This course investigates how computers are designed “underneath the hood” and how basic building blocks can be combined to make powerful machines that execute intricate algorithms. There are two essential categories of components in modern computers: the hardware (the physical medium of computation) and the software (the instructions executed by the computer). As technology becomes more complex, the distinction between hardware and software blurs. We will study why this happens, as well as why hardware designers need to be concerned with the way software designers write programs and vice versa. Along the way, we will learn how computers work: from higher-level programming languages such as Python and JavaScript, to system-level languages C and Java, down to the basic zeroes and ones of machine code. Topics include Boolean logic, digital-circuit design, computer arithmetic, assembly and machine languages, memory hierarchies, and parallel processing. Special attention will be given to the RISC architectures—now the world’s most common general-purpose microprocessors. Time permitting, we will investigate the relationship between energy consumption and the rise of multicore and mobile architectures.

###### Faculty

###### Related Disciplines

#### Quantum Computing

##### Intermediate , Seminar—Fall

*Prerequisite: Familiarity with linear algebra or equivalent mathematical preparation.*

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 wasn't until the 1980s—more than a half-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; it 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, Grover’s search algorithm, Shor’s factoring algorithm, quantum teleportation, and applications to cryptography. No advanced background in physics, mathematics, or computer programming is necessary beyond a basic familiarity with linear algebra. 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

###### Related Disciplines

#### Compilers

##### Intermediate , Seminar—Spring

*Permission of the instructor is required. Students should have at least one semester of programming experience and, preferably, some familiarity with computer organization.*

Compilers are often known as translators—and for good reason: Their job is to take programs written in one language and translate them to another language (usually assembly or machine language) that a computer can execute. It is perhaps the ideal meeting between the theoretical and practical sides of computer science. Modern compiler implementation offers a synthesis of: (1) language theory, how languages (both natural languages and programming languages) can be represented on and recognized by a computer; (2) software design and development, how practical software can be developed in a modular way—e.g., how components of one compiler can be connected to components of another compiler to form a new compiler; and (3) computer architecture, understanding how modern computers work. During the semester, we will write a program implementing a nontrivial compiler for a novel programming language (partly of our own design). Topics we will cover along the way include the difference between interpreters and compilers, regular expressions and finite automata, context-free grammars and the Chomsky hierarchy, type checking and type inference, contrasts between syntax and semantics, and graph coloring as applied to register allocation. Conference work will allow students to pursue different aspects of compilers, such as compilation of object-oriented languages, automatic garbage collection, compiler optimizations, just-in-time compilation, WebAssembly, and applications of compiler technology to natural-language translation.

###### Faculty

###### Related Disciplines

#### Data Structures and Algorithms

##### Intermediate , Seminar—Spring

*Students should have 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 sorting, searching, and manipulating structured data. We will also study some mathematical 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 Mathematics Courses

#### Abstract Algebra: Theory and Applications

##### Advanced , Seminar—Spring

In pre-college mathematics courses, we learned the basic methodology and notions of algebra. We appointed letters of the alphabet to abstractly represent unknown or unspecified quantities. We discovered how to translate real-world (and often complicated) problems into simple equations whose solutions, if they could be found, held the key to greater understanding. But algebra does not end there. Abstract algebra examines sets of objects (numbers, matrices, polynomials, functions, ideas) and operations on these sets. The approach is typically axiomatic: One assumes a small number of basic properties, or axioms, and attempts to deduce all other properties of the mathematical system from these. Such abstraction allows us to study, simultaneously, all structures satisfying a given set of axioms and to recognize both their commonalties and their differences. Specific topics to be covered include groups, actions, isomorphism, symmetry, permutations, rings, fields, and applications of these algebraic structures to questions outside of mathematics.

###### Faculty

###### Related Disciplines

#### Calculus I: The Study of Motion and Change

##### Open , Seminar—Fall

*Prerequisites: successful completion of trigonometry and precalculus courses. Students concerned about meeting the prerequisites should contact the instructor. This course is also offered in the spring semester.*

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. Calculus was invented to develop a language to accurately describe and study the motion and change happening around us. 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, 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 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

###### Related Disciplines

#### Calculus II: Further Study of Motion and Change

##### Open , Seminar—Spring

*Prerequisite: one year of high-school calculus or one semester of college-level calculus. Students concerned about meeting the prerequisite should contact the instructor. This course is also offered in the fall semester.*

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 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. The theory of limits, differentiation, and integration will be briefly reviewed at the beginning of the term.

###### Faculty

###### Related Disciplines

#### Discrete Mathematics: Gateway to Higher Mathematics

##### Intermediate , Seminar—Fall

*Prior study of calculus is highly recommended.*

There is an enormous, vivid world of mathematics beyond what students encounter in high-school algebra, geometry, and calculus courses. This seminar provides an introduction to this realm of elegant and powerful mathematical ideas. With an explicit goal of improving students’ mathematical reasoning and problem-solving skills, this seminar provides the ultimate intellectual workout. Five important themes are interwoven in the course: logic, proof, combinatorial analysis, discrete structures, and philosophy. For conference work, students may design and execute any appropriate project involving mathematics. A must for students interested in pursuing advanced mathematical study, this course is also highly recommended for students with a passion for computer science, engineering, law, logic, and/or philosophy.

###### Faculty

###### Related Disciplines

### Related Physics Courses

#### Classical Mechanics (Calculus-Based General Physics)

##### Open , Seminar—Fall

*Permission of the instructor is required. Students are encouraged to have completed one semester of calculus as a prerequisite. It is strongly recommended that students who have not completed a second semester of calculus enroll in Calculus II, as well. Calculus II, or equivalent, is highly recommended in order to take Electromagnetism and Light (Calculus-Based General Physics) in the spring.*

Calculus-based 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. (Alternatively, the algebra-based Introduction to Mechanics will also suffice for pre-medical students.) The 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

###### Related Disciplines

#### Resonance and Its Applications

##### Intermediate , Seminar—Spring

This is a lab-based course 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 an AM radio receiver for electronic resonance and using our benchtop NMR system 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 their own experimental question, design their own experiment to answer that question, do the experiment, analyze the data, and present their findings at the Science and Mathematics Poster Session.

###### Faculty

###### Related Disciplines

### Related Visual and Studio Arts Courses

#### 3D Modeling

##### Open , Seminar—Spring

This course introduces students to the process of constructing digital objects and environments in 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 readings and discussion, students will also be encouraged to consider the conceptual ramifications of working in computer 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

###### Related Disciplines

#### Advanced Interdisciplinary Studio II

##### Advanced , Seminar—Spring

*Open to juniors and seniors with extensive prior visual-art experience. Please bring examples of your work to the interview. Students interested in senior exhibitions are encouraged to interview.*

This is a continuation of the fall-semester course and is intended for advanced visual arts students interested in pursuing their own art-making processes more fully. Students making work in painting, drawing, sculpture, video, mixed media, performance, etc. are supported. Students will maintain their own studio spaces and will be expected to work independently and creatively and to challenge themselves and their peers to explore new ways of thinking and making. During this spring semester, students will focus exclusively on their own interests and will be expected to develop a sophisticated, cohesive body of independent work accompanied by an artist’s statement and exhibition. We will have regular critiques, readings, image discussions, and trips to artist studios and will participate integrally with the Visual Arts Lecture Series. This will be an immersive studio course for disciplined art students interested in making art in an interdisciplinary environment.

###### Faculty

###### Related Disciplines

#### Introduction to Digital Imaging

##### Open , Seminar—Fall

This course covers contemporary digital practice, with an emphasis on Photoshop skills and imaging techniques from scanning to printing. Proper digital workflow is the focus while working through the basics of image manipulation tools, color correction, and retouching. The skills covered will build a solid basis for further exploration of photography, fine-art printing, and more radical digital experiments. The broader classroom discussion emphasizes computer-generated and -manipulated imagery as a new paradigm in contemporary art, photography, and culture in general. Students are encouraged to explore the potential of digital tools in the context of their personal work—visual arts-related or otherwise—stressing open-ended visual possibilities, as well as technical and conceptual rigor.

###### Faculty

###### Related Disciplines

#### Media Burn: Moving Image Installation in Practice

##### Open , Seminar—Year

This yearlong production seminar investigates histories, strategies, and concepts related to the production and exhibition of moving-image installation. Over the year, students will investigate the histories of moving-image installation and create their own works of time-based art. We will look at artworks that use moving images, space, sound, loops, performance, site-specificity, chance operations, multiple channels, and games as tools for communicating ideas. In the fall semester, our work will be inspired by close readings of specific seminal artworks in installation from the late 1960s to the present, including pieces that utilize feedback loops, multiple projections, home movies, and new technologies. Students will learn craft and concept simultaneously through collaborative and individual production. Spring semester, we will engage with our own concepts and ideas of how time-based installation can be activated. Site-specificity, social practice, and interdisciplinary projects are introduced, and students are encouraged to connect their conference in this class to collaborations in theatre, dance, sculpture, painting, and academics. Conference works involve research, craft, and rigorous conceptual and technical practice and are presented in exhibitions at the end of each semester. A component of the class will take place outside the classroom at museums, galleries, nonprofits, performance spaces, and historic sites in and around New York City. (The title of this class, Media Burn, comes from the 1975 performance by the San Francisco-based art collective Ant Farm, https://www.eai.org/titles/media-burn)