Undergraduate Courses
GEF404: Cyber Defence
Semesters: Winter 2020, Winter 2021, Winter 2022, Winter 2023 (English)
Enseigné en français.
Fourth-year combined English & French undergraduate course covering the core concepts behind cyber defence. In this course, students investigate the cyber threat environment, network attack, the design of network perimeter defence, and defence-in-depth. Students completing this course are able to design a defensive computer network architecture and understand the network cyber operations environment. Topics include: firewall design; deployment of intrusion detection and preventions systems; design and implementation of security policies; and identification and authentication. The capstone activity is a two-week cyber defence exercise at term-end dubbed CyberX, organized and run by RMC, involving military college teams from Canada and the United States, with participation from the National Security Agency (NSA) performing red team activities, and includes a simulated kinetic environment provided from Rome Laboratory (US Air Force Research Laboratory).
GEF466: Distributed Systems
Semesters: Fall 2021, Fall 2022 (English)
Enseigné en français.
Fourth-year undergraduate course covering communication between distributed applications, including security, reliability, and efficiency. Students completing this course understand the key technologies used in distributed systems, and are able to design and implement them. In the laboratory, students build distributed systems using sockets, remote invocation, and web-based technologies. Topics include: principles and characteristics of distributed systems; protocol design; client/server and peer-to-peer systems; distributed objects; time services; distributed transactions and replicas; concurrency control; the two-phase commit protocol; name services; network security threat models; cryptographic key distribution; authentication and signature; and common internet services and protocols.
EEE335: Principles of Operating Systems
Semesters: Winter 2020
Third-year undergraduate course covering the principles of operating systems. This course explores the internal workings of operating systems such as the Windows and UNIX family of OS, including modes of operation protected by hardware (kernel modes). Students completing this course understand the design of operating systems used in modern computing systems, including the management of shared hardware and software resources. Students implement operating systems concepts in programming laboratories. Topics include: the process; concurrent processes; inter-process communication; deadlock; scheduling; input/output; file systems; file servers; memory management; and virtual storage management.
EEE320: Object-Oriented Analysis and Design
Semesters: Fall 2020
Third-year undergraduate course covering UML diagrams and OO Design. Students completing this course are able to apply the object concept to the analysis and design of significant software systems. Techniques for managing complexity are introduced including data and procedural abstraction, encapsulation, hierarchy, and decomposition of problems into classes and objects. The uses of overloading, multiple inheritance and polymorphism are studied. Object-oriented analysis, design and implementation of software are practiced in the context of an iterative, use case driven development process using modern software modelling tools, development environments and programming languages. Good design and design reuse are introduced through the application of design patterns.
EEE243: Applied Computer Programming
Semesters: Fall 2019, Fall 2020
Second-year undergraduate course involving using mobile robots as an application area to explore software design. This course teaches the fundamentals of programming using C
, enabling the students to explore various algorithms, the basics of input/output, foundational computer concepts like the memory model, cross compiling to a different architecture, as well as debugging and testing their code. Students completing the course are able to design significant software programs and components in the presence of other software and hardware subsystems. Other topics include: effective decomposition of software into modules; modular programming and design techniques; structured programming; the execution model for software; the software build cycle; basic data structures; the use of third-party components and underlying operating system support; rudimentary control of physical systems through high-level interfaces to digital input/output channels; and analog/digital and digital/analog converters.
Graduate Courses
EE595: Cyber Threat and Attack Techniques
Semesters: Fall 2019, Fall 2020, Fall 2021 (Teaching assistant)
Those operating in the cyber domain that is tasked with the defence of networks and computer systems must have a sound understanding of the threats that they face and of the techniques used by their adversaries; this course discusses the fundamentals of Cyber threats and attack techniques, with a heavy focus on practical applications. Topics include current cyber threat categories and general capabilities; attack techniques including password cracking, buffer and heap overflows, IP and DNS spoofing, viruses and worms, backdoors and remote access tools, key loggers, tunnelling and covert channels, SQL injection and cross-site scripting; advanced evasion techniques such as polymorphic code and rootkits. The course also introduces malware construction including assembly level program flow control and return oriented programming.
Professional Certificate Courses
Security of Platform / Operational Technology Systems (SPOTS)
Serials: Fall 2021, Winter 2023
This course provides a comprehensive introduction to cybersecurity issues unique to platform and operational technology systems. The course is engineering focused and includes advanced technical concepts within computer security. This course prepares students to guide and/or provide advice to Weapons System Managers (WSMs) and/or Project Management Offices (PMOs) on platform/OT cybersecurity matters such as security threat and vulnerability assessments, security architecture and protection measures, and defensive cyber operation support.
I developed and taught the Security Architecture module, which covers topics on Security Architecture Design Principles; Encryption, Authentication and Authorization; and Segmentation. I also developed various laboratory exercises encompassing live capture of 1553 databus traffic, traffic analysis, and attack techniques, as well as a laboratory exercise involving the vulnerabilities associated with Software System Updates for operational technologies involving insider threats & waterhole attacks exploiting data authentication and segmentation vulnerabilities.
Short Course in Networks and Security (SCINS)
Serials: Fall 2021, Winter 2022
The primary objective of this course is to provide students with an introduction to computer networks and to the security issues surrounding computer networks. The philosophy throughout the course is to provide a high ratio of hands-on practice to class-based learning. The course is designed to provide the foundation material necessary before attending more specialized training in computer security.
I taught the Operating System Security module. Lecture topics include an introduction to operating systems, basic Windows architecture, vulnerabilities and defences, basic UNIX architecture, vulnerabilities and defences, and file systems.