This will be my third year teaching Introduction to Computer Programming. The first year I had 15 students which was a good showing, but last year I only had 5 students. It turned out to be a scheduling issue, but I was still worried about the health of the course, and whether or not it would continue to be offered. Good news is that there are about 30 kids enrolled this year, so there are two sections. Enough inside baseball.
I’d like to outline some of the changes that will be made for this upcoming year.
Standards Based Grading
The majority of the grade for this class will now be based a list of skills. Unlike in math, there will still be significant other parts of the grade (like projects) but the SBG list will be the majority of the grade. I’ve just made up the following list of skills for class, so this list will be volatile. A massive benefit to being the only person who teaches this course, is that things can change quickly on my whim. It’s a luxury.
List of standards for class.
I saw these Finch robots in a news article somewhere and asked our District Technology Head to buy one for testing.They are pretty cool. No batteries or wireless connectivity so the cost is quite low (~$90 each). A bunch of different features, and the Development Environment is already fleshed out. You can program the robots using all the languages that we’ll be using in class (Java, Greenfoot, and Python). I was lucky enough to get a class set of robots. Super excited. Kids will love them.
After “discovering” Python this past year and throwing it at the kids and seeing some great success, Python will replace parts of the previous Alice and Java curriculum. Python code is as clean as it gets, and it’s also quite powerful. I’d actually say that its the best “learning” language I’ve seen. Java really sucks for beginning programmers, the conventions and syntax are just painful. Python is simply the best.
I’ve already written a love letter to Project Euler. I’ll be expanding on PE this year with the students. There are probably 10 problems that any Intro to Programming student should be able to solve (with some help). The best can grow from there.
This tool makes Java extremely approachable for the beginning student. Greenfoot is a 2D development environment for Java and it allows students to easily manipulate complicated environments. The best thing about this tool is simplicity in describing objects and object inheritance. If we have 3 different things (eagle, fish, minnow) that all can move, should we make the same move command in each object type? Or should we put all three of these in an Animal class that has a generic move command so that they all get it from inheritance. I had struggled on explaining this concept to previous students, but this exact case came up in Greenfoot and it was much easier to explain with this example.
Also Greenfoot makes creation of a game quite easy.
(My Greenfoot game: Chuck Norris Shooter.)
Click on image to play game.
(edit: Forgot to mention the following!)
There are a bunch of great free(!) or cheap resources that I’ve found online to help the students out.
Dive Into Python is a great book for learning Python.(dead site, thanks Melissa Holmes!) Python Scripting: Overview.
- How to Count is a nice book to remind you of the basics.
- Learn Python the Hard Way is a superb DIY guide to learn python and programming.
- Think Python is an open source book that is very handy.
I don’t think many of my 3 readers are Computer Science people, but please let me know what you think. Also let me know if I’m missing something important or there is some great tool out there that I should know about. Thanks!