Press the "+" button for sample coursework and more information about selected courses.
This course covered theory and applications of linear algebra in machine learning. Topics included the singlular vector decomposition, least squares classification, principle component analysis, stochastic gradient descent, support vector machines, k-means, and neural networks.
See my final project on convolutional neural networks.
This course covered the basics of robotics including sensors, motors, transformations, kinematics/inverse kinematics, Robot Operating Systems (ROS). The course included a hands-on lab where we worked with mobile robots and a 6-axis robotic arm.
See my final project on augmented reality robot control.
This project was an exercise in 2D agent animation. Each Boid has limited vision and is only aware of what is happening near it. By altering some parameter of how the Boids change their direction, we can make complex flocking behaviors emerge. Obstacle avoidance was also implemented for each Boid.
In another 2D graphics example, we plotted Bezier splines and used the parametric equations to make a train circle around a track. The user can add new control point by Shift-clicking and can change the position of existing points by clicking and dragging.
Graphics Town is the accumulation of all of our 3D work in the class. Animation, modeling, lighting models, shadow maps, texture maps, custom shaders were all used to create the 3D world using the Three.js API.
In this lab, we built and tested three different temperature sensing circuits: one using the LM335 temperature sensor, another using a LT1025 with a thermocouple, and the last circuit using the LT1025 in addition to a voltage-regulating opamp. We found that the thermocouple with the LT1025 chip was the most accurate. We then used this circuit to predict the temperature of an unknown source using only the voltage from our thermocouple and comparing it with the true temperature read from a thermometer. Below is our final circuit and results.
In this lab, we tested three types of photodetector sensors: a photodiode, photoresistor, and a phototransistor. In the photodiode circuits, we also built a typical transimpedance amplifier and a differential transimpedance amplifier to condition our sensor voltage to detect the presence of a phone LED light. Using this sensor, we could build an energy-saving light switch (i.e. turn on lights at night time, and switch them off during the day to conserve power). Another application could be measuring ambient light to set the exposure on a camera. Below is the image of the differential transimpedance amplifier that we used in order to improve the sensitivity of our photodiode.
Topics covered in this course include informed/uninformed search methods, game playing, contraint satisfication problems, k-nearest neighbors, support vector machines, neural networks, and bayesian netowrks. Applications to computer vision and natural language processing were also explored.
In a few programming assignments, we implemented the A-star, alpha-beta pruning algorithm and sentiment analysis. We also created a neural network to solve the MNIST handwritten digit classification problem. Lastly, we built a decision tree using informational entropy to determine a patient's risk for cancer. The program used real data from UW Hospitals and was 82% accurate at predicting breast cancer on a testing dataset.
This class covered chapters 8-12 of Griffiths' Electrodynamics text. Topics covered include: EM field momentum, EM waves, gauge transformations, EM radiation, and relativistic electrodynamics. Four-vector and covariant notation was introduced and used for all relativity calculations.
Coursework sample 1 —
Coursework sample 2
The first half of this course covered the fundamental mathematical basis of quantum mechanics, and the second half covered a variety of applications, mostly focused on the field of quantum computing. Topics: review of wave functions and the Schrodinger equation, matrix formalism of quantum mechanics, Dirac notation, addition of angular momenta, bloch sphere representation, coherent control of quantum systems, non-degenerate and degenerate perturbation theory, the WKB approximation, and tunneling.
Required Text: Griffiths' Introduction to Quantum Mechanics
Supplementary Text: Quantum Description of High-Resolution NMR in Liquids by Maurice Goldman
Homework 2 - Wave functions
Homework 8 - Rabi oscillations
Homework 9 - Coherent control of quantum states
Homework 10 - Entanglement
This was a 2-credit lab course with a variety of experiments containing topics from my electromagnetism and quantum physics courses. Besides from the physical insights of the individual experiments, the course focused on correct error propagation and data analysis methods.
Lab 1 - Elements of Gamma ray counting and Gamma ray spectroscopy
Lab 2 was skipped due to a weather cancellation
Lab 3 - Probability Distributions and the Decay of Quantum States
Lab 4 - Cavendish Measurement of the Fundamental Gravitational Constant
Lab 5 - Attenuation of Gamma-rays in Matter
Lab 6 - Blackbody Radiation
Lab 7 - X-ray Production and Diffraction
This was a course on methods of Partial Differential Equations (PDEs), with a large Matlab coding/visualization portion. We covered the heat equation, wave equation, laplace equation, shocks and rarefactions, and some introductory modeling techniques. In the last few weeks of the course, we also covered Fourier analysis. Below are some of the Mathlab visulaization I generated, as well as some sample coursework.
Coursework sample 1 — Coursework sample 2
These images show the solution to the heat equation at three separate times. The initial condition is a Dirac dilta function, and the boundary conditions a Dirichlet (heat=0 on the endpoints). You can see the heat uniformly spreading through the domain, and getting smaller in magnitude as the endpoints cool the region.
A Neumann boundary condition specifies that no heat transfers through the boundary. For this reason, we can see the entire domain heating up as the initial condition (in this case, a heaviside function) dissipates.
The wave equation propagates the initial condition both forwards and backwards on the domain. In this example, our initial condition (IC) is the "struck" case, which means that the our IC acts on the derivative. So for a dirac delta fuction, this would translate to an infinitely strong hit at t=0, x=0, much like a piano hammer hitting a string.
I've included two plots of the same domain. The waterfall image I think is easier to visualize, but the contor is interesting because the slope of the line is actually the propagation speed of our medium. Everywhere outside of the colored region is not causally connected with the starting spacetime point.
This image shows the Fourier approzimation of the Dirac delta fuction for three different values of N. The function requires N to be infinity to perfectly approximate the function, and it is periodic outside of our specified domain (0, 1).
This class covered chapters 1-7 of Griffiths' Electrodynamics text. Topics covered include: electrostatics, magnetostatics, electric and magnetic fields in linear media, and electrodynamics. The course essentially works up to the full time-varying set of Maxwell's equations, and consequences of those relationships (i.e. EM waves and radiation) are explored in Physics 323.
Coursework sample 1 —
Coursework sample 2
This class was largely focused on data structures. We covered AVL trees, red-black trees, B/B+ trees, hash tables, graphs, and sets. Additionally, we learned basic linux commands, lambda functions, git, JUnit tests, makefiles, and HTML/CSS. For more information on our final project in the course, see the JavaFX Meal Planner.
This class covered digital logic, state machines, ALUs and basic processor structure, and register/memory configurations. For more information on our final project in the course, see the FPGA Mastermind Game.
The reference signal that was used to remove noise from the activation map.
The activation map clearly shows the active brain regions after the noise has been filtered out.
The impulse response of the minimax filter
The frequency response of a minimax filter has a much cleaner passband than the truncated LPF.