Thanks sbook, here are my answers:
You must like it or you wouldn’t base a project around it, but what are your thoughts on the way students learn with BlueJ? As someone who started out programming with Notepad, I tend to be a bit suspect of such tools but have read interesting things about the way newcomers respond to the visual nature of programming.
My first computer was a 5Mhz PC-XT (yes I am totally dating myself!). I learned to program with BASIC on DOS, and then moved on to Pascal and C, all in a text-based environment. So I was naturally against fancy tools also when I first started teaching. The reality, however, is that the goal of a modern introductory computer science course is more about programming “concepts” rather than using tools like a proper text editor / command-line (these are more “advanced” topics for students that want to continue on with computer science). Therefore, intro courses often rely on more visual programming environments to shield students from the “behind the scene” details, and focus on topics such as variables, loops, conditionals, list processing, etc.
Expanding on the aforementioned visual nature of programming, how much of the core 3D concepts are being taught to the students? When people occasionally show up on the forum saying “I started taking a Java class last week.. I’m here to make a game!” we usually respond with something along the lines of “become comfortable with Java and programming before diving into jME”.
Computers are so powerful and pervasive nowadays that kids going into introductory programming classes expect to achieve great programming feats (like creating their own 3D video game!) after just one course. In a traditional intro computer science course, kids soon realized that programming is hard work and that they would not be able to do anything “useful” for a long time, so they lost interest and abandon the field altogether.
What I am trying to provide is the illusion of power
. I actually don’t cover any 3D concepts at all (nothing beyond high school level math). The added value of env3d, in my opinion, is the fact that students can start doing “3d stuff” right away — all they need is to understand is the cartesian coordinate system to get started. Of course they’ll hit a wall eventually if they decided to do more complex stuff, but by that time, they would have learned enough Java to cross over to jME. BTW, env3d exposes certain parts of jME so programmers can have full control over the scene graph and have access to many of the jME features when they are ready
You introduced this as a tool to “help teach Java”, so it seems that teaching the concepts of programming to them are foremost.. Have you found out whether or not students are further engaging in programming at an extracurricular level? From my own experience, and I suspect that of others as well, I needed to work on a project that I was able to enjoy and see a real purpose to before I got bitten by the programming bug.
Every term, I have students that got so motivated by the whole 3d programming experience that they spent hours and hours of extra time working on their final project, way beyond the requirement of the course. You hit it right on the nail — programming enjoyment comes from having real projects to work on. Kids (and adults like me) like video games, so programming games gives them the motivation to keep going even when the programming gets hard.
Thanks for the questions and feedback.