I Designed a Formal Course: EN3350 Software Design

Teaching Jan 1, 2021

A major curriculum revision for our Department of Electronics and Telecommunications, University of Moratuwa was underway for several years, when I joined as a junior lecturer. Several streams of interest: telecommunications, robotics, electronics...etc. were being revised and overhauled to provide a more coherent and effective learning experience for our students.

My other initiatives

During this time, I pioneered several hands-on workshops to the students of our department and general public, to boost their productivity and to interactively test the theoretical knowledge they gain in lectures. Missing Semester (MS) series, which I independently started with my MS1: SystemVerilog sessions, gained traction, leading to senior staff and fellow junior staff conducting more programs: MS2: ROS for Robotics and MS3: Embedded Systems (for which I also contributed).

I also introduced version control with git to final year students through seminars. On the one hand, git is an invaluable tool to users (students) that acts as a time machine, allowing them to reliably move to any immutable past / parallel snapshot, allowing them to manage the complexity of their projects. On the other hand, the well documented and immutable development history provided by git allows the managers (teachers) to keep track of each member's contribution with timestamps and the change they made.

The MIT missing semester session that taught me git and inspired me to pioneer our MS program

Module design

One key issue addressed in the curriculum revision meetings was, that many of our students are not familiar with the industry best practices when it comes to programming. Skills such as writing readable code, appropriate use of OOP, managing project complexity were not developed well enough through our electronics-oriented curriculum. As a result, most students who go for software and firmware development face a disadvantage.

In this setting, I was approached by Dr. Ranga, the Head of our Department to design a module to address this issue. With a tight deadline, I designed a rough curriculum based on my knowledge, shared it with our past students in the industry, collected feedback and finalized it. Dr. Ranga made appropriate modifications and added it to the formal curriculum of the department, assigning me as the lecturer in charge. It was named Software Design Competition to satisfy the count of competition modules.


To summarize, it is a hands-on course with 100% CA. Students choose one of the two given projects (or propose their own project), design a solution through appropriate use of OOP, start development while version controlling collaboratively, write appropriate unit & integration tests and proper documentation as they finish the project. Quality of code and documentation of the development history are evaluated via periodic code reviews conducted by industry professionals.

The curriculum with the module has been approved by the University Grants Commission (UGC), Sri Lanka. I shared the final draft with the past students who commended it as something they desperately needed in their time as an undergraduate. With other modules designed by experienced senior staff, I believe the new curriculum of the leading department in the leading technological university is about to be a gamechanger for the industry and the future of Sri Lanka.