Last September I moved from working full-time as a Software Engineer to teaching full-time as a lecturer in Computing at IADT. It was a thoroughly enjoyable and busy first year. This is some of what I picked up along the way. All of this comes from one year, at one institution, on one course. I still have a lot to learn, but if you're considering teaching, I hope that this documentation of my experience will be useful to you.
I have split the post into the following:
Some quick background on the job. My official job title is “Assistant Lecturer in Computing”. The job can be split into four parts: teaching, student supervision, research and practice, and administration. For me, alongside teaching and supervising students, I am also a year tutor for second years for the course I teach on.
Before planning how I’m going to teach a module, I spend some time thinking about who the students taking it are. I consider their backgrounds, world-views, previous experience, level of education, and preferred learning styles.
In an ideal world, each student could be tutored individually to deliver the optimal course for them. In the real world, of course, that isn’t possible. Instead, I create a set of student archetypes and try to cater at least somewhat to each.
Some examples of things that I implemented in my own modules based on the archetypes I’d identified: explanation videos of assignments, anonymous question forms, accessible course websites, classes dedicated to project work, more project-based classes in the run-up to deadlines, and bonus sections for assignments to allow high-achieving students to challenge themselves.
Small changes can go a long way in helping to maintain momentum for students participating in the module. In my mind, one of the most important roles as an instructor is to help students build and maintain momentum throughout a module to learn about the subject matter.
Most students that I teach are young adults, learning to fend for themselves in the real world for the first time. They have busy social calendars, potentially long commutes (there’s a large problem with housing in Ireland in 2026), and half a dozen other modules to juggle. They may have challenges in their personal lives in myriad other ways that I’m not privy to.
This, along with undeveloped time management skills from well over a decade of structured, formal education, means that they will be working on assignments the night before they’re due. I try to be prepared for this and cater for it where possible. Ultimately, the goal is to maximise the chances of learning. Running assignment Q&A sessions in the days before deadlines, and building more availability into my schedule helps students get the help they need, when they need it.
I make sure to communicate deadlines and coursework submission requirements often, through several different channels, with reminders close to submission. This took me a while to build the habit of doing, having come from an engineering background. I have adopted a rule that I repeat everything at least three times in class, and follow up with written announcements in the module learning management system and on the course website.
Every now and again I have to sit and listen to a lecture for an hour or longer. It’s a good reminder of how difficult it is to maintain focus and attention for that long.
Most of my classes are timetabled to be at least two hours long, and occasionally three hours. Apart from the obvious 10-15 minute break every hour or so, I aim not to talk at my students for more than 10-15 minutes at a time. This is easier said than done. In computing, there are often reams of important theory that students need to know to build a high quality implementation. The lowest effort way to deliver this as a lecturer is with a hefty slide deck, and a dry, knowledge-dense lecture, which is still a common approach in third-level institutions. I have tried very hard to keep to the 10 minute rule. After the 10 minutes, it’s either a small activity, tutorial, or a quiz for students to test themselves. This breaks up the class and resets their attention spans. Of course, like any rule, sometimes it has to be broken. I must admit that I break it more often than I like.
I have found that the long lecture/lab format works against me more than it works for me. The format encourages you to open a firehose of information on students. It also splits the week into a fixed block for delivering material and another for testing how well it was absorbed, which isn’t a great experience for many students.
I have considered and asked other colleagues about using a flipped classroom method, where all content is provided upfront for students to consume ahead of class. It involves a huge amount of work that isn't really feasible in your first year of teaching, but I’m also not convinced that it is much better.
Are all students really going to come prepared to class? My modules all have between four and six contact hours per week as it is, and asking them to do even more feels like a tough sell. Ideally they could spend class time learning most of what they need to know. Students have also told me that they dislike pre-recorded content or content that was clearly not created by the lecturer, that it is a bit soulless and they feel that it’s a low-effort play by the lecturer.
I’m still unsure on what the best format for spending in-class time is, but I like a format that’s similar to an online coding course. There are sections of theory, followed immediately by practical activities and tutorials to reinforce learning, but to do it together as a class. I will run the class, and all students will follow along with me. All of the material for the class is available on the course website so students who find the pace too slow can work by themselves. Initially, I assumed that most students would just ignore me and proceed at their own pace. To my surprise, most of the class prefer to follow along and ask questions as they go.
There also appears to be value in doing it together in class. It acts as a level of accountability that you don’t get sitting in a room by yourself. I think of it as the same effect I get from studying in a busy library rather than at home.
Students ultimately care about their grades. Not all students strive to get first-class honours in your module, but they all at least want to pass. As a result, they talk about your assessments amongst themselves a lot. They ask each other questions far more than they will ask you. They help each other out, share their own materials, and generally strategise about how to pass your assessments. This kind of collaboration is fantastic, and coming to class fosters it. Students often have ad-hoc conversations that then continue in the class Discord, or WhatsApp group chat. A lot of learning occurs during the collective struggle to pass the module.
I teach in computing where, in my experience, there are more quiet students than talkative ones. Questions asked in class usually come from a few extroverted students who are comfortable talking in front of the whole class. This has its benefits. If an extroverted student asks a question, and it’s related to the topic, my answer will be of benefit to the whole class. However, if the answer to the question is not of benefit to the entire class, I now try to defer the answer to the student individually after class instead. Sometimes students also have questions they never ask. To tackle this, I have a simple anonymous Microsoft form linked on the course website where students can submit questions, and I answer them at the beginning of the next class. It isn’t used too often, but I think it’s a nice option to have either way.
Another technique that I use to address questions is to approach each student individually during labs. I leave it for the first 30 minutes or so, to give students time to get started, and for latecomers to filter in. When I started teaching, I tended to avoid this because I didn’t want to interrupt students trying to work. It can be particularly frustrating as a student when an overly-enthusiastic instructor attempts to butt in when it’s not needed, and leaves you with more problems than you started with. However, I have found that by periodically checking on students, in a hands-off way, I will often get “Oh while you’re here, why is this happening?” kinds of questions. Students are more likely to ask you questions when they’re already engaged in a conversation with you. I suspect this is because they don’t feel that they’re bothering you when you’ve already approached them, and you can have a one-to-one conversation, rather than having to involve the entire class.
One-to-one teaching is extremely useful, especially for helping students at the margins of the class. It shows me where the limits of my students’ understanding is. However, it is not scalable, and it’s important to remember that. I try now to address the class as a whole as much as possible to ensure that the questions that students are too afraid to ask are still of benefit to everyone.
My job as a lecturer is threefold: teach, grade, mentor. I came into the job with the preconception that most of it was teaching, and specifically the explanation part of teaching. I was inspired by the likes of 3Blue1Brown, Computerphile, and Veritasium. They’re all world-class at exposition, but exposition turns out to be only a small piece of the puzzle. If you’re teaching a practical subject, you need to design ways for your students to put it into practice. Designing good homework questions is an art in and of itself. Then you need some way to measure how well your students have actually learned the subject matter. And finally, you need to nudge and guide them through the module and the semester.
It may seem obvious, but the job is more multi-disciplinary than I expected. I think that I had a natural knack for decent explanation and exposition, but grading and mentoring was entirely new to me. I also had no idea of how to facilitate students, when to give them more guidance, and when to step back and let them have at it. I can’t offer much advice on either beyond doing it and finding out for yourself. One thing that helped me was watching how the best educators in the institution do it, and imitating them for the first while.
The traditional mode of assessment in third-level institutions is the proctored exam. The course that I teach on is Continuous Assessment (CA) only, but I have given some in-class tests. The obvious upside of tests is that it is easy to verify that work is a student’s own. A downside is that it encourages rote learning over understanding, and it’s difficult to design an exam that tests understanding instead. My take is that exams are probably a decent measure of baseline understanding of the course material, but that assignments are better. I have seen numerous excellent students produce fantastic assignments, but score average on tests. I have also seen students who do not necessarily have a flair for the subject matter score well in tests because they worked hard to study the material.
Assignments are naturally a more realistic form of assessment. They allow students time to think and work through problems. Assignments can more accurately reflect real work that they might complete as researchers or developers in industry. However, it’s harder to verify that what the student submits is their own. Whether we like it or not, as lecturers it is important to verify this. Because of this pitfall, some institutions enforce strict limitations on the weight that assignments can be given in a student’s overall grade in a module.
Traditionally, the submission itself was enough proof of understanding. If ownership of the work came into question, a short oral exam could accompany the submission to verify that the student has an understanding of the work submitted. However, the advent of LLMs has introduced complications.
LLM use raises a few hard questions. Given that LLMs are being rapidly adopted in the area of computing, should students be permitted to use them to complete assignments? LLMs are capable enough at coding tasks that most assignment work can be completed with them. Should what we assess students on change to account for this? Should certain assignments that test understanding of fundamentals ban LLM usage entirely, and is it even possible to give an assignment like this and maintain academic integrity?
These are big questions, and the use of LLMs in assessment is still emerging. I’m suspicious of anyone who claims to know exactly how assessment should be designed around LLMs, especially considering that the capabilities of the models are improving at a rapid rate.
There’s a long discussion to be had about assignment design now, and it’s not for this post. However, what I have learned over the last year is that you must assume that work done outside the classroom has been completed with the use of LLMs. Therefore, you must use some method of in-class verification of students’ work. Thus far, I have used oral presentations and demos from students of their work in class to verify this. It’s not perfect, but broadly I think it is effective. Each assignment has two stages. The first is the demo. Provided that they prove their understanding in the demo, I will then move on to grade their submission.
I have seen discussions that argue that all assessment must move to the classroom to be verified. I somewhat agree, but it disappoints me if it’s true. There’s an incredible amount of learning that takes place when you work on a project in your own time, and it would be a shame to lose it.
Many courses finish with some kind of large capstone project meant to represent what they’ve learned over the course. I supervised several projects last year and learned a couple of things about doing it. First, meeting weekly, even early in the project is important. Second, it’s useful to have an agenda ahead of time. Ideally, students can write a few bullet points and send them to you the day before, covering what they completed, what their blockers are, and any other topics they wish to discuss during the meeting. This gives both of you time to think before the meeting, and lets the student run it in the way that’s most useful to them. I found that it’s easy as a supervisor to step in and prescribe work, which doesn’t serve anybody, and an agenda helps guard against that.
It is important to gather feedback about the delivery of a module as the term goes on. Useful feedback can help you fine-tune and make adjustments to the module to improve it for the current cohort of students. However, I found that receiving actionable feedback can be a little tricky.
The main source of feedback that I used was an anonymous survey. I typically distributed two or three per module, one at the beginning to gauge student backgrounds, and goals, one mid-way through the semester to identify what was going well and what needed to be improved, and optionally another at the end to capture sentiment of the module. I’m hesitant about end-of-semester surveys. When I was a student I found them pointless to fill out, because implemented suggestions wouldn’t affect me in any way.
I found that response rates are high for the first survey, and drop off dramatically for the mid-semester surveys. They generally pick up a little for end-of-semester surveys. I have received a lot of very thoughtful responses. Students have suggested shortcomings in the delivery of parts of modules, areas of confusion, and additional materials that they would find useful for their learning.
However, surveys alone are infrequent forms of feedback that only capture certain parts of module success. Helping students in class, as I previously mentioned, is good for getting feedback about student understanding.
Some of my classes also have weekly lab submissions. A quick skim can give me a good sense for how the lab went, where students’ understanding sits, and whether anything needs revisiting.
It also occasionally happens that I accidentally overhear students talking about my class. A thick skin is required, but I’ve picked up a lot about what my students are confused by, which I can then address in the next class.
One thing to keep in mind with feedback is that students are evaluating their experience, which isn’t always quite the same as evaluating the teaching. It’s your job to interpret the feedback, resist the temptation to act on it at face value, and decide on the best changes to the teaching.
I really loved teaching over the last year. It’s been some of the most fulfilling work that I’ve done so far, and it’s given me new energy. However, I found that in order to teach to a standard I’m happy with, I had to work very hard. I had ~18 teaching hours per week, across anywhere between two and four modules at any given time. I also had several final year projects to supervise, and was a year group tutor. I had never previously instructed a full module myself and was doing everything for the first time. I didn’t have to reinvent the wheel. Previous instructors were very kind and left me their material. However, I still had to work through it all such that I knew it well enough to teach. I would often work late into the night and all weekend preparing for the next week’s lessons. It is not a 9-5 job. I enjoyed that, but you may not.
If you’re considering trying it yourself, you may not have to work as hard as I did, but colleagues I’ve spoken to consistently say that the first year or two at the job is the toughest and most intense. Another option could be to teach part time to try it out first, rather than diving straight in as I did.