Apple WWDC 2019 Scholarship Winner

For Apple’s annual student competition, I designed and coded an iPad Swift Playground called myMovieScene(). My playground uses filmmaking concepts to teach students about object-oriented programming using Swift.

The Slate

In the first page, the learner faces a movie slate; their challenge is to set the information of their movie scene as properties of an instance of the class 'MovieScene. I took advantage of the glossary feature of Swift Playgrounds to clarify terms the learner might be seeing for the first time, both for coding terms as well as filmmaking jargon. If the learner successfully sets the properties, they see their content displayed as part of the fully-functional slate I created using SpriteKit. They can tap to open and close it, and listen to its 2-pop and clap tones. They even see the timecode being affected by the frames-per-second property they selected, just like a real Hollywood slate would.

The Set

Next, the learner travels to a movie set furnished with flats — the fake walls used in movies — and a green screen. Their challenge is to set the genre of the movie by defining a property of the instance they created in the previous page. I marked the region of the code they completed as copyable to bring their movie information along every page. They always have the option to change their mind and, for example, rename their movie after choosing a particular genre. I provided 3 different genres to choose from: adventure, mystery and scienceFiction. When the learner runs their code, the SpriteKit movie scene in the LiveView transforms into their genre of choice as set elements I illustrated on Sketch enter left and right. The green screen casts gripping locations, like an arid landscape on Mars, and the flats become animated interiors with beeping computers, haunted leopard masks or eye-catching chandeliers.

My Set

Finally in the last page, the learner is confronted with a challenge Directors face all the time: making creative choices by drawing unexpected connections. They are still on the movie set but this time, instead of choosing a genre, they will have to create their own. They discover that the genre property of myMovieScene instance itself receives an instance of a class called MovieGenre. The learner will have to define the properties of myMovieGenre and then assign it as the chosen genre for myMovieScene. Editable code regions guide the learner as they try different combinations. Code completions shown in the shortcut bar help the learner discover all the scenographic elements at their disposal, including some new ones such as a SpriteKit-Emitter-powered snow storm.

To congratulate the learner for successfully using an instance within an instance — as well as being and all-round awesome director — a microphone, LED panel and slate with their name and movie title appear on the set to prepare for filming. The learner is on its way to becoming an amazing coder and filmmaker!

DEMO