In this course, we will take students through the general strokes of game design, starting with the narrative component and mechanics, and finishing with an introduction to the more technical, coding fundamentals. At first, all work will be analog. Students will connect with their prior knowledge of game structure and elements in Session 1, and use this connection to build a storyboard for their own game design. These activities will facilitate learning through a constructionist lens, as students are engaging in creation that has societal meaning. The introductory activities will also help students engage in metacognition, asking them to reflect on what they know about games so that they can apply that knowledge or seek out additional knowledge if needed.
Later, students will move into the familiar realm of Minecraft for the technical lessons. This has one key advantage: many middle school students are already familiar with Minecraft (and those who aren't will be able to pick it up quickly), so it will make the learning of coding fundamentals much easier. Students will begin by creating an environment for their game in Minecraft using "Creative Mode" and then adding in logic to their game, such as if/then actions, loops, points, and etc. Designing and developing a game in the real-world context of Minecraft is a key element of project-based learning, and will assist in students in continuing to develop their game design skills after the course. Introducing fundamental coding elements later in the course, after initial game development, allows students to connect to the knowledge they constructed earlier in the course. Learning about coding within the environment of a real game will also help students ground their knowledge, facilitating future transfer of this knowledge.
After designing and beginning development of their games, students will playtest each other's games. This assists in constructionist learning, which requires that artifacts created through learning have societal meaning. It also helps students demonstrate their social awareness, because they will have created a game with a narrative that their peers can connect to and understand. The course will finish with students presenting their project. These presentations will involve metacognitive processes as students explore what they learned throughout the course and demonstrate self-awareness.
Since this action lab is based on the development of a project (outlining a basic game design), the clearest indication of the success of our learning design will be the student creation of these projects. However, there are also many steps for formative assessment along the way. These projects will be hosted digitally on student digital portfolios, which will include their storyboards, peer-, teacher-, and self-feedback, coding practice, playtesting, and a link to a basic design of a function of their actual game. Generally, everything they do in the course is hosted on the portfolio, so the learning is very observable. The portfolio is a clear indicator of progress. Students give themselves periodic feedback, so their learning can be assessed metacognitively and evaluated by the teacher. Finally, students present their progress on their projects at the end of the course in a final presentation. This presentation is the culmination of their learning in the course.
In this version of the course, students will explore the fundamentals of coding logic through storytelling, with a focus on coding throughout the entire course. The introduction to the course will be similar to our first design, making sure that students connect the basics narrative elements in game design to their prior knowledge. The primary external tool we will utilize in this design is inklewriter. Inklewriter is a story writing tool that is simple to use and open source. Students will be introduced to this tool early in the course and will use it to explore different elements of coding logic while developing their own choose-your-own-adventure game narrative. These activities will facilitate learning through a constructionist lens, as students are engaging in creation that as societal meaning. The introductory activities will also help students engage in metacognition, asking them to reflect on what they know about games so that they can apply that knowledge or seek out additional knowledge if needed.
Students will first learn about if-then statements and will use this knowledge to begin development of their own game narrative in a storyboard format on inklewriter. This storyboard will be the first formative assessment in the course, from which students will get both peer and instructor feedback. The second coding element students will learn is looping. Students will develop their game narrative further, adding a looping element to their storyboards. Embedding coding elements throughout the course will assist students in building their prior knowledge as they build their games. Learning about coding while developing game narrative will also help students ground their knowledge, facilitating future transfer of this knowledge.
The remainder of the course will involve students further building out their games in inklewriter. The course will culminate in a final formative assessment in which students will playtest each others’ game narratives in inklewriter, helping students demonstrate their social awareness, because they will have created a game with a narrative that their peers can connect to and understand. When students present their games to be playtested, they will engage in metacognitive processes as they explore what they learned throughout the course and demonstrate self-awareness.
Since this action lab is based on the development of a project (outlining a basic game design), the clearest indication of the success of our learning design will be the student creation of these projects. However, there are also many steps for formative assessment along the way. These projects will be hosted digitally on student digital portfolios, which will include their storyboards, peer-, teacher-, and self-feedback, coding practice, playtesting, and a link to a basic design of a function of their actual game. Generally, everything they do in the course is hosted on the portfolio, so the learning is very observable. The portfolio is a clear indicator of progress. Students give themselves periodic feedback, so their learning can be assessed metacognitively and evaluated by the teacher. Finally, students present their progress on their projects at the end of the course through playtesting. This playtesting activity is the culmination of their learning in the course.
This version would be a completely analog way of teaching coding by introducing kids to the fundamentals of coding without the use of computers. The key concepts are:
If/Then statements
Looping
Logic
Keeping track of data
This can be done via a game board activity, where students are tasked with coming up with their own analog board game with a story, pieces, and rules. They then have to pass this along to another student who plays it, using specific tools to give the character instructions on what to do next. The game would have set up various logic puzzles to complete: if the character does this, then this will happen, etc. The character will wrack up stats and/or points, like Dungeons and Dragons, which the game designer would have to log and keep track of.
If the game successfully runs, then they have done their job. This approach would be full of Constructivism.
We decided to pursue a design most like Design #2 above. In this design, students start learning coding fundamentals very early on in the course, in tandem with game design principles. This allows students to contextualize the coding skills they are learning right from the beginning of the course. It also helps them see the bigger picture and allows them to make their goals for the course from the beginning.
Constructionism advocates student-centered, discovery learning where students use what they already know to acquire more knowledge. We recognize that most students have their own prior knowledge that is likely different than their peers'. Although most students are programming beginners, they have different personal interests and future concentrations they wish to pursue, and they have other previously acquired skills. Therefore, we have chosen constructionism as the theoretical basis for our curriculum.
We hope to help students explore their own interests and learn new knowledge with their minds. This is why our curriculum involves working on a continuous project throughout the course, building knowledge and building the project as the workshops progress. Students will choose the topic they are interested in and that is helpful to their own situation so that we can assist them in knowing how to build their own learning system.
Click the button above to learn more about constructionism.
Metacognition is an awareness of one's thought processes and understanding of the patterns behind them. It is the process of thinking about thinking. It can help people monitor their learning process and improve their overall abilities. It is an essential element of meaningful learning. Our curriculum includes multiple formal opportunities for self-reflection as part of formative assessments throughout the course, as well as more informal opportunities for reflection during each session.
There is also a concept called social metacognition, a combination of psychology and metacognition. Judging people with similar cognition, such as perception and emotional states, can also build up students' metacognitive skills and be helpful for teams or organizations and interpersonal relationships. This concept guided us in developing group reflection and peer feedback sections, enhancing the interaction between students and giving them a chance to help each other monitor their learning process.
Click the button above to learn more about metacognition.
Project-based learning focuses on student-centered learning, which provides real-world practices in the learning process. It gives students a chance to transfer what they learned in the class to real-world cases, which is a crucial part of learning. PBL influences our entire curriculum: breaking down a big project into different small steps and guiding students step-by-step to eventually complete their projects independently and be proficient in applying what they have learned in class to the real world.
Click the button above to learn more about project-based learning.
The choice of MakeCode was not made easily -- as you see elsewhere on the site, there were many other options, all with their pros and cons. The closest we came to a decision was in Minecraft, where students could create logic for their mini games using the mechanics of Minecraft. This was predicated on the assumption that kids knew how to play Minecraft before coming to the workshop. While this is mostly true, it is not necessarily true, and can start students off on uneven footing.
The other alternative was Roblox, which offered a more complex experience. Students wouldn't be expected to know how to make games in the Roblox engine, but the process of doing so is fraught with a steep learning curve.
Our last finalist was Inklewriter, which was considered briefly. This, we decided, would focus too much on the narrative aspect of gaming and less on the coding aspect.
MakeCode turned out to be the best of all the above worlds. Students who are at different skill levels can interact with MakeCode in scaffolded ways; for example, students not familiar with coding can just use the Scratch-like "blocks" whereas students more proficient can convert their blocks directly to low-level code like Python and Javascript.
MakeCode also comes with a handful of pre-made assets, which lets students get right into building their game rather than spending time making graphics. Of course, they can make their own if they wish and import them into the gallery. This makes it easy for students who are more design focused to have their own spin on things, whereas students more interested in coding can focus purely on that.
MakeCode also simplifies a lot of the more laborious tasks when making a game: e.g. the alignment of various objects on the game screen, the connection of variables to various classes, the frame-rate and refresh rate, the "action listener" classes that sense when a user has entered a specific key, etc.
It is also a free platform so students can continue playing with it at home and export it to play on their computer. They will end with a solid project they can showcase, which wouldn't necessarily be the case in the other scenarios.
This all fits with constructionist learning theory -- students can get working right away and shorten the path between their ideas and their final result. It also introduces them to the concepts fundamental to coding and will hopefully spark a more general interest in the field.
MakeCode also provides students with a finished product, one they can send to other students to play. This makes their accomplishment much more tangible and social, pushing them to create more and iron out the kinks of their work.