This year, I was invited to teach at Harbour.Space, and I couldn’t be happier about it. It feels incredible to be back in a real university environment with eager students. I’ve always enjoyed teaching, and this stint has reminded me of something crucial about learning: working on real projects is the most effective way to do that.

When you’re learning through practice, you grasp the subject matter much more efficiently. The trial and error method brings about profound insights, even more so when guided by a knowledgeable mentor. This concept reminds the gradient descent approach, where you have an actual problem to solve and iterating to reach a final solution. My teaching experience at Harbour Space has been a practical manifestation of this principle. Over three weeks, we engaged in three different projects.

During the first week, I prepared a lot of theoretical material that covered various aspects of problem-solving, feature generation, model selection, tuning, and ensemble methods. I filled the classroom time with presentations, and students practiced by participating in competitions at home. In the second week, I reduced the amount of lecturing, allotting roughly a third of the class time for hands-on work. By the last week, we primarily focused on practical activities, discussing our project and the ways to solve specific sub-problems.

My impression is that students were most engaged during the last week. I sensed the highest return and interest in producing results during this period. This could be attributed to the fact that we were all solving one problem together. Unlike the previous weeks, where each team worked on their solutions, the last week required interdependence among teams, making everyone feel the weight of their contributions. This boosted their energy levels, with some even staying up till the wee hours to finish their tasks.

Another significant point is that real-world projects set themselves apart from mere competition. While tackling Kaggle-style competitions is engaging, it lacks the tangible results and complexity offered by a real project.

For the final week, we embarked on developing an application designed to be an audio guide in art museums. Imagine walking into a museum, possibly in a foreign country, with descriptions in an unfamiliar language. Wouldn’t it be convenient to simply photograph the art piece and receive an audio description?

To tackle this challenge, we divided the students into five teams. The first was responsible for gathering data, essentially creating a database of paintings, their histories, and artists. The second team worked on reverse image search functionality, enabling the app to identify the painting from our database. The third focused on text-to-speech functions, while the last two handled the application and deployment layers. We chose TelegramBot as our platform, making this project a miniature startup.

What I observed was heightened student engagement. The collective effort towards a single, real-world project was invigorating. The experience reaffirmed my belief that the most captivating and rewarding tasks are practical tasks. The real take-away here is the extraordinary learning outcome achieved through tackling compelling, hands-on projects that require interdependence and collective responsibility.