DEV Community

Tomas Mūžas
Tomas Mūžas

Posted on


Insights on how to teach students a difficult subject

A little bit of context

I am a student myself. At our university, we have a student-driven initiative which is called "Students to students" - higher grade students voluntarily give lectures on difficult subjects to younger students, removing all of the formality of standard lectures.

On the first semester, there come a bunch of first graders. And they are introduced to nothing other than dreaded Assembly 🙂 Having experienced no university lectures before, and kicking off first year with something completely different as ASM leaves newcomers baffled. That is where we step in 😁

Even though I am mostly organising lectures and arranging auditoriums, I have made a few lectures myself (If someone asks, those were on Interrupts, MPL and conditional operations).

In this article, I want to share my experience on what worked, and what didn't.

Give real life examples

What worked really well in my case was comparing Assembly code to C code (in Lithuania, C is a standard language to be taught at school). C code is familiar to all of the students, thus making it easier to understand and read Assembly code.

Sometimes it is not possible to convert it 1 to 1, but that turned out to be even better. ASM --> C sometimes required additional steps in C, which in turn explained underlying logic of ASM.

This way, by seeing already familiar code by the side of ASM, they can understand things better.

Don't forget the context

When entering an unknown subject, it is much more useful to know WHY things are working or implemented in a particular way, rather than knowing WHAT they are doing.

Thats why I didn't talk only about my topic. For example, when talking about conditional operations, I had to explain how memory works, how commands are structured as machine code, that they are written as a sequence one after another, etc.

When you know the fact that commands are written into memory one after another,jmps and their offsets in machine code start to make much more sense.

Use simple language

This might be obvious, but it is crucial to use simple language to explain difficult things. Avoid using any abbreviations until you've explained them and made sure that students understood it (more on that below).

Be a student yourself

This is not meant in a literal way. You need to know, that students are not yet serious scientists, that they have short attention spams, and do like jokes. Don't overkill with jokes or memes, they will find it cringey when it comes from older people and is overused 😁 use informal language, use student slang.

Make sure the topic is understood

There is no point in lecture, if it was not understood. Be open to questions, ask for them, or even force someone to answer them. Especially people that are sleeping 😁 and definitely, don't expect perfect answer. Question them on their answer if it's wrong, to know their way of thinking and to fill in the gaps.

Double or triple check if majority has understood one point before moving to another and stay longer on the topic even if you have to go to absolute basics once again.

Make pauses

Pauses are really necessary. It is really difficult to concentrate on one subject for 1,5 hour. Give students a five minutes break to refresh their attention, to ponder on the subject you've been talking about, or simply to have a smoke 😁

Make your lectures interactive

Don't just give them all of your information. Ask students to explain things themselves. Ask them, why certain things are called so. Ask them, what is their opinion. Ask them control questions to see whether they follow you. Let them guess, and let them fail a lot to learn from own mistakes.

Have practice, not only theory

It is good to give students little excercices to understand subject deeper. After someone solved it, let them explain solution to their peers. It will benefit both them and other students.

Those were my learnings on teaching 🙂 please share your tips and tricks so me and other readers could improve our teaching skills!

Top comments (0)

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.