I teach a high school student who has already developed an understanding of the language used in my curriculum and causes difficulties. The lectures and programming projects in the curriculum bore this student, and as a result, he doesn't cooperate when it comes to doing the coding labs and projects. He simply doesn't agree to do the work. An obvious "solution" is simply to give him a low grade, but it is not an ideal solution, because he has readily mastered the material.

Specifically, what techniques can I employ to encourage him to work on projects and to cooperate? Alternatively, what changes can I make to project guidelines for such students?

Tests reflect that the student knows the material (though it is clear that he is disdainful of the way it is taught).

  • 8
    $\begingroup$ Nothing about your question seems specific to CS. Could you rewrite it? $\endgroup$ – Ellen Spertus Jun 6 '17 at 20:24
  • 1
    $\begingroup$ Differentiate: Look at your lesson objectives, and give him more challenging work, that leads to the same plus additional objectives. There is always more that they can learn, even if they are at M.Sc level, there is more. May be a research project. — Can you edit the question to make it specific: What material? What course? What age? $\endgroup$ – ctrl-alt-delor Jun 6 '17 at 20:37
  • 1
    $\begingroup$ What language is your course in? That might make a huge difference for how to provide additional challenges. $\endgroup$ – Peter Jun 6 '17 at 22:37
  • 2
    $\begingroup$ If the situation and school policy allows it, maybe the advanced student can help others as a teacher's aid. The helps the other students, reduces some of your load, and helps the advanced student by making them think about the subject enough to explain it to someone else. $\endgroup$ – Gypsy Spellweaver Jun 7 '17 at 1:28
  • 2
    $\begingroup$ How is disdain and uncooperation usually handled where you teach? $\endgroup$ – user737 Jun 14 '17 at 22:00

12 Answers 12


The best way to deal with this kind of student is to head it off at the pass. If you can get the student at the beginning, you can often prevent the problem from festering in the first place. I have a student coming in next year who I have already been warned will have this problem, and I plan to show this to my class on the first day:

enter image description here

I will then say something like, "For whom is this situation unfair?"

When the kids point to the fish, I will point out that it is just as unfair to the monkey. I will then ask them to talk to a neighbor and figure out why.

I will finish up by saying that I have a promise for the fish of the class: everyone who puts in the work will be able to climb the tree. That's MY job. However, I have to find a way to be fair to the monkeys as well. That means that I must reserve the right to try to find ways to push them to get better in my classroom.

If they are in that position, and can get the work done very easily, and find that I give them harder work, I ask a few things of them: (1) understand that this is fairer than it may initially feel, and (2) understand that this comes from a place of actually caring about them as people. Making more appropriate assignments for them is harder for me as well. If I didn't care about them as people, I could just let them get away with the minimum.

In essence, then, I am trying to recast making differentiated, harder assignments into something that the students will understand as both a loving act, and one that respects them deeply as individuals.

  • $\begingroup$ This is a very good solution. In fact it helps with another students who fits the description (warned about future problems like that). Thanks! $\endgroup$ – ItamarG3 Jun 7 '17 at 5:45
  • $\begingroup$ Sounds like a Pedagogical Pattern, actually. Great name for it too. Head It Off At The Pass. Love it. $\endgroup$ – Buffy Jul 1 '17 at 16:04
  • $\begingroup$ See the book, Pedagogical Patterns: Advice for Educators for a moderately complete view, though there is an international, ongoing effort. Joseph Bergin's website has a lot of the material. I have a connection to this group. -- OOPS. I was responding to a question, now withdrawn. $\endgroup$ – Buffy Jul 1 '17 at 16:28

You said he refuses to work, but has mastered the material. How do you know he's mastered the material?

I've had students like this in the past. They'll finish 2 weeks worth of assignments in a day and a half.

Talk to them. See what interests them about programming. The few times that this has come up, the student had something specific they wanted to build. It was well above what was expected in class, but it was still programming, so still related. We came up with a plan for them to work on their pet project, which always required that they finish the assignments I gave first. Then, they're free to build their project.

  • $\begingroup$ That is the core of the problem. He refuses to cooperate, but I have seen his work. He does do things on occasion. $\endgroup$ – ItamarG3 Jun 7 '17 at 5:46
  • 3
    $\begingroup$ Cooperation is a vital skill for a programmer. $\endgroup$ – user737 Jun 14 '17 at 21:58
  • $\begingroup$ @ItamarG3 What work is required to pass the class then? $\endgroup$ – Thorbjørn Ravn Andersen Jul 8 '17 at 3:52

A few ideas...

Scaffold your problem sets. CS50 -- and by extension CS50 AP -- sections students according to "less comfortable" and "more comfortable" tracks. (See what they do here for pset2.) Giving students options, especially in terms of difficulty level, is a key. This may involve creating problems with additional, optional components, which will be additional work on your part, but it also gives opportunities for other students to extend their learning. I also love what they include in their syllabus:

Know that CS50 draws quite the spectrum of students, including "those less comfortable," "those more comfortable," and those somewhere in between. However, what ultimately matters in this course is not so much where you end up relative to your classmates but where you, in Week 11, end up relative to yourself in Week 0.

Each student’s final grade is individually determined at term’s end. Remarkable effort and upward trending are considered, as is input from the teaching fellows. The course does not have pre-determined cutoffs for final grades. The course is not graded on a curve. Those less comfortable and somewhere in between are not at a disadvantage vis-à-vis those more comfortable.

Do you reward a student who knows everything from the start and doesn't show any signs of progress with a student who knows nothing at the start but makes dramatic progress? That's a huge philosophical question to consider in terms of how you assess student learning.

Give him additional, empowering responsibilities. Find a way for him to have a special role in the class. Use this advanced knowledge as a strength for you to use. When giving time to work in class, have him be a source of answers to his peers' questions. Better yet, have him lead a walkthrough where he has to teach a mini-lesson for how to approach a particular assignment. If he's going to be bored during a lecture, encourage him to write a sample program or two for use in direct instruction.

Make him complete the same work in a different language. Have him complete the same assignment, but in a language different from the one assigned. This will require him to learn different programming idioms, libraries, and paradigms. A solution in an imperative language would be much different from one in a functional language. No one is an expert at every language, so there's always a new challenge to be had with a different language.

On a much smaller level, you could require challenges on a site like HackerRank either in the language of the class or a new one entirely.


I also have two Java-specific suggestions...

  • Have him learn a lower-level language (e.g. C) in which to implement the program.
  • Challenge him to leave the object-oriented world and learn a functional language in which to complete the assignment.
  • 2
    $\begingroup$ Some very excellent suggestions. I really like the last option. Good chance the student is ahead of the curve because of self-directed learning and/or a true passion for the subject. Helping the student reach their own potential is much better than requiring them to drag their feet at the standard curriculum's level. Also allows for grading their work against their potential, and the student can feel they've actually earned the grade instead of passed some required course. $\endgroup$ – Gypsy Spellweaver Jun 7 '17 at 2:43
  • $\begingroup$ The java specifics are quite useful. I will definitely use them, $\endgroup$ – ItamarG3 Jun 7 '17 at 5:47
  • $\begingroup$ I'm a big fan of giving strong student's extra responsibilities. Research points to deeper learning and understanding of material through teaching it to others, and that's certainly been my experience with students as well. If the student can check their attitude about the way that the course is being taught, they could become an excellent asset to helping bring up students who are falling behind. Why not make use of that? $\endgroup$ – Mark DeLoura Jun 12 '17 at 16:12
  • $\begingroup$ As a Junior in high school, my daughter became a teacher's assistant in a technical program. She actually knew quite a lot more about the contents of the program than the teacher did, so he delegated a lot of the responsibility to her, including reviewing hte work of other students, which enabled him to take care of the details (school politics, etc) that students shouldn't be involved in. The biggest problem with that was some students resented the perceived amount of "pull" she had, even as her role was primarily coaching them towards better grades. $\endgroup$ – pojo-guy Jun 29 '17 at 4:08
  • $\begingroup$ @nocomprende You may have to learn a mindset in the process in addition to just learning the curriculum. That will not happen if you skip the class. $\endgroup$ – Thorbjørn Ravn Andersen Jul 8 '17 at 3:54

No one has yet mentioned the long term effects on the student. If the person wants to explore computing as a career they need people skills, not just technical skills. But that is a lesson your entire class needs, not just this one person.

Highly valued people in the computing industry spend most of their time and effort working with other people -- and not just in coding teams. Design, estimation, managing large code bases, etc. all require people skills. There are a few people who are absolute horrors personally who are valued, but those are extremely rare and need unique skills. For everyone else, learn to communicate, to offer and to accept advice.

On a somewhat different scale, but perhaps related, I know a few people who are successful but also Extremely Introverted. But they have worked to overcome their tendency to withdraw and so their introversion isn't always obvious. Introversion is good if you draw power from your own thoughts and considerations, but it can be a handicap if you need to act outwardly in the world and haven't learned how. So, if that is the real issue here, deal with it as such. For the record, I am very introverted by nature. It cost me a lot early on until I learned how to deal with it. The scariest thing for me was to state my opinions. Perhaps you didn't notice that here :-).

For the entire class, field trips to local tech industries can be helpful so that students (all of them) can see what really happens.

  • 3
    $\begingroup$ These days if you want to do anything interesting in computing, you must work with others. Even if you could do it on your own, your employer may dislike having a bus factor of one. $\endgroup$ – Thorbjørn Ravn Andersen Jul 8 '17 at 3:56
  • $\begingroup$ To explain: "Bus Factor" is the minimum number of team members that, if they left the project (went over the cliff in a bus crash) the project becomes unviable. Pair Programming and similar practices are partly intended to increase this number as knowledge is spread through the team. Sometimes called "Bus Number". Thanks @ThorbjørnRavnAndersen, an important point. Only the extremely rare "prima donna" is allowed to work alone and then only when there are no alternatives. If "Thug The Troll" has a unique skill then you may need to let him work alone. But you must really need that skill. $\endgroup$ – Buffy Jul 8 '17 at 12:14
  • $\begingroup$ I think more than documentation is necessary. For all of the usual reasons/caveats about docs. Experienced folks > docs any day. I've been the bus number one person a few times and the fact that I drove a VW Bug with a gas leak terrified by boss. $\endgroup$ – Buffy Jul 8 '17 at 15:07

Mastering the material is less than half of what it takes to be a great engineer. Showing up and doing the work - even when it is phenomenally boring - is critical.

Giving him a pass will not in any way prepare him for a career in this field. If he's not willing to do the BS tasks, he shouldn't pass. If you feel so inclined, give him the final and base his entire grade off of that, and he'll become someone else's problem later. BUT, as an educator - especially at this level - your goal should be not only to develop mastery of the material, but to imbue a good work ethic and a sense of responsibility.

Case in point: I hate changing diapers, but I love being a parent. Guess what I do quite frequently, and how fun that part is.

I've met quite a few very intelligent people who work menial jobs because the industry won't adapt to their demands, because their boss was "a moron," etc.

If this were a university-level course, he would fail. A (small-ish) part of high school is about preparing for university, and for life afterward. If this student winds up in my class at university, with this attitude, he will fail. Communication is key - talk to the kid about this - but excess accommodation (outside of disabilities) is NOT doing him, or anyone else, any favors.

Aside from teaching, I've worked in embedded systems, EE, web, and games. The latter is the most accepting of this resistance to structure, but even that has its limits. You have to do the job you're given. If you're lucky, you can turn that into the job you want.

It is FAR better that the student learn this now, rather than coasting on your compassion, understanding and attempts to help until, one day when the training wheels come off, he falls flat on his face. Help, in this case, may be teaching him a lesson. It sucks, but I'd rather have learned that lesson at 16 than 30.

Good luck, and I admire the question. Far too many teachers just don't care.

  • $\begingroup$ Hi David! Welcome to Computer Science Educators! Glad to have you on board, and thanks for your candor. I hope to see you around the site more, or maybe in chat. $\endgroup$ – thesecretmaster Jul 7 '17 at 21:57
  • $\begingroup$ @thesecretmaster there's a chat room? Sweet! $\endgroup$ – 3Dave Jul 7 '17 at 22:07
  • $\begingroup$ Yup, right here. It's called The Classroom. $\endgroup$ – thesecretmaster Jul 7 '17 at 22:09
  • $\begingroup$ @nocomprende Excellent points. $\endgroup$ – 3Dave Jul 9 '17 at 15:42

In the spirit of the other answers, I would recommend:http://www.usaco.org

It contains excercises that progress from trivial to "stomps most undergrads" which would help him find his level (and maybe some humility).

It contains an automatic grader with hidden test cases which allows more independant learning + he learns to debug and search for edge cases.

It's the official site for the training and the selection for US national team which might help him get some awards or medals if he is really talented (IOI,google code jam,..) which might help him in college admission \job interviews.

Students from other countries can use the website to train and I think the equivalent website for the French team is: FranceIoI.org

  • $\begingroup$ Welcome to CSEducators. Thanks for that link and the explanation. $\endgroup$ – Buffy Sep 13 '17 at 23:01
  1. Figure out some simple way to let him test out of a unit - a quicker program to show he knows his stuff, a simple conversation with you, something that doesn't require much effort.
  2. Ask him what he wants to do first - he might want to work on some impressive projects of his own.
  3. If he doesn't have any ideas, gather some challenging project ideas, and show them to him - they could be learning a language like lisp and writing some project in that, or they could be implementing an algorithm in a paper, or they could be... you get the idea.
  4. To include the cooperation aspect, get him started on an open-source project as well of his choosing, or let another advanced, interested student work with him on his challenging project.
  5. If he's disdainful of the way it's taught, you could challenge him to teach the class for a day.

I suspect that there is something more to the situation, the student is unhappy about things beyond just your class. Talk with your superior, they might already be aware. Possibly talk with the parents, but they might not know what the cause of the issue is, or wish to deflect it onto you (if it has to do with home life).

Throughout my schooling, until I got to college, I was depressed, unmotivated, or even resisted schoolwork. My parents tried everything: getting angry and forceful with me, getting angry at the school, changing schools twice... There might not in fact be anything that anyone can do to improve the situation.

In that case, it is just like the scene of two cats trying to maneuver around each other without causing a fight. Wait for better days.

  • 1
    $\begingroup$ I think, this is probably the case. I had to deal with a high performer but uncooperative individual a while ago. The problem is usually outside the campus. If the student is agreeable (and in my case he was) I was able to discuss and figure out what happened and provide him some much needed life advice. Eventually he got better but there is only so much we can do. $\endgroup$ – Jay Aug 27 '17 at 7:02
  • 1
    $\begingroup$ Yes, @Jay, this is exactly right. Keep communication open at your end. You might not be able to do anything, but you can remain available, unjudging, and if this person ever needs someone they know they can talk with you. Life is complex,and we need to let go of preconceptions of "how everything should be." It is not. Those struggling have to use their own wits to deal with it not being that way, and we can help, or at least not add to the burdens. $\endgroup$ – user737 Aug 28 '17 at 12:17

I was this student. Back then, we were learning BASIC in high school. I had learned it when I was nine, and had already learned Pascal (the advanced language we'd learn next).

My high-school teacher responded to my question "Do I really have to do this programming assignment?" with the following:

  1. I need something to grade for your classwork. You may replace all the class assignments with one graded project (every six weeks); but, it has to be harder than all of the class assignments combined (and it had better be good).
  2. You still have to take the tests / quizzes.

Today, I as so grateful that she permitted me to challenge myself. She's one of the handful of High School teachers who's name I remember.

I wrote a rudimentary chat system, an ASCII "graphics" editor, and a role-playing text adventure game (pre-GUI computing). It was great, and my teacher would pop in from time-to-time to ask what I was doing, and remind me of the deadlines.

Decades later, I'm still enjoying programming!


Ask him if there are any projects of interest he'd like to work on. I'd try to engage the student in research of some sort but he would still be required to demonstrate proficiency/mastery of the topics in the course.

  • $\begingroup$ The main issue is that we have project guidelines. They can't be made to fit the student's choice, so I am partly trying to think of a guideline that would allow him to do something on his level, and yet he'd still have to meet requirements (I guess you could say: "on his terms"). $\endgroup$ – ItamarG3 Jun 7 '17 at 5:49
  • $\begingroup$ My daughter is in a technical program in high school where she is well beyond the level of the teacher or the coursework, so she TA's. She takes on a management role for class projects and helps to review/coach/prescreen other students work. this frees the teacher to take care of non-technical and non-classroom things that are a part of running a technical class. $\endgroup$ – pojo-guy Jun 29 '17 at 5:23

When I was in high school, by the time I had my first programming courses I already knew a lot more than the contents of these courses, since I had been programming as a hobby for a while.

The teacher soon realised this and didn't want either of us to waste our time. He provided me with each mandatory assignment/mini-project when I finished the previous one (no artificial delay), and when I'd done them he offered me to take the final test ahead of schedule.

I passed these courses in ~2 weeks rather than 10 and had my grade, and everyone was happy. I didn't have to lose time in class, and he could stay focused on the students who were at the level the course intended to teach.

I guess this comes down to what rules the school has, but I think it is fair that the teacher has no responsibility to go beyond the course subject, and should rather put his time and effort into working towards the majority of the class getting to that level.

So I would suggest doing the same, if this would be allowed. The final test questions can of course be adjusted (similarly to re-exams at university) so that there was no risk of me "leaking" the questions to other students.

If you explain beforehand that this is an option, and would mean the student can get done asap, maybe they will see that they have an incentive to cooperate and get the work done.

  • $\begingroup$ Welcome to Computer Science Educators! "The final test questions can of course be adjusted..." made my stomach turn a little bit. Creating good questions for CS tests is hard. I hope we hear more from you in the future. $\endgroup$ – Ben I. Sep 3 '17 at 1:08
  • $\begingroup$ @BenI. I agree that creating good CS questions is hard. In this case it was a very basic programming course though, and I think any book about programming will contain plenty of examples that could be useful. Thinks like for-loops, string copying, etc. I understood the OP to be in a similar situation, not university level CS. I didn't discuss it with the teacher, but I'll have to assume it wasn't a big issue for him since he was willing to do it. I'd imagine they have a set of questions they rotate anyway from year to year, otherwise the problem of leaking questions would easily happen. $\endgroup$ – user985366 Sep 3 '17 at 13:38

First of all, I don't think the student is the problem. If you think he has understood the chapter well, you should also kick it up a notch. Backing down or not stepping up will essentially point that you know the bare minimum that is required to get a teaching job. Just tell him or your head that he is much more advanced than the class and try arranging for a more complex lesson so that he also gains interest in the lesson.

  • $\begingroup$ At the cost of the remaining 95% of the class failing tests and not understanding the material? And I find your statement that "I know the bare minimum that is required for a teaching job" very, very insulting. $\endgroup$ – ItamarG3 Mar 13 '18 at 14:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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