17
$\begingroup$

One of my goals is to minimize homework. My high school students are high performing, grade conscious, and constantly stressed out as it is. Many of them fall into the "Ivy League or bust" camp, which is a tremendous amount of pressure.

So, when I give labs, I try to give sufficient class time that a majority of kids will be able to finish it with no more than a couple of hours of outside work. That means that I provide lab periods.

Certain students have a lot of natural acuity for CS, and seem to finish labs far faster than the rest of the group. If I provide seven lab periods for a lab in AP Computer Science, I may reach my homework time target goals, but there will often be one kid who gets the lab done by the middle of the second period. What strategies do you use to deal with these kids?

$\endgroup$
  • $\begingroup$ Now that we've had this conversation, you might be able to glean some ideas from here as well: cseducators.stackexchange.com/questions/430/… $\endgroup$ – Peter Jun 11 '17 at 7:48
  • 3
    $\begingroup$ Interesting. My first thought on reading this Question Title was: students who just do the minimum and are not motivated to spend more time improving their submissions. These usually drop out of my curriculum. To paraphrase the basketball coach quote: "You can't teach enthusiasm." $\endgroup$ – user737 Jun 14 '17 at 20:10

12 Answers 12

21
$\begingroup$

I have 3 tiers of labs.

First are the required labs. They're worth 100 points each and every one must do these. If they don't do one, it goes in the gradebook as a zero. These are also the labs that I think are the best of each topic for practicing what they need to work on. My calendar is based on how much time I expect 90 plus percent of the students need to finish this set.

Second and third tiers are bonus and challenge labs. They're worth 110 and 125 points respectively. If a student does these they go in the gradebook. If not, the grade is omitted so there's no penalty for not getting them done. These tend to be extensions of the required labs, but might be a little more difficult.

Generally the students that are the fast finishers are also the ones that like doing the labs, so throwing a few more their direction will keep them working. Plus, it's an AP class so the 10 or 25 extra points on a lab grade will be a motivator.

I also have a page with a list of websites they can go to if they're finished with all 3 sets of labs. It links out to sites like code.org, codecademy, Code Combat, and CodingBat. Sites that are related, but a little more fun than just cranking out labs.

And I'll also let students come up with independent projects to work on.

$\endgroup$
  • 3
    $\begingroup$ Projecteuler is also an excellent site for high-fliers. $\endgroup$ – Ben I. May 26 '17 at 18:15
  • $\begingroup$ @Choirbean - That's on my list too. That's the go to site for 2 or 3 students every year. Also a really good source for lab ideas. $\endgroup$ – Ryan Nutt May 26 '17 at 18:20
  • 2
    $\begingroup$ @Choirbean I do not recommend ProjectEuler. It is much more about math than programming. $\endgroup$ – user58697 May 26 '17 at 19:08
  • 2
    $\begingroup$ While it's true that the questions are very mathy, I've gotten a lot of student enthusiasm from some of them. I have a few go-to exercises (like the dynamic programming exercise about brick line intersections) that have gone very well $\endgroup$ – Ben I. May 26 '17 at 19:32
  • 3
    $\begingroup$ Why would it being mathy mean it's not good for a CompSci class? The ones that do the Euler problems like them a lot, and they wind up writing some impressive code to solve the problems. $\endgroup$ – Ryan Nutt May 26 '17 at 21:28
4
$\begingroup$

I am basing my answer on my own high school experience, some decades ago. I was a junior in a CS class composed mostly of seniors. The format for a five day week was two days of lecture, three days of in class "labs," with the teacher as a "floater," moving from one group of students to another to help out.

Even though I was a year younger than most of the other students, progressed faster, and eventually had my own labs and my own half day tutorial (out of the three lab days), meaning that I completed more modules.

To keep them challenged, you may want to give your best students extra labs (and some extra instruction), half a period out of those seven. They may even have their own grading scale, but you may need to "curve" it in such a way to make sure that they get the grades they would have gotten in the regular course; e.g. a B in the "special" section equates to an A in the regular course. In a sense, it would be a class within a class.

$\endgroup$
4
$\begingroup$

The other answers are good, but there's another angle you could take that hasn't been mentioned: make the early finisher(s) your temporary lab assistant(s). Assuming that what they turned in was suitably bug-free (not that I ever submitted a lab super-early with a critical error still in the code, no way no sir) and depending on the personalities/temperaments of the individual students in your class, you can have students who have finished a given lab help students who haven't finished it yet.

There are a few benefits to this:

  • It's well-known that different people explain things differently, and different explanations work for different people. So well-known that I'm not even uncomfortable saying that without a citation. Someone who's having trouble with the lab because of not understanding the way you explained a concept, through no fault of yours, might do better with someone else's explanation.

  • Even if the student's explanation is somehow a carbon copy of yours, there's still value in it coming from a peer rather than a teacher/authority figure.

  • This benefits the "lab assistant," too; nothing reinforces understanding/command of material like teaching it to someone else.

  • From a purely numbers view, you've now got two (or three, or four) people in the lab to answer questions instead of just yourself.

I would reiterate that the viability of this strategy depends enormously on the individual students you have. They all have to respect each other, be ethical, and buy into the system, and probably like each other a fair bit as well. But in your specific case, I'm not concerned, based on

"high performing, grade conscious, and ... 'Ivy League or bust'"

As a bonus, the job automatically lasts for exactly the right amount of time. You can offer the assistants some extra credit per day worked, if you're that kind of teacher.

$\endgroup$
4
$\begingroup$

I'm a big fan of giving fast-finishers choice. I make one thing abundantly clear to the students from the beginning: if class is 90 minutes long, everyone works on the topics of our course for that amount of time and credit is only given for the class assignments. No extra credit for extra learning. When the students complain that they are doing more work than others, I remind them that they are all working for 90 minutes.

The options I provide are as follows:

  1. Help others
    • I make this a choice, because as a fast-finisher myself in grade school, I was always told to do this when I was done with my work. While I enjoyed it very much, I wish I had been encouraged to dive deeper into the topic at hand.
  2. Think about ways to change the assignment or its requirements and then tweak the code to satisfy the requirements.
  3. Create a suite of test cases to try and break your classmates' code.
  4. Enrich yourself by reading up more on the topic at hand. (For instance, if we are covering loops, perhaps read about all the different types of loops, especially the ones we don't cover in our curriculum and implement them.
  5. Visit a website like others have mentioned and work some problems. (ProjectEuler, Advent of Code, and Code Forces are popular with my students)

.

$\endgroup$
3
$\begingroup$

I try to think of challenge add ons for most projects. A student who finishes early will be asked to add more. I will either make some suggestions or challenge the student to make the project more theirs. Most students who finish early want to do more. I have some handouts of things we don't cover generally because of time and I will hand a student one of them (hoe to add images for example) and ask them to add features.

$\endgroup$
  • $\begingroup$ Welcome to CSE. I just went through your answers thus far, and I hope we hear more from you in the future! $\endgroup$ – Ben I. Jun 22 '17 at 13:52
2
$\begingroup$

This answer primarily applies to the United States, but it should be useful for other countries as well, as the training pages from the USACO (United States of America Computing Olympiad) are accessible to anyone and also because other nations might have similiar programmes.

When the students are finished, ask them to participate in the online training program of the USACO. The disadvantage is that students already need to know C/C++/Java/Pascal (one of them) reasonably well, and they should also have some experience with algorithmic problem solving or have a lot of talent for it, since it doesn't start at the beginning.

On the other hand, I think that a good result in one of the USACO contests (which is seperate from the training program, but the training program certainly helps to do well) should help to get into these universities, but I have no experience with that, so I can't be sure. I think the USACO contests/training are also less focused on math than ProjectEuler is.

$\endgroup$
2
$\begingroup$

In my country we don't have "lab" classes... We simply have classes. In this classes we start by introducing the concepts and then give the students assignments to practice those concepts. I also have to deal with some very "fast-paced" students. For these students I always have some aditional more advanced assignments prepared.

For deeper information on this subject you may check this report from the 2010 ITICSE conference: https://eprints.soton.ac.uk/271328/1/iticse-10-wgSubmitted.pdf

$\endgroup$
  • 1
    $\begingroup$ That is a very relevant research paper. Nice find! In order to make this the best answer it can be (and in case the link one day goes dead), could you summarize the most important takeaways? $\endgroup$ – Ben I. Jun 21 '17 at 19:44
2
$\begingroup$

I agree with @Alfred Thompson - I've had a great amount of success simply providing 'challenge questions'. At first I thought that nobody in their right mind would bother with them, as they have no points or another incentive, but it seems that those with the ability to do so that well they finish early also come with enough incentive to just try things for 'fun' or for 'the challenge'. Perhaps this is why they are good enough to finish early in the first place. I also rarely get questions from students attempting my challenge questions. They just do them! Note: I'm speaking mostly from a first-year at university level here.

$\endgroup$
1
$\begingroup$

Give the students extra work.

I know, so far this sounds a bit redundant with some of the other answers. And I desire not to compete with them (their input is great and may be better), but I offer some more suggestions that may be useful (perhaps requiring some adaptation to fit your situation).

Idea #1

First of all, start teaching these fast students more than the subject matter. Help teach them to be a team, and to help others. The way to do this is to have them be officially declared a classroom assistant, so that other students can know that they are welcomed and encouraged to seek those students. This ends up being a great preparation method for the actual workplace, caring about your co-worker who isn't achieving quite as fast can result in overall team improvement.

Idea #2

An example: I was way over-qualified compared to my peers in one particular class. The class was designed to cover half of a book. The instructor told me to just stop paying attention to the class, and work on my own pace, with the goal being to complete the entire book except chapter 12. Chapter 12 was using Trigonometry functions, and I didn't yet take Trig, so that chapter would have been infeasible for me. Although I slacked off during some partial class periods, I ended up just barely achieving the goal.

Nowadays, with the Internet as an available resource, if a student is way more advanced than the classmates, consider placing that student on a special program that will use up the student's extra time. This could involve encouraging the student to spend time in "study hall" (catching up in another subject where the student may be less ahead), or learning about an entirely different topic (learning another language like HTML/CSS/JavaScript or AutoHotkey, computer networking, remote systems management, learning another language). The student may appreciate the special program, and end up learning something else quite useful.

$\endgroup$
1
$\begingroup$

For testing, I give lab practicals. I write them so that they are very difficult to finish. Usually, I have 6 questions. This is a "performance based" assessment.

1,2 show basic proficiency. Get 'em and you have a B-. You can now relax and do more. These problems build confidence. This often gets more reluctant students to perform at a higher level. They stop worrying about performing poorly and begin to think about kicking some serious butt.

3,4 are good proficiency. Get one and you are B, get two, B+/A-.

5,6 have annoying features that lead to headscratchery. Get these and be in the A, A+ range. They usually have some kind of twist that requires a good degree of ingeunuity or familiarity with the docs to do.

I allow the use of documentation. This is what professionals have. So I do the same thing. This occurs in a 90 min lab period.

$\endgroup$
1
$\begingroup$

One option hasn't yet been mentioned. I've had good luck with it in certain circumstances. The background is that the students were all eager and hard-working, but some had more experience and some were truly exceptional.

The basic idea is that you can provide two versions of a lab assignment. The first version covers the basics of what needs to be learnt. The second version is truly challenging and goes beyond, either in concepts or in difficulty of implementation. It could even have subtle elements that require deep thought.

Students (or teams) choose which assignment they will do. They are each "worth" the same amount for grading purposes and no-one has to do both. The assumption here is that the superstars probably would find the first version rather trivial and wouldn't learn a lot from doing it, but most students might find the second version frustrating.

Some of the superstars might choose the easy version, especially if it is done outside of class/lab time and they are otherwise busy, but you will find, with certain students, that the challenge of it intrigues them. You may also find that some students who lack the necessary background might want to do the advanced version. You might want to advise them otherwise or make some other adjustments. You might also provide a requirement or two in the background of students who want to do the advanced version.

These sorts of things take some experimentation, however. The first time you do it you might find that one version was too easy and the other too hard, requiring more time than was available. For the future you can adjust, but for the first run you may have to adjust how you assign grades. The big factor is that you require learning, not necessarily project completion.

You have to be very clear, of course, when presenting the two versions that one is a lot more challenging and that there is no "extra" credit for doing it. Don't mislead anyone.

The particular case I'm thinking of was a Database course that discussed both the theory and implementation of database systems (not just individual databases). Some of the algorithms used are also discussed in an Algorithms course. My recommendation to the students was that if they had already implemented something similar to the "easy" assignment they should do the other to avoid boredom. I was pleasantly surprised at how many students picked the harder problem and also how much the students picking the "easy" version learned from the exercise.

$\endgroup$
0
$\begingroup$

When I was a student I was one of these. Back then my faculties would just make me sit around. However, I told myself that if I ever become a faculty, I would not make students wait around.

My solution is (this is a little brazen, and it may not work in every campus but at least it did in my campus, and sessions that I conduct) is to simply let them go. The normal session is about 3 hours here. So, if someone finishes, I tell them that they are free to leave the class and generally have a good time. Many a times, the labs would be followed by a free afternoon.

I found this is to be beneficial to me because...

  1. The ones who finish early, are also the trouble makers. I suppose that is somehow related. Once they are out, I can actually focus on guiding the ones who need my help. These early finishes become a constant source of interruption and that energy can be used on the slow folks.
  2. it acts an incentive. Knowing they have an opportunity to leave early, some students tend to put in a little extra effort learning the programs they need. That allure of leaving early can be great motivator.
  3. The slow kids also seem to be encouraged by this because they don't have to bear the gloating of the fast finishers for the next 2 and half hours.

Again, before I let these early finishers out, I do take permission from the head of the department or the person incharge. That is a logistical issue, but I ensure that proper protocols are followed.

$\endgroup$
  • $\begingroup$ If I did that, I'd feel like I was abdicating my responsibility to those students. My students weren't in my class to prove to me that they didn't need to be there. Perhaps you can organize things so that you provide a variety of challenges so that they don't get away without expanding their knowledge, not just showing it off. $\endgroup$ – Buffy Aug 27 '17 at 15:07
  • $\begingroup$ Well, I have been running a tech club in my city for the last 5 years. These students end up joining my club where I fund their software projects, I go to the extent of buying them expensive computing hardware, providing them much needed textbooks and broadband connectivity. All out of my pocket. I only let them out of the lab, but not out of my guidance. If anything, I have gone above and beyond my responsibility as a faculty, spending thousands of dollars out of my pocket so they can do things. $\endgroup$ – Jay Aug 27 '17 at 17:06

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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