When my students move up to junior year, they make a series of transitions: from programming to theoretical computer science, and from imperative to functional programming. We use DrRacket, and one of the goals of the course is to give them a very broad exposure to theoretical computer science. Part of that is choosing labs that can be coded using the tools that they have learned so far.

They are already familiar with linked lists, Big $O$, $\Omega$, and $\Theta$, binary trees, the runtime stack, BFS and DFS before they arrive at this class. They have also been exposed to recursion a fair amount (though most of them are not highly skilled at it yet)

My first lesson with them in Racket is called "Cons, Car, Cdadr, and Contracts" and it contains exactly the sorts of material you would expect from that title. I have created a lab that makes them use these tools, but adds up to no further significance. What I want is an algorithm that has some theoretical significance and that they can do with those tools. The algorithm itself can come from any part of computer science - I just want it to be something worth exposing them to in the first place.

The lab goals would thus be two-fold: first, to give them a chance to play around with and familiarize themselves with the beginnings of Racket. Second, I want to give them a chance to learn about an important algorithm.

  • $\begingroup$ I would suggest asking @ShriramKrishnamurthi, as he is very likely the person most knowledgeable about Racket on this SE. $\endgroup$
    – xuq01
    Commented Jun 5, 2017 at 20:42

1 Answer 1


I learned Racket using the material taught by the UW MOOC on Coursera Programming Languages, Part B, which is modeled after this UW course.

Here are the relevant helpful documents, which do provide an introduction to the language along with quite advanced material which involves implementing a programming language within Racket:

The materials in this course are heavy on recursion, so some of the earlier exercises in Homework 4 may help your students with this concept while getting them comfortable with basic Racket exercises.

I also can't speak highly enough of the free, self-paced course materials for UC Berkeley's CS61AS found on the "Textbook" tab.

These two additional resources may spark some ideas as well:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.