Teaching

Courses Taught at Iowa State

  • CprE 161 - Programming Practice for Engineers
    • Offerings: [Fall 2023], [Spring 2023], [Winter 2023], [Fall 2022]
    • Description: Applied introduction to computer programming for engineering students. Topics include variables and objects, control flow, iteration and looping, string processing, and file input/output. Modern software development practices, tooling, and testing. Individual programming assignments and projects.
    • Prerequisites: Credit or enrollment in ENGR 160 or equivalent
  • CprE / EE 599 - Creative Component
    • Offerings: [Fall 2023], [Fall 2022], [Fall 2021], [Fall 2020], [Fall 2019]
    • Description: A 3-credit, two semester class for non-thesis MS students in the ECE department who are looking to complete their creative component. Students work with the instructor to determine project topics, review relevant literature, design an experiment, perform data analysis, write a report, and do an oral presentation / defense.
    • Prerequisites: Graduate student status in ECE
  • EE 285 - Problem Solving Methods and Tools for Electrical Engineering
    • Offerings: [Fall 2023], [Fall 2022], [Fall 2021]
    • Description: Integration of field-specific computational tools for practically solving electrical engineering problems. Methods for systematically reducing problems into sequential steps compatible with computer based tools. Structuring computer programs for efficiency and maintainability. Integration of multi-platform operating systems and multi-vendor tools for solving engineering problems. Hands-on laboratory experiences using Matlab, C, and other computational tools.
    • Prerequisites: None
  • EE / CprE / SE 491 - Senior Design Project I and Professionalism [program webpage]
    • Offerings: [Fall 2018], [Spring 2018], [Fall 2017]
    • Description: Preparing for entry to the workplace. Selected professional topics. Use of technical writing skills in developing project plan and design report; design review presentation. First of two-semester team-oriented, project design and implementation experience.
    • Prerequisites: Varies by major
  • CprE 488 - Embedded Systems Design [webpage]
    • Offerings: [Spring 2017], [Fall 2015], [Fall 2014], [Spring 2014]
    • Description: Embedded microprocessors, embedded memory and I/O devices, component interfaces, embedded software, program development, basic compiler techniques, platform-based FPGA technology, hardware synthesis, design methodology, real-time operating system concepts, performance analysis and optimizations.
    • Prerequisites: CprE 381 - or ComS 321
  • CprE 480 - Graphics Processing and Architecture
    • Offerings: [Spring 2023], [Spring 2022], [Spring 2021], [Spring 2013], [Spring 2012], [Spring 2011]
    • Description: Introduction to hardware architectures for computer graphics and their programming models. System-level view, including framebuffers, video output devices, displays, 2D and 3D graphics acceleration, and device interfacing. Architectural design of GPUs, from 2D and 3D sprite engines to 3D rendering pipelines to unified shader architectures. Computing models for graphics processors. GPGPU and GPU computing.
    • Prerequisites: CprE 381 or ComS 321
  • CprE 185 - Introduction to Computer Engineering and Problem Solving I
    • Offerings: [Spring 2010]
    • Description: Introduction to Computer Engineering. Individual interactive skills for small and large groups. Computer-based projects. Solving engineering problems and presenting solutions through technical reports. Solution of engineering problems using the C language.
    • Prerequisites: Credit or enrollment in Math 165
  • CprE 381 - Computer Organization and Assembly Level Programming
    • Offerings: [Fall 2020], [Fall 2019], [Fall 2016], [Spring 2012], [Fall 2011], [Fall 2010], [Fall 2009], [Fall 2008]
    • Description: Introduction to computer organization, evaluating performance of computer systems, instruction set design. Assembly level programming: arithmetic operations, control flow instructions, procedure calls, stack management. Processor design. Datapath and control, scalar pipelines, introduction to memory and I/O systems.
    • Prerequisites: CprE 288 - Embedded Systems I
  • CprE 583 - Reconfigurable Computing [old webpage]
    • Offerings: [Fall 2015], [Fall 2014], [Fall 2013], [Fall 2012], [Fall 2007], [Fall 2006]
    • Description: Introduction to reconfigurable computing, FPGA technology and architectures, spatial computing architectures, systolic and bit serial architectures, adaptive network architectures, bus-based and static dynamic rearrangeable interconnection structure architectures, reconfigurable computing architectures for processors.
    • Prerequisites: Background in computer architecture, design, and organization.
  • CprE 588 - Embedded Computer Systems [old webpage]
    • Offerings: [Spring 2010], [Spring 2009], [Spring 2008], [Spring 2007]
    • Description: Design, implementation, and testing of embedded computer systems. System-level design. Co-design of hardware and software. Concurrency, real-time control, hardware/software interfaces, and error handling.
    • Prerequisites: CprE 308 - Operating Systems
  • CprE 584 - Embedded Systems Research Skills [old webpage]
    • Offerings: [Spring 2009]
    • Description: industry-standard tools and optimization strategies; practical embedded platforms and technology (reconfigurable platforms, multi-core platforms, low-power platforms); instruction augmentation, memory-mapped accelerator design, embedded software optimization. Students will be encouraged to compete as teams in an embedded system design competition.
    • Prerequisites: Background in embedded systems.

Courses Taught at Northwestern

  • ECE 510 - Computer Security and Information Assurance
    • Offerings: [Spring 2005], [Spring 2004]
    • Description: Graduate survey course covering topics including an introduction to cryptography and its applications; classification of attacks on application security, operating system security, network security; authentication and authorization; state of the art implementation attacks; secure systems; software protection, digital rights management; privacy/trust issues.
    • Prerequisites: None specified.
  • ECE 362 - Computer Architecture Projects
    • Offerings: [Winter 2005], [Winter 2004]
    • Description: A quarter long team project that entails designing a processor for a complete Instruction Set. Project involves ISA design, design of components, datapath and control for a pipelined processor to implement the ISA. The processor is implemented using industry strength design tools with VHDL as the specification language. The design is evaluated using benchmark programs for correctness and performance.
    • Prerequisites: ECE 361 - Computer Architecture
In front of a captive audience.
In front of a captive audience.