Computer science courses naturally have a lot of lab assignments. And some students will naturally finish quickly, and some not so much.

It took a while, but I’ve finally come up with a system that works in my classroom. I break lab sets into three sets.

### Required Labs

These are the labs that I think are needed to get a base understanding of a topic.

Required labs are, well, required. If they’re completed the grade will go in the gradebook. If not, it goes in as a missing grade which our gradebook system averages as a zero.

I base my calendar on how much time I think it should take for about 90% of the students to complete this set of labs in class. Sure, there will be a few that don’t and need to either come in after school or finish at home. But most should be able to complete this set.

### Bonus & Challenge Labs

I also have two additional tiers of labs. Bonus labs are worth 110 points and challenge labs are worth 125 points.

But, if one of these labs isn’t completed it’s omitted from the gradebook. It doesn’t average in for the student. Same goes if they score less than a 100% on the lab. I won’t put a grade in for either the bonus or challenge lab set that hurts their grade so there’s no penalty for trying.

Not sure that this would work for every class, but I teach AP and PreAP courses where the students are motivated, at least partially, by grades. And the chance to get a few extra points can be pretty motivating. It usually works out that students that complete all of the bonus and challenge labs get an extra 2 or 3 points on their average at the end of the six weeks.

It also helps that the students that are really into programming generally want more labs to do.

### What if…

Yes, a few students finish every lab in all three sets.

What I don’t do is let them work on other classes. I found that if that’s an option then students tend to rush through labs at the risk of understanding so that they can work on other classes. And that goes double if they’re free to do other activities like playing games online after they’re done.

I’ve got a page in Canvas that lists several computer science enrichment activities that they’re free to do after finishing lab sets. At the beginning of the year LightBot is the most popular. Within a few weeks CodeCombat takes over the number one spot.

Students also have the option to propose an independent project. This year I have students working on retro games, Project Euler, 3D modeling, and preparing for programming contests.

### How’s it Work?

I think this works pretty well. At least for the 4 years that I’ve been doing this.

But I don’t think that students working through the bonus and challenge labs get the most benefit. I think it’s the struggling students that get the most benefit. By not requiring every lab it seems to reduce the stress level.