“Is it possible to code a simulation for a roller coaster or Ferris wheel using touch develop? I have 2 students who want to attempt to do this for a science project they have coming up in 2 – 3 months. Anyone have any ideas?”
This request came from the Microsoft Computer Science Teachers Network (Yammer) Touch Develop group. I do not know anything more about the request, like grade level, course or teacher background so I cannot really give a lot of help. What it does do is get me started on a conversation in programming diversity. Not race or sex diversity, but language/environment diversity.
Sometimes kids will come up with the coolest ideas for a project. I love it when they get their own ideas because they want to take ownership, which really gets them motivated. However, that cool idea (like a Ferris wheel or roller coaster sim) sometimes just does not fit the language or environments being taught. What should a programming teacher do? Option 1: tell the kid they cannot do it. Sit down and get back on task with the required curriculum. Not my favorite option. Option 2: try to get the idea to fit the language the class is working on. This option is not all that bad. It sometimes leads to interesting places. Sometimes the idea will actually fit with the language and the curriculum. This is the win-win of Option 2. Option 3: Option 2 is not feasible because although the language might be able to do the kid’s idea, it just is not a good fit. Or the idea does not fit the language at all. Then it is time to pull something out of the hat that will do the trick. Here is where programming diversity come into play.
A programming teacher needs a repertoire of languages and/or environments. This is not to say they need to be an expert in these, but they should at least be at a level where they know they exist, and know where to find resources. For the Ferris wheel and roller coaster idea, I would immediately think of Alice. I have seen an amusement park in the tutorial examples. I would also look at the Small Basic LitDev extension examples. It would be 2D and require some major head scratching to decide what the finished product would look like but it is still a good thing to think on. I would also start thinking this might be a good project for Unity, either 2D or 3D. I would think of these options because I have been looking at programming languages and environments for a long time.
One way to get this repertoire is to have many years of experience and no life other than digging around the internet looking for solutions to Option 3. Another way is to luck on to a good CS Ed methods course that would look at languages and environments that would show a beginning CS teacher what is out there. This discussion of such a fantasy course is a discussion for a completely new blog post.
So if Option 3 is the best option does this mean the teacher should bail on the present curriculum and take off on a tangent? This might not be feasible in most schools and is usually not that great an idea. It should be a good poke in the ribs to look at what the curriculum is capable of flexing to or maybe if an after-school program is worthwhile.
A good CS/programming teacher has to be always on the prowl for course ideas. The teaching of programming cannot stay static like math or history. If a kid come to me with the idea of building a roller coaster here are some perfectly reasonable questions to ask them. Do you want to print the parts with a 3D printer and actually assemble it? Do you want to build it in Unity, then export it to your smart phone as a VR program and then ride it with Google Cardboard or Samsung Gear VR googles? Do you want to build it as part of a 2D game then post your game on Play Store or itch.io? Absolutely practical and real questions that are absolutely practical and real options.