This class meets twice a week: Tuesdays and Thursdays. This page describes the typical “rhythm” for learning.
At the top level, the course consists of a sequence of modules. Typically, each module will take one week to cover. In some cases, a module might be split into parts and take multiple weeks to cover.
Most modules start on Friday and end the following Thursday.
Work begins on a module. The module page contains overview materials (online readings and screencasts) on the material. In addition, it contains experiences consisting of 3-5 “practice WODs”. These “WODs” (workout of the day) are short assignments with prescribed times for finishing, along with a solution video that I provide. You are encouraged to try each WOD without watching my solution video, then watch the video and repeat the WOD until you can complete it in the prescribed period of time.
Many students do the practice WODs two or three times before completing them successfully within the prescribed period of time.
You should complete all of the practice WODs by the following Tuesday.
The Tuesday class often involves a “Group WOD”. I will divide the class randomly into groups of students who work together on a new WOD they have not seen before that builds off the practice WODs they did by themselves. As with the practice WODs, there is a time limit on the Group WOD. This class provides additional practice with the skills presented for the module, and an opportunity to work with others.
You will post a technical article (blog entry) describing your experience learning about the topic and the results of your practice WODs. These reports are evaluated based upon the quality of the writing, not on whether the WODs were completed. This is to encourage you to be honest and also to make it clear that the actual evaluation of your programming ability will occur on Thursday.
“Danny WODs” will also happen on Wednesday evening. Drop by ICSpace at the scheduled time to take a “live” practice WOD hosted by our TA, Danny Weng. He’ll solve the problem in front of you afterwards, and also answer any questions you might have about the material.
You are given a new WOD that assesses your ability to utilize the skills presented in the module. There is a time limit for completion of the task. I have a developed an in-class procedure (involving index cards) for getting reasonably accurate data on the time spent by each student doing the WOD.
After the Thursday assessment WOD, you get the rest of the day off, and start the next module on Friday.
In addition to this weekly rhythm, I occasionally assign work that takes longer (or shorter) than a week. This enables me to present a small amount of material that does not fall neatly into the week-long rhythm.
Here are some of the significant differences I have found between this approach and more traditional classroom pedagogy:
You are assessed on your capability to carry out software engineering tasks in an efficient manner. As a result, the course does not focus on memorization of terminology.
I design the material as a sequential set of tasks to be mastered, generally in durations of 5-45 minutes.
I present solutions to the tasks through online videos that demonstrate “Rx” times.
I use GitHub to provide an efficient and effective way for you to record your WOD work.