Courses Taught
I primarily teach computer-systems related courses. Originally, I taught electronics-focused courses, with a slant toward prototyping digital systems using FPGA-based systems. In the recent past, I was redeployed to teach more software and programming-focused courses, at all levels in the Department’s curriculum. However, I’ve now been asked to take a role that bridges both the Electrical Engineering and Computer Engineering Worlds. I’ve happily joined my first area of electronics with my recent past in software to yield my current teaching curricula focus on embedded or cyber-physical computing.
Embedded & Microprocessor Systems
I am currently heavily involved in teaching these courses.
- ECNG2006 - Introduction to Microprocessors. This is a level 2 undergraduate course, and the undergrad students’ first foray into the world of embedded systems. Prior to this course, they would have been introduced to both electronics and programming. This course bridges those concepts. It introduces the student to exploiting a processor architecture using assembly to implement small-scale embedded systems involving the Microchip PIC16, an 8-bit RISC MCU.
- ECNG2005 - Lab and Project Design 3. This is a level 2 capstone laboratory and project course. The focus of this course is on developing a students’ professional practice. There are four modules in this course and I am associated with two of these modules.
- The laboratory content associated with ECNG2006’s microprocessor content is delivered in this course. However, this course’s focus is primarily geared toward proficient use of lab tools in application context. I am the lead for this module.
- I have been an examiner and project supervisor for the community project, another module in this course, for over 15 years. Student teams are sent to various communities for this project to develop and deploy an engineering solution to serve currently unmet needs.
- ECNG3006, ECNG3034 (Capstone)
- I’ve also supported ECNG3029 (Robotics) in the recent past as it aligns with my area of expertise.
Artificial Intelligence
I am now working on a new course for the MASc in Artificial Intelligence - due to start from September 2026:
- Graduate: ECNG66xx - Data Engineering
- This course meshes quite well with my current area of embedded systems, as I can take a unique slant when teaching data engineering in the context of uncertain, multimodal data streams, in particular where we may be dealing with real-time, resource-constrained devices; and how these may affect intelligent systems.
Programming & Software Engineering
I have taught these courses in the recent past. I still contribute to these courses, but I’ve now taken a more backseat role as a guest examiner and lecturer. I particularly miss ECNG3023 where I changed the curricula to involve more practical work with software management.
- UG Level 1: ECNG1009 - Introduction to Programming: An introductory programming course using C++.
- UG Level 2: ECNG2007 - Computer Systems and Software Design: A continuation of the level 1 programming course, but with a performance slant. There is an introduction to algorithms and data structures; as well as a project which allows the student to investigate a specific technology framework and apply it to a real-world problem.
- UG Level 3: ECNG3023 - Software Engineering: On the management of software systems and applying the software lifecycle to a problem. This course has a unique peer mentoring system where the students in this course manage the product development carried out by the students of the level 2 ECNG2007. A practical experience for students of both courses.
- Graduate: ECNG6613 - Database Systems
Electronics
I have delivered these courses in the past, but I no longer meaningfully contribute to them. I remain a guest examiner for ECNG2004’s project demonstrations.
- ECNG2004 - Lab and Project Design 2: A laboratory course which focuses on rapid prototyping electronics systems utilizing FPGAs.
- ECNG3016 - Advanced Digital Electronics: A capstone electronics course involving performance in digital electronics systems.
- ECNG6601 - Digital Electronics Systems: I have delivered guest lectures on FPGA prototyping. I have not been an examiner for this course.