From Paratrooper to Prodigy: Student Types I've Met in 5 Years of Teaching Programming

From Paratrooper to Prodigy: Student Types I've Met in 5 Years of Teaching Programming
Photo by Michał Parzuchowski / Unsplash

I have been teaching programming at different universities in Croatia for about 5 years and a bit more. I was an assistant professor/professor at 2 state universities and 2 private universities. I am still teaching at 1 state and 1 private university, part-time.

During this period I had a chance to encounter and work with different types of students.

Most of my programming subjects were related to the basics of programming, object-oriented programming, and front-end development. Programming languages varied from C, C++, C#, and Python to JavaScript.

To better understand my classification of students, I think it's important to first understand my teaching style.

My teaching style

I like to be friendly with students, throw some jokes but still maintain needed distance. I think it's important that students are not afraid of you, so they don't hesitate to ask questions.

In practice lessons, I prefer hands-on coding together with students. Before writing a single code line, I ask them different questions until we together get a solution that we will code. Then during coding, I again asked them if we could write it better, shorter, more concise, etc. You can ask a question 100 times, I will gladly explain it over and over again until you get it.

When something boring is on the plate that day, I buy little chocolates, ask students many questions, and throw chocolate to a student who answers correctly.

Sometimes when we prepare for an exam, or we have shorter tasks, I ask for volunteers to be a "professor" and solve the problem (with help from all of us in the classroom).

Most of the time, there are one or two volunteers. At the beginning of the lecture, students must give their signatures on numbered paper for evidence of presence. In case there are no volunteers, I run a random number program that I call the "Wheel of (un)fortune".

A student with that number will be a "volunteer". Then after the student solves the problem, he can spin the wheel for the next "volunteer".

They might hate this approach, but at least I am sure that they will prepare and practice at home. If not to learn then at least to avoid shame in the classroom.

I also do Kahoot quizzes, since I am a also big pub quizzes fan. Quizzes engage students as seeing your name on that winner podium is always nice. There is always a spreadsheet with quiz results and at the end of the semester I give some small gifts to the student with the most wins.

All of these practices depend on how lectures/practices are structured and agreement with other professor colleagues in case multiple professors work on the same subject.

Evil side

Now onto things that students don't like so much about my teaching style. There are only 2 things I ask from students:

  1. respect in the classroom
  2. work ethic

I strongly believe that professors in universities should correct bad traits in students because they can project later on in the workplace and with other people. Sometimes you must be a hardass, but it's all to the student's benefit.

There are countless examples for 1. point, but two will be enough:

  1. I was going from student to student, checking their homework. This usually takes 2-3 minutes per student. I check their code, tell them to guide me through that code and ask them a question or two. Sometimes I also ask them to change something in the code.

    I came to one student, he watched a football livestream on his mobile phone. I was behind him, waiting for him to notice me, but he was all into the football. Then I coughed, he apologized and I sat next to him.

    I drilled him for the next 20 minutes with questions and code changes. After that, he was always proactive in lectures and never used a mobile phone.

    At the end of the semester, when they had the assignment to build a real project, I assigned him a project for managing a football team (stats, training, player development, starting line-ups, etc).
  2. Same situation but with a different group of students. In full seriousness, one student showed me a photo of some code on her mobile phone and presented it as her homework.

    I rinsed her for a good 10 minutes, asked her if she was serious, explained to her that I hadn't seen anything like this until now, and gave her a calm but tough speech. She left crying but she deserved it.

    After that, she was okay and never did silly things like that.

Now onto the next thing I hate the most. Cheating.

Or when students copy-paste homework from others. Don't get me wrong, I am fine if you take the idea for a solution and write it in your code. But I can't understand how you can copy-paste everything from variable names, function names, the number of blank lines, etc.

For example how you can have exactly the same number of elements in the array, with the same values:

int arr[9] = {52, 21, 13, 48, 35, 78, 60, 89, 94};

Because of this, I warn them at the start of the semester to not do this.

Almost always they will try to break the rules. So I check homework after every practice but I don't mention anything until week 3 or 4 as that's when they have 3 or 4 homework submitted.

On week 4, I download and analyze their homework to find similarities in the code. The result is this beautiful graph:

In this graph, I can see who is the main dealer and who copied the code from whom. Some of them are so reckless, they even copy the name of the person who gave them the code.

After the analysis is done, I post a message on the student forum with a list of all of the students with these incredible telepathic abilities. Most of them are done after that.

Sometimes I offer them redemption through seminars with dedicated topics from the subject. The tricky part is that they must write the seminar, record themselves presenting it, and upload the video to YouTube. The video must stay there until the end of the semester.

Now that I explained my teaching style, we can go onto the main topic - student types!

1) The Paratrooper

Students of this type don't have a clue what's going on. They don't come to lectures. They also don't do homework and practice.

Just like a paratrooper, 2-3 weeks before the end of the semester, they appear out of nowhere asking what they need to do.

99% of them fail the first semester and drop out of college.

As a professor, there is not much you can do. You can try to contact them via email and check what's going on, but your emails are never answered.

2) The Zombie

Students of this type are coming to lectures always looking tired, unmotivated, and passive. Their body language is just as if someone forced them to go to college.

Some of them you can motivate and shake out of their zombie sleep if you force them to do something. Be prepared to give them praise when they show initiative and some of them will start responding positively.

Unfortunately, you won't be able to help the majority of these students as they have the same problem with all subjects.

I feel like these students are there because their parents forced them to go to college or they have no preference for it.

3) The Minimalist

The minimalists are known for their laid-back approach. They only do the bare minimum or even less. Always looking for an easy way out.

I always offer multiple tasks (required and bonus tasks) to solve for practice or homework, but these types of students never solve those bonus tasks. They solve only the required ones. They also never ask any questions.

I have nothing against these types of students, if they do the bare minimum, they know that they will get minimal grades but at least they will pass the subject.

Sometimes, some of these students will try some dirty tricks to fool you, like intentionally sending corrupted MS Word docs, so you can't open them. With that, they can buy more time to finish their seminars. Their whole family tree is often sick and their grandpa died multiple times until now.

I had many of these students but I remember one guy who is a perfect example of this type of student. He was a lot older than me (he could be my father). He told me straight ahead that he needed this diploma because he would have a bigger salary at this company and he doesn't care about the programming, so if I can go easy on him.

You can interest some of these students in programming if you talk with them about other attractive things like what you do in your company, how is the company culture, funny situations in day-to-day work, etc.

4) The Contrarian

Contrarians are extremely frustrating to work with, but luckily I have encountered only a few of these.

Just to be clear, I am not talking here about the students who can correct you when you are wrong. On the contrary, I would like more of those students. Sometimes I intentionally write nonsense in the code, just to see how many of them will correct me.

Contrarians are students who like to challenge authority and be in the spotlight by arguing. They will pick on something and never admit that they are wrong, even if it's obvious.

I had one student who asked me why the programming books we use, are written in the English language and not in Croatian. I explained to him that these books are not published in the Croatian language and they have to learn English if they want to work in this industry.

English language in the IT industry is like the Latin language in medicine, it's just necessary. The code you write will be in the English language, the documentation you write will be in the English language, you will communicate with your colleagues in the English language, etc.

A few days after that, I found out that he was complaining to other professors. He was complaining about how bad I am as a professor. He also told how he was disappointed and angry with me because I forced them to use a non-native language and he wanted to opt out of the subject.

Another example was one student who would be angry when he experienced errors while coding. Every time I helped him discover the cause of the error, he would flip out, blame the stupid programming language and how his approach was good.

Whenever I tried to explain to him that it was not the case, he would never admit the mistake and instead blame me for not respecting his approach.

After he did that a couple of times, I intentionally left him to solve the errors alone. Eventually, he learned the lesson to be more respectful.

The majority of these students are not "fixable" as I believe their behavior is a character trait in combination with the frustration that they manifest to people around them. The best you can do is be disciplined and don't give in to them.

5) The Balanced Scholar

The golden middle.

Balanced scholars are those students who ask questions, try to improve, and are proactive in the classroom. They do their obligations mostly on time, but they are not perfect. They make a lot of mistakes, and sometimes they are clumsy.

I was a student of this type.

Sometimes, they are scared and won't ask questions, so you have to read their facial expressions and explain things more slowly. On more complex concepts (eg. recursion), you must repeat things multiple times to make that click in their heads.

They are extremely trainable, they accept advice and try to improve as much as they can.

I enjoy working with these students.

6) The Relationship Builder

These students are basically the balanced scholar with one big bonus - their communication and charisma skills.

They easily make new friendships with colleagues and they are not afraid to ask tons of questions.

Often they ask for advice on other things besides the subject I am teaching. For example, which subjects to enroll in next semester, future work opportunities, experience in some companies, common people we know, etc.

I have met a bunch of these students, some of them are now my friends.

7) The Hustler

In Croatia, students can work and study at the same time. For most of them, this is a triangle where they can choose 2 out of 3 things:

  • college
  • social life
  • work

As a professor, you can spot students who are in this situation fairly easily.

They are always in a hurry, they do their obligations and go do their business. Because they have too much on their back, their work can sometimes seem sloppy. Very error-prone in their tasks as they do everything in a hurry. As a professor, you should help them as much as you can and understand their position.

Some of them start working as developers very early, around the second or third college year. I always encourage them by saying that I am jealous as I started working as a developer in my final college year.

I tell them to continue pushing as they will be in huge advantage later when all others start to search for a job.

8) The Hidden Talent

You know those introverts who are silent, don't ask anything, don't raise hands, but when the professor asks them a question, they know the answer. They also have very good grades.

I have met a decent number of students like this. They are like sponges, with every advice you give them, they listen and do so.

For example, once I ran into a conversation with students on earnings. I explained to them how they could freelance on UpWork.

After a year, I met one student at the mall. I found out she is now a pro freelancer on UpWork with a 100% job success score. She admitted that she was too shy in college and work forced her to be more open.

As these students don't have a problem with knowledge, your job as a professor is to help these students overcome their lack of communication and fear of the spotlight.

Ask a lot of questions in the classroom, directly ask them for their opinion about the approach in the code, make them explain it, ask them if they want to solve the problem in front of the class, etc.

Find ways to provoke them to be more open.

9) The Academic Prodigy

This is the rarest type of student you will encounter.

When you talk about some topic and you see that the student understands it perfectly. For example, if you are teaching arrays, you can see that the student knows the concept of arrays and solves all tasks with ease.

I have met only a couple of these students.

I remember one guy was like this, I saw he was bored in practice lessons. He would solve his task and help others. In conversation with him, I found out he was into programming from an early age and that these basics were too simple for him.

After 3 or 4 weeks, I tested him with an exam. He solved it in front of me and I told him that he doesn't have to come to practice lessons anymore. He passed it with the highest grade. I also gave him advice, on where he can focus his next work to become even better.

One warning, sometimes you will encounter a student of this type who is very competitive.

I had one who always wanted to be the best. If his colleague did all the tasks, he would do a bonus task just to be better than him.

One time he volunteered to solve the task in front of everyone. As soon as he sat in my place, he deleted all the code from a previous student with such delight while commenting that the code was not good. I immediately corrected him and told him to undo the changes and reuse the code in a new task.

As a professor, you need to correct this type of competitiveness, promote healthy growth for these students, and give them tasks to do that are on their level.

Conclusion

Not everyone will agree with my classification but remember that it's not classification based on a student's character. It's purely based on my teaching style and how the students fit into that.

What student type were you? How do you fit into this classification? Do you have any tips when working with specific types of students?

Comment below and let me know 😊