Welcome to my website. Use the above menu to see some projects and guides that I have
worked on. Most of the content from this site is related to projects I worked on while in school, before I started my current job.
One of my favorite projects is posted below. It is a Sudoku solver algorithm using Python and OpenCV. Feel free to contact me
through email with any questions.
The Future of Engineering:
Algorithms, Optimization, and Automation
In high school I read an article about a group of engineers who used something called a genetic algorithm to optimize
the design of an antenna for NASA. The algorithm was a computer program that
could design an antenna better than any human could. I realized at that point that the future of engineering will
probably involve a lot of programming. My only programming experience up to that point consisted of me occasionally programming my TI calculator
to do my high school math homework. Over the next several years I worked hard to expand my programming
experience above and beyond the required MATLAB for engineers course at Penn State.
The book Automate This, by Christopher Steiner, discusses the
increasing role that automated algorithms will likely play in many aspects of our lives.
As I read this book I tried to think about how I would go about writing the algorithms that
are discussed in this book.
As you may know, a digital camera uses sensors to record incoming light that is then converted into a digital image.
This image is stored as an array and can be read and manipulated just like any other array you might
find in MATLAB (or other programming language).
Although a camera can "see" the light just like our eyes can, the camera has no brain to process and
make sense of the image. It is has no understanding of what any objects such as letters or faces look like.
Writing these algorithms to extract important content is what the field of Computer Vision is all about.
The above video is a demonstration of a Sudoku solver algorithm that I wrote. I have another page for more information about
this project
and a page for my other computer vision projects.
In this Sudoku solver I used a classification algorithm called K Nearest Neighbors that
allows the computer to be able to decide what numbers it is seeing on the Sudoku puzzle. Classifiers belong to
a group of Artificial Intelligence called Machine Learning, which
is important for things such as pattern recognition and probabilistic decision making.
You can learn some of the basic concepts of this subject by visiting my Machine Learning page.
The image below is an example from an excellent Python module called
SciKit-Learn that contains a lot of Machine Learning algorithms.
Engineers can use optimization algorithms to solve complex problems like the NASA antenna design problem mentioned above.
These algorithms allow engineers to specify mathematical objectives and constraints and then let the computer
carry out all of the complex problem solving steps. I'm now working on learning more about
how to automate SolidWorks so that I can run optimization algorithms on SolidWorks models. Here is a demonstration video
of a program so far. It creates a semiconductor heat sink and then analyzes the max steady state temperature for a given
heat power, convection coefficients, and heat sink design parameters.
All of this happens with one click of a button to run my C# program, I don't have to touch anything in SolidWorks.