The Problem with Traditional CS Teaching

Most students sit through lectures about algorithms or data types, take a quiz, and promptly forget everything by the next week. I experienced this myself as a student, and then again watching it happen in my own classroom during my early teaching years.

The breakthrough came when I stopped explaining what a loop was and instead said: “Build a program that grades 100 student exam papers automatically.”

That’s when things changed.

What Project-Based Learning Looks Like in Practice

At ELM International Schools, I restructured the entire ICT curriculum around real deliverables. Instead of teaching spreadsheets as an abstract skill, students built a budget tracker for a fictional school event. Instead of introducing databases through theory, they designed a system to manage the school library’s inventory.

The Core Principles I Follow

  1. The project must solve a real or realistic problem. Students immediately ask “why does this matter?” when they sense the problem is contrived. Real-world constraints — a deadline, a specific user, an actual data set — make the work meaningful.

  2. Failure is a learning event, not a grade. A student who spends three days debugging a broken query learns more about SQL than one who copies a working example. I build debugging time into every project timeline.

  3. Present to an audience. Having students demo their projects to teachers from other departments or to parents raised the quality of work dramatically. Nobody wants to present broken code.

  4. Teach tools, not syntax. Students who understand why we need version control pick up Git quickly. Those who memorise commands without context forget them just as fast.

The School Management System: A Student-Inspired Project

One of the most significant outcomes of this approach was a full school management system I built (initially as a demonstration project) that ended up being adopted across all five branches of ELM International Schools. The original concept came from a student asking: “Why do we still use paper registers?”

That question became a semester-long project prototype before I took it further into production. Students who participated in the initial design phase understood database normalisation, client-server architecture, and user experience far better than their peers who studied the same topics theoretically.

Lessons for Other CS Teachers

  • Start with the output, work backwards to the concepts. If students need to build a web form, they’ll learn HTML, HTTP methods, and input validation naturally.
  • Let students pick sub-problems. In a group project, some will gravitate toward the UI, others toward data — let them own their domain.
  • Connect to local context. In Somaliland, I used local business examples, Somali-language placeholders in UI mockups, and real NGO datasets (anonymised) to make projects feel grounded.

Conclusion

Project-based learning isn’t a silver bullet — it takes more preparation, more patience, and a higher tolerance for productive chaos. But the students who go through it come out able to build things, not just recite definitions.

That’s the difference between a student who passed a CS course and an engineer.