A Taste of Programming with SICP JS, IAP @ MIT, January 18-28, 2022

Description

We can understand some computer programs in the way we solve math equations: by performing one simple algebraic step after another, until we reach an answer. This Independent Activity introduces programming in this way, inspired by the first chapter of Structure and Interpretation of Computer Programs, JavaScript edition (SICP JS). We start from first principles, by looking at functions that you know from mathematics, but before long, you will program interesting graphics and sound patterns using the Source Academy, a website built for SICP JS. The Activity offers entertaining and thought-provoking insights into the essence of computation, and at the same time an introduction to programming using the popular programming language JavaScript.

You can participate on one to six days, depending on your preference. Each day has a lecture, a Reflection session, and an optional Studio session.

Prerequisites

No prerequisite knowledge. No programming experience is needed. People who already have programmed are likely to get a new perspective on what programming can be. You will use your own computing device: laptop or large tablet with an internet browser (Chrome, Firefox, or MS Edge). Internet connectivity is required.

Each day

Each day will start with an online lecture of about 1 hour and 45 minutes, starting at 10am. There will be an online Reflection session of one hour starting at 4pm that will include group discussion, individual programming exercises, and guided pair programming. For extra fun, an experienced assistant will facilitate optional 2-hour online Studio sessions in small groups each evening from 7pm to 9pm.

Schedule

Design your own course: feel free to come on any of the days, consistent with the dependencies shown below.

Day 1, Tuesday, January 18: The elements: See the basic ingredients of all computer programs

Day 2, Wednesday, January 19: A picture language: Program graphical patterns by wishful thinking
Depends on: Day 1

Day 3, Friday, January 21: Functions: Experience the magic of higher-order programming
Depends on: Days 1 and 2

Day 4, Tuesday, January 25: A curve language: Program fractals and three-dimensional curves with functions
Depends on: Days 1-3

Day 5, Wednesday, January 26: The lambda calculus: Explore the essence of computation
Depends on: Days 1-3

Day 6, Friday, January 28: Functional audio processing: Make some noise Depends on: Days 1-3
(equipment: bring a stereo headset that works with your browser)

The course calendar has all links to zoom sessions, recordings, slides, and other material.