Courses for Spring, Post Sabbatical Thoughts
Courses for Spring, Some Post Sabbatical Thoughts
Well, winter has proven to be a wild ride with the conclusion of my brief sabbatical teaching Programming Languages at Brown and a shift back to my regular classes. Needless to say, I've been negligent in writing newsletters!
First, here's a brief list of some upcoming courses:
- Advanced Programming with Python, April 15-19, 2024.
- Write a Compiler, May 13-17, 2024.
- Rafting Trip, June 3-7, 2024.
- SICP, July 8-12, 2024.
If you're thinking about taking a course in 2024, be aware that I'll be returning to Brown in the fall for the second half of my sabbatical. So, no courses will be offered from September to early December.
Courses as a Living, Breathing Thing
I am always trying new things and making changes to my courses. For me, a course is a dynamic experience that's more like jazz improvisation than a precisely written orchestral performance. Yes, there is an overall "shape" to the topic being covered, but the precise details often vary. Even when a course is taught back-to-back (like two recent Raft courses I just taught within two weeks of each other), the courses can be surprisingly different. The differences are often driven by ideas raised during course discussion. I love this aspect of teaching--honestly it's probably a big reason why I much prefer running a course than writing a book. You just never know what's going to happen in a course.
The Effects of a Sabbatical
This brings me to my brief academic sabbatical last year. It occurred to me that I've never actually had any kind of sabbatical before. Oh, I've definitely had a vacation before. And I've had burnout which is definitely no vacation. However, a sabbatical is something else entirely. Essentially, I got to throw myself into an entirely different environment, teach an entirely different class (someone else's class no less), to an entirely different kind of student. At times it was frustrating and at others, eye-opening.
Going in, it wasn't entirely clear how the sabbatical experience would impact my own teaching. Would it lead to a new course? Would I take the Brown course outside and teach it in an unmodified form (perhaps a bit like SICP)? Or would it mainly just be a private learning experience just for myself?
Now that a few months have passed, the results are a bit more apparent. The sabbatical gave me a lot of clarity about the structure of my courses, what I'm trying to accomplish, and new ideas for exploration. Given the topic material (programming languages), there was also quite a lot of overlap with topics I already teach such as SICP and Write a Compiler.
SICP has a well-earned reputation for being difficult and of perhaps of questionable pedagogy. However, I think I've come to love that book even more! The Brown course definitely gave me some ideas on how to approach some of that material in a slightly different way. So, if you take that, it's not just SICP, but a number of ideas from elsewhere being thrown into the mix.
Inspired the heavy use of hygienic Racket macros in the Brown course as well as a talk at RacketCon by Jeremy Siek about incremental compilation and nanopass compilers, I got inspired to try something similar with my own compilers course as an experiment. One thing led to another and after a few months, I realized I had basically rewritten the entire course! Oh, the course still uses Python, still targets LLVM, and still has all of the usual parts of a compiler, but they're put together in a completely different way than before. I taught this "new" course for the first time in January and found it to be pretty neat. So, if you sign up for the course in May, you'll get this.
There's still the possibility that a brand new course will be offered. However, it often takes some amount of time to put something together. I might prototype a few things later this summer so if you're interested, be on the lookout for announcements.
That's it for now! I hope you're having a good start to year.
Cheers,
Dave