Course Content - What we teach
Courses at the Academy of Code are taught using a wide variety of languages including Processing, HTML/CSS and Python. For older students (5th class and upwards) Processing, a java-based programming language originally created in the MIT Media Lab, forms the core of the course. Processing uses standard java syntax, exposing students to the syntax and structure of the world's most popular programming language from day one.
Our new 9 stage curriculum will be rolling out throughout the 2018/2019 school year, with each grade corresponding to approximately one year of classes. The grades are grouped as follows:
Grade 1: pre-coding, for students aged 6-8 (STILL IN DEVELOPMENT)
Grades 2-3: intro to coding and technology, for students aged 7-10 (2nd-4th class). Includes a variety of block based and text based languages, along with activities for students to learn about counting/encoding in binary, how computer networks are organised, how search engines work, and much more besides. (Grade 2 is currently live across our network, with Grade 3 in active development)
Grades 4-6: intro to java programming through Processing. This is our flagship “intro to programming” course, which will take students through a wide range of concepts and get them really thinking in code. For ages 10+ (5th class and up)
Grades 7-9: advanced programming, for those who have successfully completed previous modules. Courses at this level are college-level difficulty, and require a dedication to and aptitude for coding and technology. Capstone projects are required to complete these grades, with the final project for Grade 9 in particular requiring a high degree of originality and technical skill, along with a presentation of the project and a verbal defence.
Along with the core coding elements there are a variety of other technical skills cultivated throughout all grades. These include the obvious, incidental ones (keyboard and mouse skills, how to save and manage files, etc) and others which are delivered as lessons or short lesson series themselves (electronics, music tech, web development, etc).
The below gives a very rough guide of some of the coding elements of these grades.
Module 1 covers the basics of programming in Processing, and is the entry point for students from 5th class up
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.
Grade 4 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.
Grade 4 also includes a broad curriculum unit which can vary but could include web development, music technology, electronics/circuit design, or other technology-related subjects.
As students progress through the course they will take on larger projects, which will take multiple classes to complete
Having gotten to grips with many of the basic building blocks in grade 4, grades 5-7 provides opportunities to dive a little deeper into more advanced ideas.
Some of the projects encountered early on 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.
Grades 5-7 also see 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 encountered at this point 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.
Grades from 7 onwards contain a variety of advanced programming topics and lots of student driven project work. Grades 8 and 9 in particular are at a third-level standard, and students who pass the capstone assessments to progress this far and complete Grade 9 have demonstrated an extremely strong grasp of coding skills and an aptitude for critical thinking, problem solving and software development.
At every step our instructors encourage development of good coding practices and build students' knowledge of software development and game design, and this will be particularly true in the final grades, as our instructors work with students to hone their design skills and fine tune their code.