Tuesday, September 19, 2017

Designing Projects for Programming Students

Last night a teacher friend of mine gave me a USB stick with the projects he uses with his students. I have projects for C++, Python, Java, and Visual Basic from him. Oh and there are 60+ in each category. It’s going to take me quite some time to go through them. It’s got me thinking about projects in general though.

Keeping students interested is important when designing and assigning projects. The projects I’ve looked at from my friend and the ones I have used myself over the years seem to mostly do that. Although knowing what students a quarter your age will find interesting can be tricky.

For me a big issue is that the more interesting a project is the more programming features and functionality it usually requires. For that reason I am moving up where in the curriculum I teach reading files this year. Projects become a lot more interesting when larger amounts of data are being processed. It also means i can get some good test data in front of students.

Determining  the level of scaffolding is another trick. The projects I am looking at show a wide range of scaffolding. And that makes sense of course. In the early projects you want some solid scaffolding to avoid too much frustration. Over time as students get more comfortable with problem solving and how things work you want less. I usually have students work on a concept with me (following my demo step by step) as one way of scaffolding.

Hinting is also an issue once a project has been assigned. I’ve written about that before - Would You Like a Hint? The more interesting the project the more willing students seem to be to figure things out on their own though.

Sources for projects are an other interesting thing to think about. Some of my favorite projects have come from student suggestions. Others from textbooks. Still more for other teachers.

BTW are you sharing cool projects with others? Blogs or conference talks are both great ways to do that. Do you know about Nifty Assignments from years of SIGCSE conferences? Many of them are for more advanced students but some will work with students still at the beginner ranks.

Other sources are informal conversations like at CSTA Chapter Meetings or other events. I’ve been on a number of advisory boards for career technical programs. Those teachers have shared lots of great project ideas over the years. The Advanced Placement readings are still another great venue for sharing project ideas.  Always look for chances to learn from other teachers.

So where do you get project ideas? What makes for a good project for you?

3 comments:

Unknown said...

I love this blog post - a lot to think about here.
- If your school does any work with Understanding by Design or similar, you'll have plenty of coaching that a good project will provide you evidence that a student has learned what you wanted them to. I'll admit though, sometimes I start a project or unit without the end in mind. Sometimes I start a unit and as we work our way through concepts, it becomes clearer where the students are now - and I set the end point as I create the project. I want it to show me they've grown.
- Students do a better job on projects when they have some structured choices... if I can, I assign a project that has an option A, B, and C that all contain the same basic concept. C might be a "challenge" project while A and B are a little easier, but everyone can get the same grade. It lets the students self-select the challenge level but they are still showing they know the same basic concept.
I love the Nifty Projects site and need to use it more! Thanks for reminding me of it.
How do you grade? We use standards-based grading. Would you be willing to share a scoring guide or rubric sometime?

Michael Rosario said...

I really enjoy make magazine, instructables.com, and magpi. I like your discussion on level of scaffolding.

Homework Minutes said...

Your article is really very informative. Most of the students have fear about programming. If they understand the logic then it would be the most prreferable task for them. Especially your "sharing project ideas" seems more attractive.