Skip to content

Coursework

Electrical Engineering

EENG 519Estimation Theory & Kalman Filtering

A graduate course on getting useful information out of raw sensor data when the signal is uncertain, with navigation, localization, and mapping as common uses. It covers random signals, the discrete-time Kalman filter and when it is optimal, filter divergence, and nonlinear estimation. My final project ran an EKF and a UKF on a model of the EMBR damper.

EENG 417Modern Control Design

Control design built around observers, from the first open-loop experiments to the final implementation. It covers frequency-domain feedback design, sensitivity and fundamental limits, state space realization, and system identification. The gantry crane project runs through most of this, from fitting the cable length to a state-space controller with an observer.

EENG 411Digital Signal Processing

How to represent discrete-time signals and systems in the time, z-, and frequency domains. Each view helps you read a signal, design a filter, or sample correctly. It also covers sigma-delta conversion, multi-rate processing, and spectral analysis. The pitch tracker uses the last two. It decimates its audio to 8 kHz and finds pitch with an FFT.

Skills
MATLAB
EENG 393Field Session – Printed Circuit Board Design

Taking a printed circuit board from concept through design, fabrication, and soldering. It teaches good design practice along with the real-world limits that manufacturing puts on a circuit.

EENG 391Field Session – Computational Methods for Electrical Engineers

Computational methods for everyday electrical engineering: plotting signals and data, analyzing and implementing digital filters, computing integrals, solving differential equations, and simulating dynamical systems. I kept using MATLAB and Simulink on later controls and estimation projects.

EENG 386Fundamentals of Engineering Electromagnetics

Electromagnetic theory with a practical focus. It starts with vector calculus and builds from Coulomb's and Biot-Savart laws up to Maxwell's equations. Then it covers generators, motors, transmission lines, impedance matching, and the Smith chart. I used Biot-Savart again to model the electromagnet on the EMBR damper.

EENG 385Electronic Devices and Circuits

The large-signal and small-signal behavior of op-amps, diodes, bipolar junction transistors, and field effect transistors, plus the frequency response of standard circuits. Labs test how well your analysis matches the real circuit.

EENG 383Embedded Systems

Building systems from analog and digital parts around a microcontroller. You use timers, PWM, ADCs, serial links, and interrupts, all in C or C++. The course also covers fixed-point math, direct digital synthesis, lookup tables, and row scanning. The Arduino code on the maze robot and the solar tracker uses the same parts.

Skills
C, C++
EENG 350Electrical Engineering Integration and Design

A semester-long build around one challenge problem that changes every year. Teams design and prototype a full system, build it from modular subsystems, and integrate them, using concepts from across the electrical engineering courses. Our challenge became the autonomous maze robot, and Maverick Savage and I built its vision stack.

Skills
Python
EENG 311Information Systems Science II (Signals and Systems II)

Signals and noise in electrical systems, with examples from radar and communications. Topics include information theory, signal-to-noise ratio, random variables, matched filters, coding and entropy, power spectral density, and bit error rate. The random-signal material comes back in Kalman filtering.

EENG 310Information Systems Science I (Signals and Systems I)

How signals carry information and noise over time, with examples from filtering, audio and image processing, and communications. It covers convolution, Fourier series and transforms, sampling, modulation, and z-transforms. The pitch tracker uses the sampling and Fourier analysis from this class.

EENG 307Introduction to Feedback Control Systems

Modeling linear electrical, mechanical, fluid, and thermal systems through energy flow, then analyzing their response in the time and frequency domains. Feedback design, including PID, is done both by hand and by computer. The frequency-domain tools here are the ones behind the gantry crane margins.

EENG 284Digital Logic

Digital logic, from Karnaugh maps and Boolean algebra to decoders, adders, counters, registers, and finite state machines. You write designs in a hardware description language and download them onto FPGAs. Mine was Verilog.

Skills
Verilog
EENG 282Electrical Circuits Laboratory

An engineering analysis of DC and AC circuits, both single-phase and three-phase. It covers Ohm's and Kirchhoff's laws, Thevenin and Norton equivalents, RC and RL transients, phasors, and power.

Computer Science

CSCI 410Elements of Computing Systems

You build an entire modern computer from the ground up, from logic gates to an assembler, a virtual machine, a compiler, and an operating system. It pulls the rest of computer science together. My tools were Verilog, C++, and Python.

CSCI 406Algorithms

Reasoning about whether an algorithm is correct, and how fast it runs in theory and in practice. It covers advanced sorting, dynamic programming, backtracking, graph algorithms, network flows, and NP-completeness.

Skills
Python
CSCI 358Discrete Mathematics

An introduction to discrete mathematics and algebraic structures. It covers formal logic, proofs, recursion, algorithm analysis, sets and combinatorics, relations, functions, and matrices. It also covers Boolean algebra, trees, graphs, finite-state machines, and regular languages.

CSCI 341Computer Organization (Computer Architecture)

How computers work at the machine level: machine instructions, assembly language, operating system calls, computer arithmetic, performance, processor design, and pipelining. The assembly I wrote was RISC-V.

CSCI 306Software Engineering

Software engineering process and object-oriented design: Agile, test-driven development, UML diagrams, use cases, and design patterns. The coursework pushes version control and code review. I later ran Git for the pitch tracker and maze robot teams.

CSCI 274Introduction to the Linux Operating System

How to work from the Linux command line: ssh, the file system, editors, compiling, redirection, searching, processes, permissions, compression, networking, and Bash scripts.

Skills
Linux, Bash, SSH
CSCI 220Data Structures and Algorithms

Designing and building hash tables, trees, heaps, and graphs, analyzing their operations, and writing algorithms on them, such as graph search and minimum spanning trees. Everything is implemented in C++.

Skills
C++
CSCI 200Foundational Programming Concepts & Design

C++ from the start: managing memory at run time, object-oriented programming, and building algorithms from data structures and abstraction. Recursive data structures and the first software design principles come in along the way, all from the command line.

Skills
C++