Courses at the Academy of Code are taught using Scratch (for younger students - generally up to 4th class age) and Processing, a java-based programming language originally created in the MIT Media Lab. Processing uses standard java syntax, exposing students to the syntax and structure of the world's most popular programming language from day one.
The amount of material covered in Processing classes will vary depending on the class level and term length. Content listed below is representative of what is taught - if we swap it out, it's because we think whatever else we've come up with is even better!
Module 1 covers the basics of programming in Processing.
Completion of each topic involves writing one or more programs, and often completing other tasks in order to ensure a solid understanding of that topic. As students move through the module they build on each lesson in turn, gradually combining them into more complex and interesting programmes.
Module 1 provides a solid foundation in programming covering key subjects such as:
- Functions - how to use many of the basic Processing functions.
- User input - interacting with an application using the mouse and keyboard.
- Conditions - using "if" statements to allow the program make decisions.
- Variables - storing, retrieving and manipulating data using variables.
Module 2 is more project oriented than Module 1, including many projects which will take more than one class to complete.
Having gotten to grips with many of the basic building blocks in module 1, module 2 provides an opportunity to dive a little deeper into some more advanced ideas.
Some of the projects encountered in module 2 are listed below.
Dice rolling app
Draw a dice onscreen, and roll it on cue from the user.
This is a recap of term one skills, including random numbers, user input and simple shapes.
Load a .txt file full of quotes from famous people. Show a random quote onscreen when the user presses a button.
Reading data from files, and storing data in arrays.
Create a simple music player which can load music files, play them, skip track, fast forward, etc.
Using external libraries, creating buttons for user interaction, and loading external files.
Create a simple encryption application. Allow the user to input a message and a key and see their encrypted message in real time.
User entering text and seeing it on the screen. Very basic introduction to cryptography.
Online Movie Finder
Create an application which takes text input from the user, queries an online movie database with that text string and retrieves details (including movie poster) from that database.
Introduction to APIs, and interaction with online services using APIs. Revision of text entry and processing.
Module 3 is even more project oriented than Module 2, as students get to grips with ever more complex topics and ideas.
This term sees the introduction of classes and objects. These are some of the most important concepts in java, and allow students to approach much more complex problems with the tools needed to solve them.
Some of the projects used in module 3 are listed below.
Create a program which draws randomly positioned targets onscreen. Users must click on them to score points.
This is a recap of term 1 and 2, with a particular focus on random number generation, user input and drawing simple shapes. Part 2 of this project introduces timing in processing (there is a supplementary timing exercise to go along with this lesson).
Program a number of cars to race against each other.
A gentle introduction to classes. Part 2 of this project introduces the idea of storing objects in ArrayLists. In both cases the student is given a part solution to help them on their way.
Alien Invaders Game
Aliens attacking earth! Using the all-time classic Space Invaders as inspiration, create a game where the player defends the earth against rows of invading aliens.
Students are required to write their own classes from scratch for this game, as well as revising many topics from previous terms including collision detection, user input and complex movement patterns.
As students progress beyond module 3 they take on longer projects - simple "bouncing ball" physics simulations (including collision detection), games of catch/avoidance of falling items, pong, and more besides. At every step our instructors encourage development of good coding practices and build students' knowledge of software development and game design.