educational strategy
overview
I believe that teaching and learning is a process of mutual engagement between both educators and students. Given the broad spectrum of learning styles, this requires the utilization of a variety of educational approaches. Through my teaching career, I have thus applied myself to the production and usage of lecture materials (for traditional learners), videos and at-home workbooks (for self-motivated students), and interactive lab sessions and hands-on projects (for practical experience for students). I encourage students to think beyond the classroom, and emphasize the importance of technical communication via written reports and oral presentations as part of the engineering process. I am a huge proponent of project-based assessment, and encourage students to view these as opportunities to learn how to learn: interpret design requirements, communicate engineering decisions, and perform design space exploration for any given challenge. Finally, given their essential nature in all careers, I make reflection and evaluation an essential component of my courses. Students should have the ability to appreciate the issues within any design: not just the hardware and software technical components, but also ethics, user experiences, and future proofing in a world of rapid technological change.
recent teaching experience
I have taught at both undergraduate and graduate levels in Australia, the USA, and New Zealand in accredited engineering programs. My focus and expertise is in the computer systems and computer engineering fields, with a particular focus on FPGA-based development.
Classes I have taught at UNSW include:
(UNSW - COMP1521) Computer Systems Fundamentals
This course covers an introduction to computer systems and how they can be constructed, from MIPS assembly and bitwise operations up to operating systems fundamentals like file management, threading, processes, and virtual memory.
(UNSW - COMP3601) Design Project A
This is a hands-on FPGA-based project course for computer engineering students. Students work in a group over the duration of the term to achieve a complex system which includes electronics, digital design with Verilog, and low-level C.
Courses I have previously taught include:
(NYU - ECE-GY 6463) Advanced Hardware Design
This course covered implementation of advanced digital logic on FPGAs, including processor design and cryptographic primitives, using both Verilog and VHDL.
(NYU - ECE-GY 9453) Introduction to Hardware Security and Trust
This course provided a high-level overview to the many concepts in hardware security, including machine-in-the-middle attacks, PCB and chip-level Hardware Trojans, side channel attacks including fault, scan, and power analysis, reverse engineering, and bug finding.
(NYU - CS-UY 2204) Digital Logic & State Machine Design
This course covered an introduction to digital design on FPGAs, including using Xilinx Vivado and Verilog to achieve basic functional designs and verify them using testbenches.
(UoA - MECHENG 371) Digital Circuit Design
This course covered an introduction to digital design on FPGAs, including using Quartus Prime and Verilog to achieve basic functional designs and verify them using testbenches. This course culminated in a mini-project where students designed and deployed custom calculators to DE2 FPGA development kits.
(UoA - COMPSYS302) Design: Software Practice
This course was a Java- and Python- based software project course where students would work in a group over the duration of the term to achieve two large projects. The first, in Java, was to implement a 2D rogue-like game. The second, in Python, was to implement a distributed peer-to-peer networking service.
pedagogical strategy
After setting the objectives and communicating the context of a given course, my goal is to produce both individual and group assignments with peer assessment, built-in reflective exercises, and feature clear assessment rubrics. Students should always understand how they are graded and why they received a given mark. I find interactivity an essential part of engaging students, so try to design lessons with live discussion and Q&A, technology and coding demonstrations, and producing informal recordings.