6170: Software Studio (Fall 2020)

Values, Objects & Variables

Literals, expressions & values; variables & environments; scoping & qualifiers; mutable objects & aliasing.

Functionals & Iteration Abstraction

Functions as arguments; iteration abstractions; classic list functionals; simple writer example; iterators and generators.

Prototypes & Constructors

Objects, prototypes and constructors; the special and strange this variable; simulating classes.

Closures & Lexical Scoping

Minimizing scope; dynamic vs. lexical scope; ADT pattern with closures; a memoizing functional; closure puzzles.

Programming with Callbacks

Callbacks and registrations; callbacks that generate UI behavior; a reaction timer.

The Bad Parts of Javascript

Lexical issues; conversions; special values; truthiness; new and this; function declarations; silent failure.

These slides were prepared by Daniel Jackson at MIT. All similarities to real people (or software), living or dead, are coincidental. No animals or software developers were harmed in this production. All rights reserved, 2016-2020, Daniel Jackson.