../programming-courses

Client : multiple clients

Programming and Computer Science Courses

TL; DR

I’ve worked as a freelance teacher for several post-graduation schools for years, giving courses about a large array of subjects including Game development, web development, Linux systems and project management, and used my skills as a developer to bring to life innovative ways of evaluating students.

Student satisfaction is a drive, and I can pride myself in its renewal year after year.

About this activity

Part of my freelance activity has always been about teaching stuff.

I started off as a mentor at OpenClassrooms, an online digital school. I would accompany students individually, one hour per week, via video-call, to help them progress through their courses and projects and explain whatever was not properly understood. There, I helped students with project management, HTML, CSS, Javascript , VueJS and PHP mainly, with the Symfony framework.

One thing led to another, and I started giving traditional courses about Game Development at L’école de Design, a renowned design school in France that had a Game Design learning path. I taught them Game prototyping and development using CSharp and Unity .

Soon after, I became a general-purpose teacher at Nantes Ynov Campus, in their Computer Science department. Since then, I’ve become their Computer Science Department Referee, which means I’m basically the main teacher for the whole department. I’m still giving courses there to this day, with courses in algorithmy using Go , OOP using Typescript , CSharp , and Java, I taught how to make PWA to masters degree students, some IoT using C++ and Arduino , but also a Game Programming course, again with CSharp and Unity . I’m also in charge of the 2nd year Linux course.

I’ve given courses in a third school, e-artsup, a game and animation school, where I gave Unity courses as well as Unreal Engine 5 .

I was also a temporary teacher at ESD Bordeaux to animate a Game Making workshop.

I was recommended as a teacher in several positions, and remain one of my student’s favorite teachers, with a passionate and practice-focused pedagogy.

How that experience strengthens me

One of the first advantages to teaching is the mastering of Pedagogy and vulgarization. As an engineer and thus a technician, being able to explain complex things to people who do not work in our domain can be a precious skill, as we do not live in engineer-only worlds: we have to communicate efficiently with clients, managers, and other departments, and it is crucial to be able to explain how things work and how things can’t work.

Also, this experience forces me to stay up to date with technology : we can’t teach tech that is likely going to be obsolete in 5 years to students due to enter the job market at that time.

As an eternal anxious teacher, I have a tendency to over-prepare my courses, and study every detail so that I can’t be surprised by a “but how and why?” question. I end up not needing to answer them, mostly, because students don’t think about those questions the way I do, but it helped me gain a profound understanding of how things worked, beyond how to make them work. Being the curious being that I am, I would probably have asked those questions as a student.

Innovative evaluations

As the main thing I don’t like about being a teacher is grading stuff, I came up with a few tricks to make the work a bit less daunting.

First, automatic individual evaluations. I give a precise assignment along with a bunch of unit tests, and an individual grade is awarded to each student depending on the number of tests they passed.

I have also put together small executables to reproduce this behavior while teaching Linux : the executable would set up a virtual machine and verify completion conditions; as the student progresses in the assignment, the program verifies the correct configuration of the VM and awards flags to them, that they can exchange on the server to be awarded points.

In that same vein, I organized CTFs for the students in Cybersecurity.

Aside from these individual evaluations, I tend to give out group assignments that resemble real world CS work, that the students have a lot of time to complete, usually as the course’s “Final boss”.

To grade those, and to ensure that the students know precisely which criteria are used to evaluate them and how they performed, I developed a web tool called Tardigrade.