Cornell ECE MEng Independent Design Projects, ECE 6930

Resources for prospective and currently enrolled students

V. Hunter Adams (vha3@cornell.edu)

In [1]:
from scipy.io import wavfile
from IPython.display import Audio
import numpy
from scipy.fft import fft
from scipy.signal import welch
import matplotlib.pyplot as plt
from IPython.display import HTML
plt.rcParams["figure.figsize"] = (20,3)
%matplotlib inline
In [2]:
HTML('''<script>
code_show=true; 
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
} 
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit" value="Click here to toggle on/off the raw code."></form>''')
Out[2]:

The goal

The design project is, without a doubt, the most fun and rewarding aspect of the MEng program. Through this project, you will be given the autonomy to build something that is truly yours and the guidance to help bring it to fruition. It is often the case that students' personalities are reflected in their projects. Some students contribute to a research lab, others build systems of industrial relevance, and others still use this project as an opportunity to explore curiosities completely outside of engineering. All of them, however, get exposure and experience with the full engineering process and acquire new sets of engineering skills. Here are some of my students' project from previous semesters.

Note: Different faculty members manage MEng projects differently. This webpage describes how I handle them, but you may encounter other faculty members with different philosophies or expectations.


Deciding on a project

As a new MEng student, you may either choose a project proposed by a faculty member, or you can propose a project to a faculty member to advise. Either way, it is wise to consider the type of engineering project that best suits your interests and goals.

I divide engineering projects into three (overlapping) categories: those which solve a problem, those which facilitate learning about some other (non-engineering) topic of interest, and those which facilitate the acquisition of new engineering skills. These categories are represented in the Venn diagram shown below, on which I've also indicated the regions of overlap that I prefer in MEng projects. Let us consider each of these categories in turn.

missing

Engineering as a mechanism for solving problems

This sort of project is, generally, the most familiar to engineering students. For these sorts of projects we identify a problem (or, more generally, an objective), and we build something to solve that problem or meet that objective. This is a broad category which includes video games, lab infrastructure, communications infrastructure, and products for clients around campus. As a specific example, I currently have two students working on an IoT sensing system for the Johnson Museum of Art on campus. These projects are rewarding because they tend to be useful, but usefulness is not the only metric by which I judge an MEng project.

Engineering as a mechanism for learning about other topics

Personally, I love using engineering in a way that people often use reading -- as a mechansim for learning about something interesting. If you are interested in WWII history, create an Enigma machine. If you are interested in birds, create a birdsong synthesizer or a flocking animator. If you are interested in aesthetic mathematics, create a Mandelbrot visualizer. For almost any curiosity, one can think up an engineering project that allows for you to explore that curiosity in a unique way. I have seen students explore interests in music, art, wildlife, and countless other topics. For me, an "interesting" engineering project is just as valuable as a "useful" engineering project. As a specific example, I had a student in a previous semester build a synthesizer to reproduce the sound of the Cornell chimes. It ended up sounding quite good! Can you tell which of the below is a real bell, and which is a synthesized bell?

In [6]:
samplerate1, data1 = wavfile.read('./MEng_Chimes_F_cut.wav')
data1 = numpy.array([float(i[1]) for i in data1[0:500000]])
Audio(data1, rate=samplerate1)
Out[6]: