CS 1102 (A15): Accelerated Introduction to Program Design

Lectures: MTRF 9-9:50am, Perrault Lower Hall (Fuller Labs Auditorium)

Labs: W 1-1:50pm (Sec A01), 2-2:50pm (Sec A02), 3-3:50pm (Sec A03) in Kaven Hall 203
             4-4:50pm (Sec A04) in Higgins Lab 230

Professor: Charles Rich

CS 1102 offers an accelerated and advanced introduction to program design. After a quick overview of basic program design, it covers how to design and implement domain-specific languages for custom software applications. By the end of the course, students are expected to develop skills in identifying, modeling and implementing simple languages, in understanding certain concepts that distinguish programming languages, and in functional programming. On a more general level, students are expected to strengthen their skills at approaching open-ended programming and software-development problems.

The course is primarily targeted at students with prior programming experience (including functions, recursion, and lists or trees, as would be covered in AP). However, it is sufficiently self-contained to be a first course for a novice programmer with strong mathematical skills and a desire for a challenge. No particular prior language is assumed; the course covers functional programming (with Racket), which is new to most students in the course.

Finally, students can start in CS 1102 and transfer to CS 1101 until the end of the second full week of the term, should they find the pace too fast. (See frequently asked questions about CS 1101 versus CS 1102.)

xkcd lisp comic

Comic from xkcd; Racket is a dialect of Lisp

What happened to Scheme? Those of you who know of this course informally as "the Scheme course" may be wondering what happened to Scheme. The answer is: almost nothing has changed except for the name of the language (see details here).