Prabhakar Ragde's flâneries

This page collects some recent longform pedagogical writing that I hope will be of interest. The word "flânerie" simply means "stroll", but I use it to evoke the German cultural critic Walter Benjamin (1892-1940), who elevated wandering through sophisticated urban environments to an art form. Freed from the pressures of the credit system, course material can become a voluntary pleasure, a guided walk through an interesting quarter. The works below are shorter and more informal than a textbook, but longer and more polished than a typical blog post. I'm happy to take suggestions for improvement.

Currently available: Teach Yourself Racket (TYR) and Functional Data Structures (FDS). Scroll down for brief descriptions, or click through for full materials.

In process: A Functional Introduction To Computer Science (FICS); Logic And Computation Intertwined (LACI). No material available yet, but descriptions below.

Wishful thinking: Functional Lexing And Parsing. Not even a description on this one.

Teach Yourself Racket (TYR)

A rapid introduction to the basics of programming in full Racket, intended for mature programmers.

Contents:

A Functional Introduction to Computer Science (FICS)

An introduction to CS for those who have never programmed before, or who have done some programming in imperative languages, based on my offerings of the courses CS 145, CS 146, and Math 642. These courses were originally designed for students with mathematical aptitude and enthusiasm for the subject. Programming examples and exercises use the Racket teaching languages, as well as full Racket.

(Conversion in progress.)

Contents:

Functional Data Structures (FDS)

A modern reimagining of data structures focussing on immutability and persistence, based on my offerings of the course CS 240E, and aimed at those who have done some programming in imperative or functional languages (such as covered in TYR or FICS). Programming examples and exercises use the OCaml language.

Contents:

Logic And Computation Intertwined (LACI)

An introduction to logic and program verification for computer scientists via intuitionistic type theory, based on my offerings of the course CS 245E. The reader will write the majority of the code for a very small proof assistant, Proust, before we move to brief overviews of the much more full-featured Agda and Coq software systems. Required background: some experience in programming in imperative or functional languages (such as covered in TYR or FICS). Programming examples and exercises use full Racket.

(Conversion in progress.)

Contents:

Functional Lexing And Parsing (FLAP)

A planned collection of ideas I've scattered into various courses over the years, along the lines of the works above, and including material from my offering of CS 842 in fall 2012.

Cheriton School of Computer Science, University of Waterloo, Waterloo, Ontario, Canada N2L 3G1
plragde at uwaterloo.ca