CS1102 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. Students can start in CS1102 and switch over to the novice course CS 1101 up through the midpoint of the term, should they find the pace too fast.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).
Comic from xkcd; Racket is a dialect of Lisp