4
$\begingroup$

I am teaching several classes consisting of 12-15 year-olds the beginnings of programming by exposing them to Code Monkey and Code Combat. These resources successfully engage most of my students and follow a smooth progression such that most of my students are able to follow along mostly unaided. (There are significant differences in how fast different students go though the exercises, but that aside.)

My question is about similar follow-up resources: Are there any resources out there, for once my students have worked their way through Code Monkey and Code Combat, that will allow them to continue developing their programming skills, without the difficulty going up too much all at once (causing them to quit), but also without stagnating at the level of Code Combat?

To provide some context on what Code Monkey and Code Combat cover: some basic movement commands, basic looping, named variables, and that is pretty much it I think.

$\endgroup$
  • $\begingroup$ Hi, and welcome to Computer Science Educators! You've come to the right place. Could you edit this question to include some possible goals? (Also, for those of us who don't have Code Monkey or Code Combat accounts, can you summarize roughly what was covered in their programs?) $\endgroup$ – Ben I. May 30 at 14:50
3
$\begingroup$

You could try the Bootstrap curriculum, the materials are free and can integrate with existing curriculum instead of being electives. A talk about the design of the program, and how to design highschool computer science curriculum in general is given here by one of the Co-directors of Bootstrap, Professor Shriram Krishnamurthi from Brown University.

$\endgroup$
2
$\begingroup$

Look at Small Basic or Scratch or Alice. All are great and have a lot of support out there. Designed to get and keep kids interested in programming. A little bit more advanced is Visual Studio Code with Python and the Lego EV3 extension. Programming robots in Python. What more could you ask for in the way of getting kids interested in programming?

$\endgroup$
2
$\begingroup$

Game Maker

Game Maker is how I developed most of my programming skills when I was that age. It has a very user-friendly UI that has pre-generated scripts for new users. What's great about it is that the premade scripts are made of real code that they can dive into when they get their feet wet.

First you start by making a bullseye bounce around the room by giving it some simple premade instructions (When this thing is spawned, it moves in a random direction. When it hits the top side of the screen, reverse its vertical direction, etc). Then you add some interaction, like causing an action to occur when you click on it (makes a sound effect, increases point by +1, destroy the object, create new object).

Once they get the hang of it, make a brickout game. Teach them how to make powerups and new types of bricks. Teach them the value of planning for any contingency by having them test their own games. My first real, enjoyable game I made, for myself, was a Brickout game that slightly randomized the direction of the ball each time it hit the wall or paddle, took in consideration the direction of the paddle when a ball hit it so you had some control, had 5 or so powerups, 2 switch bricks that turned certain bricks solid or non-solid, and so on. If I had free time, I was perfecting my game, trying to tighten on that one boundaries bug I found when I collected too many speed+ penalties that caused the ball to move so fast the outer bounds check didn't have time to process in a step, or work on that new idea I came up with to have a paddle on both sides of the screen for harder levels.

Game Maker is not limited in the slightest, as it's been used to make critically acclaimed games like Hyper Light Drifter, Undertale, Nidhogg, Iji, and Risk of Rain. Your students may recognize some of these. I've personally enjoyed all of them.

Nor is Game Maker overly complex. A simple understanding of loops, events, collisions and hit-boxes are the most unintuitive things a student needs to learn. The rest comes with persistence, which is not unlike any professional programming.

You will definitely need to be lenient in terms of time and structure for some of the class, as it will feel closer to real programming than a program designed to imitate it (like Code Combat). The good news is that it's so intuitive that the students who don't need your assistance will quickly advance themselves while you are busy. Having done a few 3-hour seminars for highschool students, this is exactly what I experienced (helping 1/3 of the class personally while the rest teach themselves). This does create a quandary for a long-term curriculum for a regular classroom, as you will have to balance keeping education open for those who want to teach themselves while keeping the pace rigid so that those who need assistance don't fall behind. A good solution to this is by:

  1. Provide extra credit, up to a cap, for weekly assignments. So they have a week to make a working concept of a game, and how fun/efficient/complex their solution is determines their grade/extra credit.

  2. Make each weekly assignment be different in its goals, with a strict to-do list for each day. Week 3, Day 1, create a simple AI for a moving creature. Week 3, Day 2, modify the AI to have some interactive functions (when player gets within X Pixels, activate Attack mode). Have a prebuilt version made for each day and go over the mechanics from the previous day, maybe even using students' examples of problems and successes. This allows everyone to see a working foundation that you can use to show specific mechanics, while also allowing them to make something new without them getting stuck with their personal projects.

$\endgroup$
1
$\begingroup$

If you are willing to switch to Java and also willing to do a bit of work upfront preparing (or finding) scenarios, then I recommend that you look at Greenfoot. It is a graphical framework for programming in Java that gives students a lot of feedback on their programs and includes an integrated development environment as well as the graphics screen.

Along with Greenfoot, the system, there is a teacher's forum that provides support but also contributed scenarios that anyone can use. See The Greenroom. I have contributed a few scenarios to the system myself.

The same people that created Greenfoot have also built BlueJay, which is a more traditional Java IDE, but also intended for novices. They also have a book that is a good introduction to programming using the Greenfoot system.

Greenfoot requires installation on a machine currently, though they are working on a browser based system I think. You can make the scenarios as simple or as complex as you like and you can provide as much or as little scaffolding for the students as you like. Generally speaking the code behind a given scenario is open for students to see and modify. This can be a useful learning experience - reading and maybe modifying code that is more sophisticated than you can currently create.


Note: I am an occasional contributor to Greenfoot, but not part of the development team.

$\endgroup$
1
$\begingroup$

Greenfoot is an excellent recommendation (as per @Buffy). If you wanted to stay in the games arena (and not move onto Java), at the machine level, we introduce assembly with Human Resource Machine, which the kids enjoy very much. It's worth noting that the challenges become quite hard towards the end, but they ramp up nicely, so this works well for students who proceed and different paces.

If you're looking for a more competitive arena, Screeps has always looked promising to me, and certain types of students would find it highly motivating.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.