In less than one month I'll be graduating from the equivalent of high school (I'm in Latvia). In my high school you also get a certificate based on which career you choose eg. a Chef or a Computer Technician.

Starting next semester there is going to be a new study called a "Programmer Technician", which I have been received an offer to teach )because I've been working as a programmer since I was 15 years old). How would I go on to teaching, like assess the students, give them homework (eg. how much etc.). How prepared should I be when the lesson happens. Stuff like that.

I'm currently 20 years old, and the students will be 16 year olds

  • $\begingroup$ You might look at the following answer to a quite different question: academia.stackexchange.com/a/130930/75368 $\endgroup$
    – Buffy
    May 31, 2019 at 10:17
  • 1
    $\begingroup$ How old are you, and how old are the students? (It's not directly relevant, except that it can help people translate mentally from your country's education system to their own.) (BTW, don't answer in a comment; please edit your question to incorporate the information directly.) $\endgroup$
    – Ben I.
    May 31, 2019 at 10:47
  • $\begingroup$ I'm guessing that your edu system is not terribly different from what happens in the US undergraduate education, though maybe restricted to fewer topics - such as the US "Major concentration". $\endgroup$
    – Buffy
    May 31, 2019 at 14:44
  • $\begingroup$ We have a meta thread here to which people can add descriptions of their country's educational system to help aid others. You might want to add an "answer" for the system in Latvia and neighbor countries if applicable: cseducators.meta.stackexchange.com/q/204/1293 $\endgroup$
    – Buffy
    May 31, 2019 at 15:32

2 Answers 2


I will draw on and supplement my answer pointed to in a comment.

The main things you need to create for a course are

  1. A syllabus, listing topics and how much time (approximately) you will spend on each one.

  2. A list of student activities (exercises and projects) that they will be required to do to learn the material. This is the most important element.

  3. A way to give individual feedback to each student on their work. This can be hard, depending on scale, and may require assistants at large scale.

  4. A way to get feedback from the students on their learning and on their perception of the course.

  5. Some mechanism for delivering the content of the course. This can be lecture, books, notes, videos, online materials, etc. Don't assume that lecture is the only possibility.

When creating the first draft of the syllabus, it is helpful to have more material than you can likely cover. But it is essential that you know which topics are critical for the students and which might be dropped when time becomes an issue. Students can learn some things on their own, of course. Make sure you have a timeline that will include the critical topics.

When creating the student activities, make sure that you emphasize the critical topics. And, for a first time teacher, realize that people learn through reinforcement and feedback. Nobody learns much on first seeing or hearing it. You need to actively engage the brain. This normally implies some repetition, both in exercise and in lecture. But feedback is also necessary so that students don't somehow draw the wrong conclusions from what the see, hear, and do. A simple grade on an exercise is not sufficient. Individual face to face discussion is best, but usually infeasible. Written comments are the normal compromise.

To obtain student feedback I always found that an anonymous channel was useful. In fact, though it feels scary, a public but anonymous channel. If a student said that the course was terrible in some way, but it wasn't, other students would correct the writer. I didn't ever need to respond. Students often do course evaluations at the end, but that isn't sufficient to let you make corrections if necessary. A periodic questionnaire is one mechanism.

Some things to consider about course structure.

The main thing to look at is how you use face to face session. Do you "broadcast" material via lecture or otherwise or do the students use that time as a laboratory. If the latter, then content is made available to them at other times, through videos or written material. This is called a flipped classroom and a lot has been written about it. You can also do a hybrid, with some course sessions devoted to lecture, some to questions, some to lab work, etc.

One advantage of the flipped classroom, especially with young students, is that you get to be present to monitor their learning in real time. But you will need a way to make sure that they actually study the content. A short daily quiz is one possibility if it becomes an issue. Another is requiring a one page written summary of the material studied.

The next important thing to look at is how much collaboration and group work you will permit and require. For some things it is useful for students to be required to work strictly alone. If that is the case, make sure that you have made the rules explicit. But in computing, especially, group work is very valuable and so, at some point, it should be permitted. At some point it should be encouraged. At some point it should be required.

For group work you need to decide who defines the groups and how. Self chosen groups sometimes works, but not always. There are advantages for instructor chosen groups as well as for self chosen ones. One interesting way to choose teams is for the instructor to choose team "captains" and for the captains to choose team members in rotation, as is done in forming "sandlot sports teams". The captains can serve as communication conduits with the instructor, but are not, explicitly, team managers.

For group work, also, it is best to discourage (or forbid) "simply" dividing up the work between members. This is almost always a failure with novices. They don't realize that it adds a complex step of integrating their individual work and often fail at it. Likewise any underperforming member can end the success of the whole group.

It should be obvious that communication is essential in education as it is done today. I find it useful to find a mechanism in which students can always get their questions answered, either by myself or by another student. For this I provide a mailing list to which every student is subscribed. Students are encouraged to ask and answer questions, but also adhere to any sharing rules in place (no posting code...). I found this more useful, being asynchronous, than group chats, though I also used those on occasion, posting a transcript after the chat finished. This might be less essential in a flipped classroom, however.

Some things to consider when delivering the course for the first time.

You will most likely have too much in the syllabus and will almost assuredly try to do too much. Not an absolute, of course, but pretty common for a new teacher. So be prepared to be especially flexible with everything, including grading. Focus especially on the student tasks and on their progress, not on your own activities (lectures,...). If they have a good experience, then they will be encouraged to continue their studies. If not, they may decide to leave the field unnecessarily. That doesn't mean being "easy". You can be demanding, but you have to be fair. You have to be reasonable.

I'll note, in particular, that a large project in a course can be a "success" even if no student or group completes it.

You also need to be aware, especially at novice levels, that the students may not be experienced learners. Many students find things easy for many years and don't learn how to apply themselves. But then, they hit a block and don't have any skills to carry them past it. This is one reason we require that exercises be done as homework or otherwise.

But students also may not know, and likely don't, how to take notes effectively and extract key ideas from readings. You may need to teach them how to do this and require it. Again, repetition is key. Taking notes and never looking at them again is not especially effective. Making summaries of your notes is much better (reinforcement).

And don't forget to make notes for yourself about each student. This goes beyond grades. A note-card for each student is useful, noting any blocks you see or any special requirements. Dating each interaction can be useful if conflicts ever occur.


Do a retrospective after the course to set an initial plan for the next time you do this course or something similar. What works. What needs to be improved. Keep notes for yourself.

Keep in mind that the course is a success if the students learn something useful. You can feel like it is a failure, but it isn't if the students succeed. Sometimes stumbling when answering questions and not knowing the answer, immediately, to a question is a good thing. Some things are hard and it doesn't do the students any good if they get the misconception that they are always supposed to be easy. When that happens they can feel like failures, when things are really just hard.


Please do get the requisite material from whoever did teach it before you! Also look around for colleagues who are willing to share their experiences with you.

Teaching introductory programming is not easy. As an experienced programmer, you just don't remember what the stumbling blocks were when you started out, and probably won't understand many of the problems your students run into.

As always, remember you are certainly not the first one doing this, look around how others do it, see what works and what doesn't.

Good luck!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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