Category Archives: Education

Fundamentals of Engineering (FE) Exam

Today was the Fundamentals of Engineering exam for me; I had to wake up at 5am and drive an hour to Edinburg, Texas. What is the FE? In short, it is an 8-hour exam that is the start of my path toward becoming a licensed Professional Engineer (complete with a stylish “P.E.” lastname-hat).

I have been preparing off and on for about 6 months now, and I think I did well; In fact, I am almost certain that I did well enough to pass. That’s all that matters, anyway, because when I get my results in 8-10 weeks, that’s pretty much the only information I will receive; whether or not I passed. Well, if I fail I will get a diagnostic report, but I really don’t think that I failed. :D

It was very challenging and exhausting; my neck hurts, but I am glad I decided to bring a pillow to sit on because I think it really made a big difference in my comfort level. The exam is split into two 4-hour sections, the first of which is a 120-question general exam that everyone takes and it covers a broad range of topics. I wish I had spent more time preparing for Thermodynamics, Chemistry, and Fluid Dynamics (a subject I don’t actually understand the reason for having in the general section), but I think the provided reference material helped me do a little better in those areas than I otherwise would have been able to do. The second section is chosen at registration-time by the test-taker to focus on a specific type of engineering (Electrical Engineering, in my case), and I found it to be much more easy-going since I was comfortable with 95% of the topics on the test (versus about 65% of the morning exam). There were only 60 questions for the afternoon section, but they were definitely more involved and some of them required some real multi-level thinking to solve (I’m looking at you, computer architecture questions!).

Like I said, though; I’m pretty confident that I did well enough to pass.

EDIT: I PASSED THE FE EXAM! Now I just need to apply for my Engineer in Training (EIT) License next week! :D

14th Annual UTB Research Symposium

As part of my Senior Design II class, I gave an oral presentation (as opposed to my option of compiling and presenting a poster) at the 14th Annual Research Symposium at my University. and won 1st place out of 8 presentations! Below, you can find a link to the slides I put together for my presentation in a conveniently embedded PDF format (if it is hard to read the embedded version on your monitor, here is the link to the actual PDF file), along with the text notes I prepared to remind myself what I intended to say on each slide (despite the fact that I did not get to use them in any way during the actual presentation). I enjoyed myself and had a good day. :D

Semester is Over!

The Fall 2011 semester of school has come to a close, and I passed everything! Yay!

Senior Design I was fun, and the fun doesn’t have to stop! I plan to continue working on my project throughout the break, and I have attached my slides and final report to this post; fun stuff.
This is my Final Presentation Slides (MS Powerpoint format)
This is my Final written Report for the Senior Design Project (MS Word format)

My Digital VLSI Circuits course was fun, too. My final project was to design a 4-bit synchronous counter (at the actual bare silicon level). Supposedly, my prof will be having our circuits manufactured so we can test them, but they probably won’t be available until late next year (after I hope to have graduated).
This is my Report for the VLSI Project (MS Word format)

Collatzian ChucKathon

Intrigued by a recent XKCD comic regarding the Collatz Sequence, I whipped up a fairly simple ChucK program that runs through the Collatz sequences of increasing odd starting points and assigns the raw number in each sequence as the frequency of an oscillator. I few spatial effects are there as well, to make it a bit more listenable than just a simple oscillator running. I limited the output to (20,1000) Hz because anything else drops straight to one Hz or begins to create undesireably high pitched frequencies that don’t provide much of anything interesting.

I think I’ve heard this familiar-sounding sequence of tones before, but I can’t imagine where. If it has been in something I’ve heard before, I’m sure it was coincidental because there are only so many whole number frequency sequences to be made! :P

ChucK code follows:

21 => int fo;
fo => int f;
fo => int fmax;
0 => int loopcount;
0 => int looplength_timer;
0 => int looplength;

SawOsc osc1 => LPF lp => PRCRev r;
0.1 => r.mix;
f => osc1.freq;
0.4 => osc1.gain;

SinOsc bg => r;
0.025 => bg.gain;
fmax => bg.freq;

SinOsc lpm => blackhole;
0.183 => lpm.freq;
50 => lpm.gain;

r => dac;

//Loop until process is terminated
//Print values to terminal
<<< “f=”,f, “ttfo=”,fo,”ttfmax=”,fmax,”ttlooplength_timer=”,looplength_timer,”ttlooplength=”,looplength,”ttloopcount=”,loopcount >>>;

183::ms => now;

f => osc1.freq;
if(looplength > 0) { (((looplength $ float) / (looplength_timer $ float)) / (looplength $ float)) * 0.05 => bg.gain; }
else { 0.01 => bg.gain; }
lpm.last() + f + 60 => lp.freq;

if(f%2 != 0) { f*3 + 1 => f; }
else { f / 2 => f; }

if(f < 20) { fo => f; }
if(f > 1000) { fo => f; }

if(f == fo) { looplength_timer => looplength; 0 => looplength_timer; loopcount++; }
if(f > fmax) { f => fmax; fmax => bg.freq; }

if(loopcount == 4) { fo + 2 => fo; fo => f => fmax => bg.freq; 0 => looplength_timer => looplength => loopcount;}



ChucK – Differential Equation System Solver

For several weeks, I have been playing around with ChucK: a Strongly-timed, Concurrent, and On-the-fly Audio Programming Language. I have actually been using the software, off and on, for over two years, but only recently started to really use it in the ways I had always wanted to: algorithmically-produced music.

My real dip into the code occured when I jumped on an extra credit assignment for my Differential Equations class, where I was tasked with programming a numerical solver for first-order DEs using the three major introductory algorithms for doing so: Euler’s, Improved Euler’s, and 4th-Order Runge-Kutta (the best of all). It was intended for me to use Mathematica or Matlab, but my program was able to solve the given problems, so it was still acceptable.

The next day, I modified my program for a more general use and to be capable of solving systems of differential equations. I did some research on Lorenz Attractors, and decided that they might be interesting to listen to. Here’s my resulting code and an audio snippet of what it can produce:

ChucK code follows:

3 => int a;
SinOsc osc1[a];
for(0 => int j; j < a; j++)
osc1[j] => dac;
(1.0 / a) => osc1[j].gain;

float k[a][4];
float x[a];

10.0 => x[0];
20.0 => x[1];
30.0 => x[2];
0.0 => float tt;
0.0001 => float h;

//Print values to terminal
if( (tt % 0.01) < 0.0001){ <<< “tt=”,tt,”tx0=”,x[0],”tx1=”,x[1],”tx2=”,x[2] >>>; }

for(0 => int j; j < a; j++)
{ ((Std.fabs(x[j]) + 1) * j*20) + 20 => osc1[j].freq; }

h +=> tt;

for(0 => int j; j < a; j++){ h * f(j,tt,x[0],x[1],x[2]) => k[j][0]; }
for(0 => int j; j < a; j++){ h * f(j,tt + (0.5*h),x[0] + (0.5*k[0][0]),x[1] + (0.5*k[1][0]),x[2] + (0.5*k[2][0])) => k[j][1]; }
for(0 => int j; j < a; j++){ h * f(j,tt + (0.5*h),x[0] + (0.5*k[0][1]),x[1] + (0.5*k[1][1]),x[2] + (0.5*k[2][1])) => k[j][2]; }
for(0 => int j; j < a; j++){ h * f(j,tt,x[0] + k[0][2],x[1] + k[1][2],x[2] + k[2][2]) => k[j][3]; }
for(0 => int j; j < a; j++){ x[j] + (1.0 / 6.0) * (k[j][0] + (2.0*k[j][1]) + (2.0*k[j][2]) + k[j][3]) => x[j]; }

.1::ms => now;


fun float f(int sub, float t, float x, float y, float z)
if(sub == 0){ return 10.3*(y-x); }
if(sub == 1){ return x*(28.4-z)-y; }
if(sub == 2){ return x*y-(7.0/3.2)*z; }

My work continued quite a bit past that, and I’m debating whether to post the results here, or to keep it quiet until I have enough music to release my first album. That could be this Summer sometime, if ever.

I can only hope.