teaching / guides / week

One-Week Workshop


Teaching a One-Week Workshop

If you only have an hour or even a day, you can walk through the basics of programming, and you can even give students time to work on projects of their own. But they’re going to need a ton of hand-holding, and they aren’t really going to get the process of programming.

I recommend reading that link, but basically: programming isn’t really about the code. It’s more about the process of breaking a problem down into smaller steps, then taking on those sub-problems one at a time. It’s the process beginning with “I have no idea how to start” then asking “what’s the absolute smallest next thing I know I need to do?” and iterating on smaller steps to work towards the larger goal.

The ability to break problems down into smaller steps is the single most important skill in programming, and it’s the hardest skill to teach. The only way to learn it is by doing it, just like the only way to learn how to paint is by painting.

With all of that in mind, a week (which I’m assuming is really five days) gives you just enough time to teach the basics and give students time to work through that process a few times. I’d organize the week into 4 mini-versions of the day-long workshop, where each day you spend some time on a topic and then give the students time to work through some assignments that explore each topic, and then I’d do a full lab on the last day.

(Note: All of the programs and examples mentioned below are available in the links to the respective tutorials. If you want help coming up with other examples and projects, please contact me!)


Then work through an example together by drawing a smiley face. Ask the students for input: how big should the face be? Where should the eyes be located? Try out a bunch of different options and show them that making mistakes is okay! If students have computers in front of them, have them create their own smiley faces.

Then have the students work on their own projects. Here are a few ideas:


During lab time, students can take their projects from Monday and make them scale with the window size, or they can add randomness to show a different drawing every time. Help students break down their goal into smaller sub-problems. For example, if they want one of the circles in their drawing to be randomly sized, encourage them to test out a simpler sketch that just draws the random circle without anything else. When they get that working, they can add it to their main project.


During lab time, have students add animation to their sketches by putting their code inside the setup() and draw() functions.



Now that students know some basics about coding, the best thing they can do to actually learn how to program is by, well, programming. So I would give them the entire day on Friday to create their final projects.

Let students come up with their own goals, but help them keep it to a manageable scope. Think “I want to draw a scene from Mario Brothers” instead of “I want to make Mario Brothers.” Have a list of starter ideas to help them brainstorm. (See the examples section.)

Have students define a goal at the beggining of the lab, and then spend the lab time working towards that goal. Many of them will have trouble just getting started, and that’s okay! A big part of programming is the process of breaking a problem down into smaller steps and then tackling those smaller steps one at a time, so ask them this: What’s the smallest thing you know you need to do next?

If they don’t have anything yet, then the first thing to do is decide how big the window should be. Then the next thing is to decide what color the background should be. Then draw a very very simple part of what you want to draw. I usually start with a circle. Keep adding pieces, and look stuff up in the reference if you forget exactly how something works.

You might also want to give students access to a library of examples. Processing comes with a bunch of examples, or you could use Happy Coding’s Processing examples.

At the end of the week, have students demonstrate what they’ve developed so far. You might also want to provide a way for them to continue working from home, and point them to the exporting applications or Processing.js tutorials so they can share what they’ve done so far.