Blog‎ > ‎

Sophomore: Fifth Week

posted Nov 13, 2012, 12:58 AM by Sean M. Messenger   [ updated Dec 30, 2013, 5:50 PM ]
I've learned so much, a lot of which I got over this past summer. It's hard to believe that I'm done with my fourth week out of my 15-week semester -- both that I'm already over 26% done, and also that I'm only 26% done. In a weird way, I feel like college is going too fast. My course load this semester is:

  • Electromagnetic Theory and Optics (PHYS51)
  • Digital Engineering (E85)
  • Introduction to Systems Engineering (E59)
  • Principles of Computer Science (CS60)
  • Image Processing and Optical Recognition (CL57-03)
  • Programming Practicum (CS189)
  • Financial Economics (E104)
  • Fencing (PE222)

which rounds out to 18 credits, the least I've taken at Mudd so far (over 18 is overloading haha). So far, I've only played one hour of any kind of video game since getting down here -- as you'll see through reading this letter, I am pushing to do more with my time than just classes. I'm trying to get more hands-on knowledge wherever I can. In PHYS51 (E&M), we are covering electric fields and have already done a lot with multivariable calculus that I learned while doing Summer Math in May last school year. I've seen and derived the first (and recently second) of Maxwell's Equations, Gauss' Law, that relates the electric field and the charges that cause it. We've learned a lot about basic electronics, such as resistors and inductors, and have a lot more ahead of us.


In E85, we are working with digital circuits, Boolean logic, and basic gates to piece together basic functionality of input-output functions. We are learning about Karnaugh maps, CMOS transistors that make up logic gates, and are designing circuits in a circuit CAD software.


In E59, we are learning about systems and how to sample and subsequently reconstruct a data set to get more information out of a mechanical system. We're dealing with mass-spring systems and will soon be approximating entire building responses to some impulse as if the building is a series of springs. We've finished the first, second, and third homework assignments which are given out on a weekly basis.


CS60 is basic programming in new languages; since I learned Python and a bit of Assembly in Computer Science (CS) 5 and C/Arduino in E11 (the Autonomous Vehicles class), we are still working with a new set of languages. The first two weeks were exclusively Racket (a variant from Scheme or LISP) and we are now venturing into dealing with Java and Prolog. This is an example function in Racket that computes the exponential b to the power p in a very efficient manner using just recursion and multiplication:

(define (fast-power b p)
    (if (= p 0)
        1
        (if (= (modulo p 2) 1)
            (* b (fast-power b (- p 1))) 
            (let* (
                (y (fast-power b (\quotient p 2))) 
                
              (* y y)))))

Compare that mess of Lots of Irritating Superfluous Parenthesis (LISP, haha.) to the user-friedlier Python programming language:

def alpha (U, L, C):
    if U==0 and L==0:
        acc = 1
    elif U<0 or L<0:
        acc = 0
    elif (U,L,C) in key:
        return key[(U,L,C)]
    else:
        acc = 0
        for x in Plist:
            if x[0]==C:
                if x[1].isupper(): 
                    acc += alpha(U-1, L, x[1])
                else:
                    acc += alpha(U, L-1, x[1])
    key[(U,L,C)] = acc
    return acc

The above is a snippet from a program that calculates the number of different ways you can put pairs of characters together such that there is a set number of uppercase and lowercase letters (U and L in the code) and where each adjacent pair of characters must be a pair given as "acceptable" in the beginning. 


CL57 is a 4-hour lab Friday nights where we work on analyzing and processing images -- such as resizing, rotating, and negating the image. Instead of using Python, which I already know, I'm learning to program in MATLAB, a language designed to deal with matrices (thus MATrix LABoratory) -- so it's well suited to working with images that are really just a stack of matrices overlaid on each other (each pixel at some point x,y in the image is at index x,y in the matrix/list of the image raw data, and then it has three values: one each for the colors in RGB). For example, I wrote a bit of code that lets the user rotate and resize a picture. That code uses bilinear approximation to pick the pixel color by basically averaging it over the rotated or resized canvas. This is because when you cut an image in half resolution wise, for example, you have one pixel for each that you previously had four of. The only way to really keep the image preserved is to average the Red values between these pixels with each other, and the same for Green and Blue. The smaller the pixel or the more awkwardly twisted it is, the more averaging that occurs. I will be using MATLAB a lot in Engineering classes, and I'm excited to be learning that ahead of time. The Programming Practicum is a seminar-style class that meets once a week and gives out a bunch of challenge problems where we just try to solve as many as we can in a week. They all are complicated and require lots of planning before hand. I am currently programming these in Python, but will move to Java in a week or so.


In Financial, we are learning about long-term investing strategies, how the market works, all the basic terminology, and all the relevant background for how the market currently runs. The professor is a big investor and is really into the class, which is really cool. He writes all of his own notes a few days to a week before hand so that everything is current, and posts them online so that anyone can read them (alum, students not in the class, and students' family/friends/whoever) at this address. Fencing is a four hour Saturday class where I, well, fence. Last fall I did a bit with the fencing club and decided I wanted to take it now for P.E. credit and to get some more experience. I already know how to fence épée, which is the more traditional style. I may go on to some competitions this year.


We have a new professor in the Engineering Department, too: Prof. Christopher Clark, who runs the Lab for Autonomous and Intelligent Robots. He was accepting applications to join his research team from last Wednesday, when he announced it, to this past Saturday, when submissions were due. His research includes underwater robots designed to track sharks without constant supervision and intervention by humans (let alone the fact that, currently, teams of biologists are paid to go on 48-72 hour shifts tracking a single shark), mapping underground water cisterns in Malta, developing platforms for classes, and working with students to create other random stuff that is a cross between computer science, robotics, and Engineering. I just talked to Prof. Clark in person today and he said that he just sent out the acceptance letters to the 4 spots on his team that he was trying to fill, of which I was not among, but he suggested I apply for next semester and his ICEX program. The ICEX program is going to be recruiting in a couple weeks and is a "prime team" that does the cistern mapping in Malta (and other places in Europe, Africa, Mediterranean, etc.). They go over Spring Break and do lots of other small projects too. It sounds like I may have a shot at joining that team this year, even as a sophomore. In an email from him, he said:


"Thanks again for coming to chat today. There was nothing missing in your app. In fact, you were very competitive. The only problem was I had too many people interested ... [you should] apply to the ICEX program in a few weeks."


So I'm looking forward to seeing where that may go. It sounds like that will be a fantastic opportunity. He just got in touch with me too, asking if I would be interested in porting some work to a real robot system and formalizing the algorithms, from a research/thesis paper he worked with students at Princeton last year, entitled "Decentralized and Complete Multi-Robot Motion Planning in Confined Spaces." In one day, I've gotten to page 23, and by now I am almost done.


On another note, my room is huge. But, it's a single room with four people...My roommates (all three of them) and I took Prof. Duron, the Engineering Department Chair, out to breakfast -- which he offered to pay for. It's looking like all 4 of us are about to declare that we are pursuing Engineering degrees, and I've been increasingly talking to professors, staff, and people in career services. Last year I took the initiative of starting a course planning book, and I've been adding to it ever since. It started as just an excel sheet for me to help plan my courses, but has expanded to help my roommates, our friends, and now I'm going to present it to the Dean of Students and the Registrar to see if they want to use it/distribute it to the student body that it would be applicable to. 


I am the President of the FRC Mentors Club at Mudd, and we are looking at two high schools that are interested in starting robotics programs of their own that we would help out with. I'm also in the Fab Studio (Fabrication Studio), which is a source of funding for smaller personal projects or medium size group ones. One of my roommates and I are heavily involved in starting a project to design, build, and wire up a chassis to be programmed to map the Libra Complex (the underground tunnel system at Mudd), autonomously perform objectives, be remotely controlled, and even have a Nerf gun turret mounted on top (that we would make too). We are currently writing proposals for it to send off to the Engineering and Computer Science departments for funding in addition to the Fab Studio. We have preliminary designs, processes, project plan, and budgeting all done. We just need to find time to make it, and get the money to buy the materials (or find/acquire material to use). I'm involved in a start-up Combat Robots club (like battle bots) and we got $1,800 for the first semester to start building a combat bot.


I'm also a shop proctor this semester, which means that I am a student machine shop supervisor -- there is always one proctor in the shop whenever it is open. The philosophy is that Mudd has a head machinist (adult), and he trains and works with a group of students (the proctors) so that they can essentially supervise the shop and help other students. I just spent 4 hours last Monday with a senior shop leader where he was going over, well, pretty much everything there was to talk about. I learned how to operate our CNC Mill, saw the new (CNC) lathe, learned to grind metal lathe tools, and a lot more. It's looking like I'm going to spend five hours a week plus any on-call stuff working in the shop earning at a rate of $9.00 per hour. This week alone I've put in 21 hours in the shop, as there is a surplus of students working on class projects and the shop needed additional proctors. It's a bit surprising, but with the knowledge that I got from working at Breedt and through my robotics experience, I am among most knowledgeable students at the school as far as the shop goes.


I'm working on getting my résumé and LinkedIn profile updated too, which is surprisingly time consuming.


I think that's pretty much all that has happened so far...which is actually quite a bit considering it's only been 4 weeks. 
Comments