In July 2019 I was in a meeting with the CEO of akademy.ai where I received an offer to teach computer vision at their AI Engineer Bootcamp here in Barcelona. The bootcamp consists of a fully immersive 10 weeks program to launch your career in Artificial Intelligence.
It was a very interesting offer since computer vision is something I enjoy; however, I never imparted classes on the subject nor did I have the educational materials to do it.
Nevertheless, since I love a challenge I decided to accept the offer. When I asked how many hours of classes would be available for the computer vision track I was told we would have one week. That is roughly 40 hours and I had less than one month to prepare everything.
I had to come up with a 5-day program to teach as much computer vision as possible to students who did not have any previous experience with it; some students were just learning to write code with Python. That meant starting from the very basics at a good pace so that in five days the students would be ready to tackle and solve interesting computer vision problems on their own.
The syllabus preparation
I spent the next four weeks preparing the syllabus. It took me several days just to come up with the content to teach each day. I made my lesson plan by following a linear progression and raising the complexity each day, bit by bit.
Once I had the syllabus, I started to write sample code for each proposed subject on a Jupyter Notebook. I referred back to the official documentation and did some further research for every single function I would teach during that day. Each notebook took me three to five days to complete.
Once I had the notebooks I prepared the presentation slides to teach the theory before going to the actual core. There, I would include examples of code, explanation of the functions, parameters that are expected, as well as tips and practical advice. Preparing the slides took less time than preparing the actual code but they were still somewhat time-consuming, taking from one to two days each.
Up to that point, I had two of the three ingredients that I needed to accomplish my mission–the theory and actual code samples–but I was still missing a critical and most important ingredient. Simply copying and executing code wouldn’t be enough to really learn, and that is something they could use to apply their newly acquired skills. I decided I would prepare mini projects that the students could work on. Depending on their skill level, some of them might take just minutes to complete the projects and others might take a couple of hours. For each day, I prepared between two and five mini projects that could be completed using their current skills.
Having a full time job, I had to find time to do all the previous preparation during lunch breaks, after hours, and during weekends.
Finally, the teaching week had arrived and I started to impart the classes. Having students from different backgrounds and level of expertise, I had to make sure everyone would be able to follow.
The first three days were very intense. There was simply too much content to teach, but since a lot of it was based on basic features it was possible to do it. However, we didn’t have much extra time to play with the projects during those first days.
By the fourth day, the students had enough tools under their belt to be able to tackle interesting projects in computer vision. I included a wide range of projects from very easy to quite complex. Each student could choose the projects they wanted to work on, and that way, they would be developing the skills they are truly interested in.
The classes on the fourth and fifth days were shorter, allowing the students to spend more time working on projects and asking for advice when they became stuck.
I was very pleased with what the students could accomplish and I was amazed at how much they could do in just five days.
By the fifth day they had the chance to share their projects, experiences, any problems they encountered, and the solutions they applied while working on their projects. Each student shared their projects with their classmates; this way everyone could benefit from the experiences of each other.
Each day, a feedback form was provided to the students so they could let us know what they thought about the class and what could be improved. I believe continuous improvement is key, especially if there are only five days. Making small changes as soon as possible is important to deliver the best possible experience.
- There was a huge amount of previous preparation required. Working on the syllabus was a lot of work and quite challenging; however, it is key to delivering great content and knowledge. I have to say that I had a lot of fun doing it, learned a lot, and enjoyed every minute of it.
- Having engaging projects for the students to work on is definitely very important. Making sure there is a wide variety in terms of complexity and range of topics is crucial.
- There is a high value in giving the students project notebooks and slides so they could refer back to them and keep learning more in the future.
- Being available to help them during their coding time is just as important as anything else.
- Since every student has their own laptop with their own setup, it adds complexity in terms of compatibility; some might have Linux, some MacOS, and others Windows.
- On top of that, having different versions of OpenCV installed also made things more difficult since there might be breaking changes between OpenCV 3 and 4.
- Getting early feedback and continuously improving the quality of the classes based on the feedback is very important.
- I enjoyed every part of the process and look forward to doing it again.