Racket Weekend lesson plan
I'm working on Racket Weekend, a mini-course about Racket. It's designed for beginners and the Racket-curious. (It's not really intended for people who have considerable experience with Racket.) So far, I've planned the following lessons:
- Structure of programs and basic syntax
- In which we begin the excursion by talking about what Racket programs look like, and how they’re structured. Modules. Basic data: numbers, strings, lists, functions.
- The read-evaluate-print loop (REPL)
- A way to work with your programs directly. Easily one of the killer tools offered by Racket (and other Lisps, too).
- First steps into defining your own data types and giving your data some structure.
- Object-oriented programming
- Racket comes out-of-the-box with a powerful object system. Learn the Racket approach to OOP. Bonus: mix your OOP code in with non-OOP code.
- Take the language into your own hands by writing functions that generate bits of language. Macros can greatly simplify your programs, and help open the door to making your own languages, one of Racket’s specialties.
- Your function’s value probably satisfies certain properties, assuming that the inputs do. Wrap your functions in contracts—an agreement between called and caller that is enforced by Racket.
- Functional programming bricolage
- Racket encourages functional programming without being doctrinaire about it. Learn about some of the idioms and basic ideas of FP, Racket-style.
- Making sure that your functions do what you think they do—writing tests—is bread & butter programming. Racket offers a delightfully straightforward approach to testing that will make you really want to test.
- Web programming
- It’s fine and well to write Racket programs for yourself. But what if you want to expose your work via the web? Racket comes with a built-in HTTP server. Learn how to get started with it.
- Racket comes with its own language for documentation called Scribble. It makes writing documentation a real pleasure.
- Learn how to find and install packages from the Racket community, as well as how to make your own and submit it to the Racket package server.
If that appeals to you, you can find out more by visiting the course homepage.