Thursday, June 21, 2018

Autonomy, Motivation, and Teaching Computer Science

Of the several courses I teach, my favorite course is call Honors Programming. Its a one semester course that is the first real programing course for my students. Its my favorite course because it is the one I have the most autonomy teaching and because I am very prepared to teach it. I extend this autonomy to my students as much as possible. I find that the end of year semester wrap up project is the best learning experience of the course. In large part that is because the students select their own projects and seem very motivated to learn what ever they need (and somehow missed during the semester) to get their projects to work.

My biggest frustration with the course is that students get a solid base, do one pretty interesting proj3ect and then they are done. At least for a while. Many take Advanced Placement CS (some AP CS A and some AP CS Principles) but both of those courses tend to be pretty constrained. They don't really allow for really big projects that as self selected.

What I really want to do is teach a follow on course that is purely project based. I want students to pick a major project that they are really interested in and commit to learning, on their own, the things they need to know to complete it. Yes, I want a whole classroom full of students learning different things and working on different projects. I've seen amazing projects come out of classrooms run this way over the years. I am tired of grading simple easy to create programs that are only mildly challenging.

I'm working on a proposal for this sort of course. My friend Doug Bergman runs some serious project based courses and is partly the inspiration for this. As are a couple of other teachers I have learned from over the years. It seems that students really get motivated to work on big projects, even scary projects, when those projects are meaningful to them. A motivated student will really put in a lot of work. They also pay attention when a teacher points them in a direction.

One plus about Doug is that he has written the book on this sort of thing. I'm learning a lot from Computer Science K-12: Imagining the possibilities!: Bringing creative and innovative Computer Science to your school  It really has me excited. (I recommend Doug's book BTW for anyone looking to create or expand a computer science program. Lots of good stuff there.

I'm looking for more ideas as well. Grading is a concern especially for administrators and parents. Doug has some stuff on that in his book but I'm always open to more ideas. I know that giving students too much autonomy scares some people. Keeping them on task and making steady progress can be an issue. Students often think they can goof off now or change priorities for what they think will be temporary needs and still get everything done at the end. They often guess incorrectly so keeping track is important.

In the long run, I think that this sort of opportunity with motivated and interested students can result in a lot of learning. It can also help build interest in computer science, help students learn to learn, and result in benefits for all concerned.

BTW, earlier today I heard an interesting, and I think related, report on NPR. A Lost Secret: How To Get Kids To Pay Attention

One key quote.

“Many studies have shown that when teachers foster autonomy, it stimulates kids' motivation to learn, tackle challenges and pay attention, Deci says. “

That’s what I am talking about!


Garth said...

I have never have good luck with the big project scheme. I love the idea but the implementation is a bit of a problem. Kids often bite off more than they can chew and if I bring them back to reality the autonomy thing is sort of out the window. There is often the problem as to what to do. Coming up with project ideas is not trivial. For my Unity course I can come up with doable ideas for a semester project but for my Python and Small Basic/Scratch classes it just has not worked. For Unity I have them build a Rude Goldberg device. Show some examples then let them learn the software. They come up with some great devices.

Grading projects always is tricky. How do you grade an easy project that is completed vs a difficult project that is not? Projects also require a lot of away from the computer planning. Story boarding, designing a GUI, planning procedures/subroutines/classes, breaking the project into smaller pieces, all this needs to be considered in the grading.

With 4 to 5 students I think it is doable. More I just do not see a good scheme and still end up with the autonomy we want to instill. Having a set of proven projects for the kids to chose from would be more practical from the grading/teaching side but again the autonomy and sense of ownership is lost.

When you get this figured out write it up in book form and I will buy a copy.

Doug's book was great. I am trying to sell it to the local university as required reading for their CS Ed minor (which is still in the warm and fuzzy stage).

Alfred Thompson said...

I am also worried about the im0plimentation. I don't have the experience that Doug has which is a concern. But I know of several others who have made it work. It's going to be a challenge for sure.

Unknown said...

I talked to someone at a poster session at ISTE that uses the AGILE framework in his classes complete with SCRUM he is going to have some webinars on the approach. I can have him add you to the list if you are interested.