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
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>''')
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.
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. If you opt to propose a project, you should have a written proposal available to share with a faculty member that specifically outlines your intended goals of the project and how you intend to achieve them. This should be done well in advance of the five week deadline to selection a project.
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.
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.
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?
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)
samplerate, data = wavfile.read('./lowF_resynth_16_noise.wav')
Audio(data, rate=samplerate)
The perfect MEng project is one which involves some skills which are familiar to the student, and other skills which are brand new to the student. A lack of balance in one direction or the other can make the project boring or frustrating. If you like one of the projects that I have listed but you're worried that your background would make the project too difficult or too simple, come talk to me! It is often the case that we can find a different technical approach to the problem that suits your particular skillset.
If you're not sure what you'd like to do for your project and it would be helpful to talk, send me an email! We can setup a meeting. In preparation for that meeting, it would be helpful for you to go through the following exercise:
Bring these lists to our first meeting and we will brainstorm project possibilities.
I advise projects of two varieties: those which I propose and those which a student proposes to me. The enrollment process for each is different.
- For me to be the advisor, the project must be (at least partially) in my technical wheelhouse. This means that it should involve microcontrollers, systems on chip, physics simulation, FPGA's, estimation, control, or robotics. It can definitely involve things that I don't know much about (in fact, I love it when projects involve things I'm unfamiliar with, because I get to learn from the student), but it can't be entirely outside of my domain of understanding.
- For me to be the advisor, your project must involve building something physical. I am deeply hardware-focused. I'm willing to make exceptions, but generally speaking I will ask for you to build something in the lab.
- Your proposed project must lead to the acquisition of new engineering skills.
- Your proposed project must be of appropriate scope (not too hard or too easy), given your particular engineering background.
My expectations depend on the number of credits for which you are enrolled:
We will meet weekly or biweekly (depending on the project and the student) to monitor progress, discuss bugs, and make plans for the coming week or weeks. Never hesitate to reach out to me if you're encountering a problem! You don't need to wait for our meeting for us to talk.
Each week, I'll ask for you to submit a progress report through Canvas. These do not need to be long, 1-2 pages is fine, but they should include the following information:
It is a good idea to take these seriously! The more organized and thorough you are in your weekly reports, the easier it will be to write your end-of-semester and final reports. Take lots of pictures! Save plots! Document things!!
At the end of your first semester, you will be asked to submit an end-of-semester report. This report will only be seen and evaluated by me (as opposed to your final report, which is submitted to me and the department). As with your weekly progress reports, be as thorough as possible. In terms of format, please model it off the final report submission guidelines. This should be submitted through Canvas, and is due on the last day of classes.
Each spring, Cornell ECE M.Eng. students present their Finalized Design Projects with a Poster Session. Presenting their posters to judges, the students highlight and describe their work through a combination of images, text and a two-minute elevator speech. Prizes are awarded for the best posters in each area, as well as best overall poster.
Please use the Google Form embedded below to make purchase requests.
- Tasks accomplished in the previous week.
- Hours spent on project in the previous week.
- Problems impeding progress
- Objectives for the coming week.
Completeness and understandability of the final report. My advise to students is to consider the audience of their lab reports to be themselves in 5 years. Assume that you haven't been working on this design problem since you wrote the report, and that you must re-create your work. Could you do it (and justify the solution to a boss) using only the report? If you only had this report as a resource, could you:
- Understand what the objectives of the project were?
- Independently recreate your work (without looking at provided code) using the same development and debugging methods that were used previously?
- How easily could you repeat your work using this report as a resource? In other words, how clear is this report?
- Could you understand why (quantitively or otherwise) you chose a particular strategy over another strategy for meeting the requirements of the project?
- Could you understand the metrics by which you evaluated your solution? Could you evaluate your independently re-created version of your project by the same metrics and get the same results?
Please use the final report submission guidelines to format your report.