The One

Upcoming Course Dates:

  • July 25-29, 2022.

Registration:

• In-person ($1000)

Instructor: David Beazley

Includes:

  • Breakfast and lunch (in-person only)
  • Course materials

Location: 5412 N Clark Street #218, Chicago, IL 60640

Other Courses | FAQ


A New Course!

This is a new course that is only being taught in-person in Chicago. It is only being offered once in 2022. It is the only in-person course I'm offering in 2022. Attendance is strictly limited to 6 people. Proof of vaccination and adherence to local health code policies at the time of the course is mandatory.

Overview

Software development has always involved a mix of craft and creativity. The craft side of it is what you usually get when you take a course--the syntax of a programming language, development methodologies, design patterns, and the features of important packages. These are concrete things. Your advancement can be measured by how much you can remember and apply to practical problems. Creativity, on the other hand, is a more undefinable quality. It's the sort of thing makes an appearance when you start a new project or when you're having to debug a supercomputer using nothing more than a blinky LED. However, is creativity something that can even be taught or nurtured? Experience in the arts suggests that the answer might be "yes" and THAT is the thinking behind this course.

On Nurturing Creativity

Let's talk about the arts for a moment--specifically music. In music, there are a vast number of things that one must master to be considered "competent." For example, the physical act of playing an instrument, reading musical notation, understanding rhythm, listening, learning scales and chords, and so forth. These sorts of things can be practiced and measured. You can either play a scale or you can not. If you know more scales or can play them more quickly than the person next to you, perhaps you'll win an audition. There is little dispute here. However, the picture becomes a lot more muddy if you ask a musician to spontaneously play an improvised solo. What distinguishes a great solo from a random mess of notes? Clearly there's got to be more to it than just "play whatever you want!"

How does one come up with a solo? Part of the answer lies in awareness. What have great musicians of the past done? Can THAT be studied and emulated? Obviously, the answer is yes. Anyone, including you, can go buy a record of your favorite artist and play it over and over again, applying focused listening to learn what they are doing. It will probably involve a lot of work.

However, a second part of the answer might reside in the practice of "constrained creativity." As an example, could you play an interesting two minute improvised solo using only a single musical note (e.g., you can only play middle C on the piano and that's it)? Such a draconian restriction forces you to think in different dimensions. With scales off the table, what remains? After some pondering, you realize that there is still a LOT that you can work with--maybe things that you've been neglecting! For example, rhythm, dynamics, space, and sound quality (timbre). So, you practice those things--this different dimension of playing. Sure, in reality, it's unlikely that you'd EVER play a one-note solo. However, your practice of doing so opens a greater palette of sonic possibilities. That's a creative superpower.

A true story: before the pandemic, I was asked by a friend to sit in on trombone with a Chicago big-band. At one point during the performance, everyone in the band got their chance to play a solo during a blues tune ("Sweet Home Chicago", of course). Oh, what an awful mess that was--literally everyone got up one-by-one to play a meandering mess of mostly loud and fast notes (AKA acrobatics). When my turn came up, I thought about the whole "constrained creativity" thing and decided to play a single 4-note phrase followed by total silence. A different dimension. At this point, the whole band and the audience sat there wondering "what is he doing?" Naturally, tension was building because of all of that silence. Finally, I played the exact same 4-note phrase again and sat back down. That was the whole solo. Afterwards, my friend turns to me to say "that was really interesting man!" Of course it was freaking interesting--because it was different. And simple. The hard part was thinking to even do it in the first place!

Creativity in Code

Does creativity have a place in coding? Most programmers would agree that it does. However, what are the big ideas to emulate? Can a practice of "constrained creativity" be applied? If so, what is the coding equivalent of only playing a single note? What dimensions of coding can you work with?

That's the goal of this course. Specifically, we'll take a focused look at some deep ideas in computing--singular ideas that will challenge your thinking. We'll then attempt to solve problems within the framework of these ideas. Like a musician challenged to play a one note solo, you'll be pushed well outside your comfort zone. Honestly, it will probably sound pretty bad at first. However, in doing so, you'll open your mind to greater possibilities as you return to your real work.

Target Audience

This class is for experienced programmers who want to be challenged in ways that will stretch their mind. Past experience with different styles of programming (i.e., imperative, functional, object-oriented, etc.) is highly recommended as is familiarity with certain mathematical concepts such as first-order logic and set theory. Coding is involved, but the choice of language is not so important. Examples will likely involve Python and maybe Scheme.

Instruction Format

Each day of this course will present an idea based on a singular concept from computer science ("the one"). From there, we will explore how that idea unfolds into the greater domain of problem solving as we apply it to a series of projects, big and small. Expect to be challenged and for there to be a significant amount of group discussion.

Syllabus

The following topics are indicative of the kinds of things that might be covered in the course. As this is a new course, this list could be expanded or revised at any time. Just to be clear though, this is definitely NOT an introduction to programming for beginners.

About the Instructor

This class is led by David Beazley. You might know Dave from this somewhat infamous bit of practical live coding. More recently, he gave a tutorial on lambda calculus at PyCon 2019. That might be a good thing to watch before signing up to this course--the topics covered here might be even MORE mind-bending than that.