If we are to believe Daniel Pink, autonomy is one of the fundamental aspects of motivation, so integrating student choice is extremely valuable if I want my students to remain highly engaged.

I have found that at certain times (such as after the AP test in AP Computer Science), it is very nice to allow students to choose a project in a very open-ended way. Want to work in Unity? Go for it. Want to create an Android app? Perfect. Want to make an SMS-based game using Twilio? No problems here.

If you also occasionally make room for highly open-ended projects like this, how do you ensure that the lab time is not wasted? I will place my answer below, but I am extremely interested in how others do this.


4 Answers 4


The first step is for the students to design their own projects. I give them a timeframe, and make clear that they will be held accountable (within reason) for finishing the project. I don't just accept the project proposals blindly - there is a negotiation here.

There's an odd twist to this step, actually: I often have to persuade the students to lower their sights a little bit, because they often have a poor sense of how long their grand idea will actually take.

Any changes after my approval, however, must run through me.

Every other Monday, the students and I negotiate/create biweekly mini-milestones. They know how many weeks they have to complete the entire project, and they then tell me what they feel they can get done within a week. It has to be highly specific (so that it can be evaluated), and both the students and I must feel that it would mark sufficient progress towards their overall project goal. (In my experience, I find that I simply accept their goals directly about 75% of the time, and in the remaining 25%, I have to steer students towards easier goals about as often as harder ones.)

When the actual evaluation takes place, if they have met the goal, then they only need to tell me what they intend to accomplish for the next week. If they have not met their goal, then we have a more in-depth conversation to figure out how to recover so that the project still reaches completion.

That's the mechanics of it. A few interesting takeaways:

  1. One of the greatest joys of the entire enterprise is just getting a chance to ask them questions during the weekly check-ins. I've personally never created a Chrome extention, a Unity game, a Flash game, or an iOS app, so getting to ask questions about the model code they've found, and the changes that they are making, teaches me quite a lot.

  2. Using this structure, I don't have to weight the final project itself as heavily as you might think. If the mini-milestones are well-formed, then the projects almost always come out very well. In the few instances where it does not, the mini-milestone structure has ensured good work throughout, and there is typically some external factor that got in the way. The grading seems to be more fair this way.

  • $\begingroup$ I agree completely. This is how I do it for the final projects in intro CS at Denison. The key is to get them to start early, but I find it's like pulling teeth. When I did weekly check-ins, students hated it (because we still had our usual labs due). If I do it again, I'll end the usual labs when the check-ins start, so students don't perceive that it's double the work. $\endgroup$ Commented Jun 3, 2017 at 7:09
  • $\begingroup$ That makes a lot of sense. I can see how a structure designed to get students to get work done regularly on long-term projects would be unpopular if they're still doing other classwork. :) $\endgroup$
    – Ben I.
    Commented Jun 3, 2017 at 14:02
  • $\begingroup$ My students drill down on the Labs to the exclusion of all else, even reading the textbook - immediately after I have lectured on the section they need to do the next lab. Giving them overlapping projects would be like saying, "do this while you are sleeping tonight." Not sure why they are so incredibly deadline-focused that they don't do things to help them work faster. The stress of having to get a job, I guess. $\endgroup$
    – user737
    Commented Jun 15, 2017 at 13:31

I have students complete a long-term project over a very wide spectrum of CS and applied ICT areas. Each student has one project of their own choice and design. Topics proposed by students at present include architectural design, phone apps, animation, video and sound, typography, robotics, coding, story-telling, website, and research projects.

I use two main strategies to encourage good use of time and thus meaningful progress. These are reflective learning journals and group meetings. A bonus is that this scrutiny discourages plagiarism.

Students keep a reflective learning journal in OneNote that they share with me, and I expect at least three meaningful entries describing what they are doing (photos, screenshots, video, etc) per week. Along with moving around the classroom, this is my primary check of on-task progress.

I also run meetings with about 6 - 10 students in a group (every 3 weeks or so), where each student describes what they are doing, obstacles, and solutions. These meetings are a cross between the Harkness Method and Dragon's Den/Shark Tank, where students have to front up and own their project and their progress. Other students (and me) chime in with thoughts and suggestions. I call these meetings "The Table", and ask students - what are you going to bring to The Table? Are you ready for The Table?

I find students need to be taught/cued in to the reflective learning journal and The Table, but once they have experience and confidence they respond very well. Both the learning journal and The Table are graded.

This frees me to be able to move around the room interacting with individual students.

To summarize, I find that a triangulation between learning journal, The Table, and classroom interaction is an effective way to promote and monitor effective progress in individualized project settings.

  • $\begingroup$ Wow, someone else assigned a journal. You read their journals? I was just going on what Gerald M. Weinberg said about "a tool for self development". $\endgroup$
    – user737
    Commented Jun 15, 2017 at 13:35

The way I would do it is have two options, which branch out into whatever the student wants. That makes the choice easier for some students.

For example, two options could be:

  1. Your project should use networking (Sockets and so on, or access to internet for whichever reason) in whichever way you want. This can be a chat application with gui, a lan-based board game etc.

  2. Go wild. If you have an idea which might not fall into the previous category, then go for it. No limitations. However, the student should write documentation and eventually create a javadoc (if using java, but the idea is the documentation or API output, along with the code itself).

A teacher\educator can replace the networking in the first option with anything, so long as they teach it. These two branch out, so the students develop self-learning and other skills.


This was one of the biggest challenges of teaching AP CS Principles: students were allotted 12 hours of time in class to work on the Create Task. This task involved them designing a program of their own choosing with no real teacher influence. That absolute freedom was a bit of a struggle to manage since students were working on a variety of projects at different levels of completion and motivation.

Here are some insights students shared with me after the fact when I asked them how I can "increase the effectiveness of the 20 hours of in-class work on these projects [Explore and Create Tasks]" next year:

"Setting more goals per class would have been helpful in order to space out work."

"Next year to increase the effectiveness, you could have somewhat-stricter small due dates for pieces of the project so you can check up on the progress of the students. This does not have to be graded, but you could still be able to see where everyone is regarding the tasks."

"You should first make everyone set a goal for each class period so that they can map out how they want to use their 20 hours so they don't think they have more time than they actually do."

"After each day, prompt the students to make a checklist for the next class period, so that they know what their goal is for that day."

Key take-aways: goal-setting (both big and small), breaking the task into smaller pieces, assessing work at the end of each day to prepare for the next, keeping them accountable, deterring procrastination (as much as feasibly possible).

Heeding student feedback, I plan to incorporate more formal check-ins along the way next year using the outline of the CS50 Final Project to guide how I structure the time. The four components of the final project are Pre-Proposal; Proposal; Status Report; and Implementation. Since I have four weeks, each component will be able to match the weekly progression quite nicely.

Ultimately, when in doubt, I trust student feedback to tell me what worked and what didn't. That trust is key in my reflection on areas of success and areas for growth and in my improvement as an educator.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.