teaching / guides / curriculum

Programming Curriculum


My vision for this site is for it to contain pretty much every topic I’ve learned over the years. Here’s a general roadmap of what I’m planning:

curriculum roadmap

Each of those squares could be its own class. Processing is great for introducing the fundamentals, and it leads pretty logically to both JavaScript and Java, and those both lead to more advanced topics.

With that in mind, if you’re planning a curriculum that spans across multiple classes, here’s how I would organize it:

Primary Students

In a perfect world, students would be introduced to computer science at an early age. I don’t have any experience with this side of things, but you might want to check out the teaching primary students guide.


Processing is great for introducing the basics, since it makes it easy to create animated and interactive programs without a ton of boilerplate code. You could spend at least the first course or year working through the fundamentals, all the way up to OOP.

HTML and JavaScript

After a student knows Processing, it leads pretty naturally to learning about HTML and JavaScript through Processing.js. Since students have learned the basics in Processing, you don’t have to teach them again. Instead, focus on what makes JavaScript different from Processing.

Check out the HTML and JavaScript tutorials for an idea of which topics to cover in these classes.


JavaScript then leads to more advanced topics such as P5.js, JavaScript libraries, and more complicated web development.


Processing is built on top of Java, so students have already been programming in Java. But Processing also hides a lot of stuff from the user. I’d use a Java course to introduce more advanced topics like inheritance and interacting with complicated libraries.

This can happen before or even at the same time as the HTML and JavaScript class.


After students have had a basic Java course and an HTML / JavaScript course, they can combine them to learn about servlets. Servlets can then lead to more advanced server development.


After students have seen concepts like OOP and can understand the flow of a Java application, they can branch out into Android development.