Teaching

Engineering Computer Architectures

ENGR-E 110, Spring Session (16 weeks), Summer Session (first 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, the mystery of computation is revealed. This course takes a lot of inspiration from the wonderful Nand2Tetris curriculum by Nisan and Schocken at MIT.

Through this course, students are also introduced to HDL concepts, assembly language, and they have ample opportunities to hone their Python skills. Learning objectives include:

  • understanding two’s complement arithmetic (addition, negation, subtraction)
  • understanding how pointers work in a Von Neumann architecture
  • crafting an assembler for a small assembly language using Python as the implementation language
  • solve problems using string processing
  • understanding the funamentals of hardware description languages (HDLs)

Software Systems Engineering

ENGR-E 111, Summer Session (second 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:

  • write functions in C
  • write programs in C that process command-line arguments
  • solve problems using arrays
  • understand pointer semantics, including C pointer arithmetic
  • understand size and speed trade-offs when manipulating data by pointer
  • use C’s struct feature to define custom data structures
  • manipulate linked list data structures

Python for Engineers

ENGR-E 399/599, Winter Session (first 3 weeks).

Introduction to Python concepts (functions, control flow, data types, file I/O), and selected libraries (re, numpy).

Engineering Ethics and Professionalism

ENGR-E 299, Fall Session (first 8 weeks).

Ethical and professional considerations of the engineering field, with emphasis on software and systems.

Past Courses

These are courses I taught previously, but not within the last year.

Innovation and Design

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.