I have been teaching core courses at Indiana University's Intelligent Systems Engineering program since 2016. My teaching style includes a lot of hands-on examples, live coding, and an environment where I hope students are comfortable to ask questions and try things themselves. Most of my classes are a mixture of lecture and lab. Because not everyone learns the same way, I employ lots of different learning methods - participation, projects, take-home style quizzes, and readings.
ENGR-E 110, Spring Session (16 weeks), Summer Session (6 weeks).
This course teaches the fundamentals of digital logic. Starting with boolean functions (And, Or, Not) and building up to a simulated CPU which can run programs, to shed light on the mystery of computation. This course is inspired by the wonderful Nand2Tetris curriculum by Nisan and Schocken at MIT.
Through this course, students are also introduced to hardware description language (HDL) concepts, assembly language, and they have ample opportunities to hone their Python skills. Learning objectives include:
ENGR-E 111, Summer Session (6 weeks).
This course teaches students C programming and the fundamentals of how to interact with memory through a CPU. Students learn C language syntax and concepts like functions, control flow, and data storage classes. Most work is exercise-based, where the goal is for the student to write programs which pass assorted tests (some visible, some hidden).
Learning objectives include:
structfeature to define custom data structures
ENGR-E 399/599, Winter Session (3 weeks).
Introduction to Python concepts (functions, control flow, data types, file I/O), and selected libraries (re, numpy).
ENGR-E 299, Fall Session (8 weeks).
Ethical and professional considerations of the engineering field, with emphasis on software and systems.
These are courses I taught previously, but not within the last year.
ENGR-E 101, Fall Session (16 weeks).
Introduction to the breadth of engineering offered at IU's Intelligent Systems Engineering program. Students design their own projects to solve a specific problem, with feedback and guidance from instructors. This course serves as an introduction to programming in Python, and also gives students experience in fabrication and creating models using CAD tools.