Category Archives: School

Prime Python Philanthropy

With each passing day, I realize that I love programming more an more. Part of it comes from the fact that every line of code is a little puzzle: how it interacts with other lines, itself, variables, functions elsewhere in the code, etc. Getting everything to work together is such an accomplishment, something akin to (at least for me) finishing a race, winning a game, or doing well on an exam. I take almost any opportunity to program, even if it’s just a few short lines to decide what to eat for dinner.

Recently, I’ve been helping a few of my friends with their Python homework for CSE 231. I never took the course, my roommate took it last semester, but we both just like flexing our programming muscles every now and again. We are both in a programming course right now (him in CSE 232, me in MTH 451), but just going back and writing little Python programs is always fun. Today, I wrote a short bit of code that added two binary numbers via string manipulation: completely unnecessary in the real world, but fun to program in its own right.

Of course, my own programming homework is always more difficult than what the CSE 231 homework is. This week, for instance, we needed to write three functions to solve a system of linear equations using three different Gaussian elimination schemes (no pivoting, partial pivoting, and scaled partial pivoting). My first stab at it did not go well, since I started with the actual numerical solving schemes than tackling the machinery underneath. After fusing around for a while, I scrapped it and started fresh, first writing basic matrix manipulation functions (switch rows, multiply row by a constant, etc.), then gradually moved up to actually solving the equations.

# Matrix manipulation functions
def exchange_rows(A, i, j):
  A[i], A[j] = A[j], A[i]
  return A

def multiply_row(A, i, mult):
  for q in xrange(len(A[i])):
    A[i][q] = A[i][q]*mult
  return A

def add_rows(A, i, j):
  for q in xrange(len(A[i])):
    A[j][q] = A[j][q] + A[i][q]
  return A

# Pivot Checking
def check_pivot(A, i):
  if A[i][i] == 0:
    A = exchange_rows(A, i, i+1)
  else:
    pass
  return A

# Generic entry elimination functions
def forward_substitution(A, i):
  A = multiply_row(A, i, 1/float(A[i][i]))
  for q in xrange(i+1, len(A)):
    if A[q][i] != 0:
      mult = -1.0*float(A[q][i])
      A = multiply_row(A, i, mult)
      A = add_rows(A, i, q)
      A = multiply_row(A, i, 1.0/mult)
    else:
      pass
  return A

def backward_substitution(A, i):
  for q in xrange(i, 0, -1):
    if A[q-1][i] != 0:
      mult = -1.0*float(A[q-1][i])
      A = multiply_row(A, i, mult)
      A = add_rows(A, i, q-1)
      A = multiply_row(A, i, 1.0/mult)
    else:
      pass
  return A

# Three solver methods
def gauss_np(A):
  for index in xrange(len(A)):
    A = check_pivot(A, index)
    A = forward_substitution(A, index)
  for index in xrange(len(A)-1, -1, -1):
    A = backward_substitution(A, index)
  return A

def gauss_pp(A):
  startrow = 0
  for index in xrange(startrow, len(A)):
    maxindex = 0
    maxvalue = 1
    for i in xrange(index, len(A)):
      if A[i][index] > maxvalue:
        maxindex = i
        maxvalue = A[i][index]
    A = exchange_rows(A, index, maxindex)
    A = forward_substitution(A, index)
    startrow += 1
  for index in xrange(len(A)-1, -1, -1):
    A = backward_substitution(A, index)
  return A

def gauss_spp(A):
  list = []
  for j in xrange(len(A)):
    maxvalue = -1000
    for i in xrange(len(A[0])-1):
      if A[j][i] > maxvalue:
        maxvalue = A[j][i]
    list.append(maxvalue)
  for index in xrange(len(A)):
    temp = list
    for i in xrange(len(temp)):
      temp[i] = abs(A[i][index]) / float(temp[i])
    max = 0
    ind = i
    for i in xrange(index, len(temp)):
      if temp[i] > max:
        max = temp[i]
        ind = i
    temp[index], temp[i] = temp[i], temp[index]
    A = exchange_rows(A, index, i)
    A = forward_substitution(A, index)
  for index in xrange(len(A)-1, -1, -1):
    A = backward_substitution(A, index)
  return A

# Main function commands
def grab_input():
  A = input("Input Matrix A: ")
  b = input("Input Vector b: ")
  option = raw_input("(1-Gaussian, no pivot : 2-Gaussian, partial pivot : Gaussian, scaled partial pivot)\nSelect Solving Method: ")
  if len(b) != len(A[0]):
    print "Matrix/Vector dimensions mismatched."
    A = "1"
  return A, b, option

def prep_matrix(A, b):
  for q in xrange(len(A)):
    A[q].append(b[q])
  return A

def solve_function(A, option):
  if option == "1":
    A = gauss_np(A)
  elif option == "2":
    A = gauss_pp(A)
  elif option == "3":
    A = gauss_spp(A)
  return A

def grab_solution(A):
  x = []
  for q in xrange(len(A)):
    x.append(A[q][-1])
  return x

def main():
  A, b, option = grab_input()
  A = prep_matrix(A, b)
  A = solve_function(A, option)
  x = grab_solution(A)
  print x

if __name__ == "__main__":
  main()

For the solver functions, I wrote gauss_np(), then gauss_pp(), then gauss_spp(). You can kind of tell that order since the latter ones are way less elegant than the rest of the code. I guess that happens after fusing with the program for a few hours straight, but at the same time I enjoyed trying to track down those little bugs and index errors and what-not that crept in while typing the commands.

It’s a scavenger hunt, academic contest, tabletop puzzle, and basketball game all rolled into one!

Advertisements

ODEs in Fortran

As part of my senior thesis work, I’ve been quickly getting up to speed with both programming in Fortran and various numerical methods for solving different types of equations. This, of course, will all come before I learn the relevant topics in my numerical analysis (MTH 451) class, but I don’t mind too much. This thesis is more important than that math course anyway, plus learning it beforehand means I can focus on my other courses at the end of the semester without stressing too much. Sounds good to me!

Anyway, I wrote three programs over the last few hours to solve the ODE u’ = u [ exact solution: u = exp(t) ] just to make sure I was programming the methods right. After all, I may need to use those methods in my final project, so getting them right now is a big step. In all three programs (that differ only in the “solve” function), the step size needs to be changed in two separate places and the function would need to be changed for different problems, both of which would require a re-compile, but for these programs that isn’t too bad. You’d need to do the same for a change to some sort of input file anyway, and I didn’t want to get around that restriction by having user-inputted values. Check them out!

PROGRAM Forward_Euler
    IMPLICIT None
    REAL, PARAMETER :: tstep = 0.2
    REAL, PARAMETER :: tend = 3.0

    PRINT '(A)', "Forward Euler Method"
    CALL solve(tend)

    CONTAINS

    FUNCTION f(u, t)
        REAL :: u, t, f
        f = u
    END FUNCTION f

    FUNCTION advance(u, t) RESULT(unew)
        REAL :: unew, u, t
        unew = u + tstep * f(u, t)
    END FUNCTION advance

    SUBROUTINE solve(tend)
        REAL :: tend, t = 0.0, u = 1.0
        INTEGER :: k = 0
        DO
            IF ( t > tend ) EXIT
            PRINT '(i2, f5.1, f7.3, f7.3, f7.3)', k, t, u, EXP(t), ABS(EXP(t)-u)
            u = advance(u, t)
            t = t + tstep
            k = k + 1
        END DO
    END SUBROUTINE solve
END PROGRAM Forward_Euler
PROGRAM RungeKutta_2
    IMPLICIT None
    REAL, PARAMETER :: tstep = 0.2
    REAL, PARAMETER :: tend = 3.0

    PRINT '(A)', "2nd Order Runge-Kutta Method"
    CALL solve(tend)

    CONTAINS

    FUNCTION f(u, t)
        REAL :: u, t, f
        f = u
    END FUNCTION

    FUNCTION rungekutta2(u, t) RESULT(unew)
        REAL :: u, t, unew, ustep, tnew
        ustep = u + (tstep / 2.0) * f(u, t)
        tnew = t + tstep / 2.0
        unew = u + tstep * f(ustep, tnew)
    END FUNCTION rungekutta2

    SUBROUTINE solve(tend)
        REAL :: tend, t = 0.0, u = 1.0
        REAL, PARAMETER :: tstep = 0.2
        INTEGER :: k = 0.0
        DO
            IF ( t > tend ) EXIT
            PRINT '(i2, f5.1, f7.3, f7.3, f7.3)', k, t, u, EXP(t), ABS(EXP(t)-u)
            u = rungekutta2(u, t)
            t = t + tstep
            k = k + 1
        END DO
    END SUBROUTINE solve
END PROGRAM RungeKutta_2
PROGRAM RungeKutta_4
    IMPLICIT None
    REAL, PARAMETER :: tstep = 0.2
    REAL, PARAMETER :: tend = 3.0

    PRINT '(A)', "4th Order Runge-Kutta Method"
    CALL solve(tend)

    CONTAINS

    FUNCTION f(u, t)
        REAL :: u, t, f
        f = u
    END FUNCTION

    FUNCTION rungekutta4(u, t) RESULT(unew)
        REAL :: u, t, unew, k1, k2, k3, k4, tnew
        k1 = tstep * f(u, t)
        tnew = t + tstep / 2.0
        k2 = tstep * f(u+0.5*k1, tnew)
        k3 = tstep * f(u+0.5*k2, tnew)
        tnew = t + tstep
        k4 = tstep * f(u+k3, t+tstep)
        unew = u + (1.0/6.0) * (k1 + 2*k2 + 2*k3 + k4)
    END FUNCTION

    SUBROUTINE solve(tend)
        REAL :: tend, t = 0.0, u = 1.0
        REAL, PARAMETER :: tstep = 0.2
        INTEGER :: k = 0
        DO
            IF ( t > tend ) EXIT
            PRINT '(i2, f5.1, f7.3, f7.3, f7.3)', k, t, u, EXP(t), ABS(EXP(t)-u)
            u = rungekutta4(u, t)
            t = t + tstep
            k = k + 1
        END DO
    END SUBROUTINE solve
END PROGRAM RungeKutta_4

Again, the only difference is in the “solve” method. Eventually these will all be wrapped up in a module, along with the other algorithms I’ll need for the final project, but for now three separate files is nice. I could put them in a single file and have the program call each one in turn, or only run a user-selected method, but that’s relatively simple compared to actually getting the coding down and to work.

I am very glad that it works.

AST410 Senior Thesis

On Friday, I had a meeting with Prof. Ed Brown about him potentially being my senior thesis advisor as well as deciding what the thesis would actually be. Needless to say, I was pretty nervous for the two days before the meeting following that first half-begging e-mail out to him (especially since I’ve never met the man before). I couldn’t sleep the night before, which was also partially due to some Dr Pepper I had at dinner, but I was just worried that he wouldn’t like what I wanted to study, or that it was too broad or narrow (since I didn’t even really have a full idea on what I wanted to study either), or he didn’t have the time to advise a student or already had too many students to advise. Yes, I commonly think about the worst that could happen first, then gradually improve my outlook.

I had read a few (three) papers involving r-process nucleosynthesis, all of which revolved around the simulation of the supernovae and various variables that could lead to or prevent the r-process from occurring in the simulation. Each one looked at slightly different areas, so I figured that would give me a good base for discussion with Prof. Brown so that I didn’t look like a total idiot.

Well, after stumbling over my words and trying to defend myself to prevent him from dropping me, we discussed what my first courses of action would be (get acquainted with Fortran, read a handful of papers and notes he’s e-mailing me, etc.) that will carry me through the first month(s). We also settled on a topic, at least tentatively, which means that I’m not learning all of this all for naught! The only thing left to make it official is to fill out the PA Department form for the thesis topic, get it signed by him and Prof. Smith, turn that in, and start doing the actual work (downloading and installing a bunch of things right now to make things work).

What is the topic, you ask? Well, right now, it’s a methods-based research topic centered on two different reaction networks. I will be developing and programming a driver program (most likely in either Python or Fortran, although it could end up being a mix between the two) and comparing the end results, based on inputted variables, between the two reaction networks. This will be the first time where my programming abilities will have to be used, and I’m really excited about that!

Also, I think that I’m going to like using Fortran

Preparing for Life

In twelve months’ time, my next four-to-six years will be set and laid out for me to simply follow. While for some this long-range plan may be a little disconcerting, I’m looking at it as my first official steps away from my childhood and into the life of an adult, no matter where I eventually find myself in twelve months, or where I wander between now and then.

Senior Thesis
I’ve just started reading articles in preparation with meeting with my potential advisor to discuss my senior thesis, a requirement for every Astronomy/Astrophysics major at MSU. After trying to decide what I wanted to study for the first couple months of the summer and the end of last semester, I finally settled on an area that I both enjoy and would continue studying in grad school if given the option: r-process nucleosynthesis in supernovae. This attracted me for a number of reasons, the top ones being that it’s not fully understood and that, as theoretical work, it relies highly on computer simulations and coding. Both interesting things to be a part of! Since I haven’t met with the professor yet, I can only hope that he’ll decide to be my advisor, otherwise I’m a little short on luck.

Bike and Build
After finding out about the Bike and Build charity a few years back, I’ve been really excited about applying (this coming October) and hopefully taking part in the program. Riding a bike across the U.S. and building homes for those less fortunate? Sign me up! If I am not accepted into the program, it won’t be like my summer will be meaningless, since I’ll be able to pack/prepare for the next stage of my life and also work at the MST@MSU summer camp again, which would be sweet anyway.

Graduate School
I’ve taken the GRE General Test (M:800, V:550, E:5), and the only standardized test I have left as an undergraduate is the GRE Physics Subject Test. I’ve signed up for the October test date (the first of the year), downloaded the provided pack, and will be picking up a book or two to help me prepare for the test. That score will end up meaning more for admissions to grad school than the general test, since I am going into a Physics-related field, after all. At this point, I have two months until the exam, which should be enough time to prepare so long as I start studying sometime within the next week. I’ve also tried to narrow down my list of school, mostly by collating my various lists into one, so that I can start to figure out where I may be living for the next part of my life.

Programming
Should the subject test (and the retake) go sour, or admissions staff think I’m not up to stuff at any school I apply to, I’ve already started looking at potential jobs that I could post-graduation with my degree. While getting ready for that, I’ve decided to fully flesh out my programming skill set in two areas. First, bring my UNIX/bash abilities close to where my Python skill is, and second, learn C/C++. I haven’t decided between those two languages yet, but I am leaning toward C++ since I feel like it would be slightly more useful. Of course, I have very little idea about which is actually used more in the field, although I’m guessing that it will vary greatly from one place to the next. Mostly this was spurred by a job offering that I will most likely either not be qualified for in any case, or the position will already be filled once I can apply, but in any case the added skills won’t hurt.

Relationships
I’ve decided that, since this last year is very important for the rest of my life, I’m not going to date or try to date anyone for the next year. I’d rather just simply have to worry about me and my own problems for the time being than mine and someone else’s, plus if I’m moving across the country in twelve months I’d want to be single anyway. In some cases, it may be tough, but I think it will turn out for the better for everyone by bringing the inevitable up to the present.

GRE

This past Monday morning, I took the GRE General Test in preparation for filling out grad school applications and applying this coming year. It’s strange to think that I may only have one year left in East Lansing, or less than a year if some of my next summer plans pan out. My list of potential grad schools will invariably shift as I dive deeper into the specific programs I want, or figure out what the specific programs I want are. I sent my GRE scores to MSU, UMich, Stanford, and CalTech, because I know that I’ll be applying to those four (or am about 95% sure I will be), but as for the rest, I have no idea.

But since that’s still a ways off, let’s talk about the actual test. I awoke around 0630, way ahead of my set alarm, after not being able to really sleep the night before. I kept tossing and turning, vocabulary words running through my head, worries about analogies and writing essays sneaking into my slumber. Notice that none of these involved Math, since I knew that I could easily get in the 700s (and my two practice test did just that), and that would be relatively fine by me. I knew that the Physics subject test, which I’m taking this fall, would mean more for my applications than the general test, so I wasn’t too worried if I got a little less than I anticipated on the score.

So, when I woke up, I ate a quick breakfast, got dressed in my lucky shirt, and paced around the apartment for an hour reading through vocabulary words while waiting before I needed to leave for the Student Services Building. My exam wasn’t until 0830, but I wanted to get there in plenty of time to try to relax and clear my head of anything but the necessary information before the test. I arrived, filled out a sheet of information, and waited for my clipboard number to be called to actually enter the testing center. Of course, after said number was called, I then had to exit the center to deposit everything (including my apartment keys…?) into a locked locker in the next room, give the key back to the testing center personnel, and then enter the actual testing center. I couldn’t even use the three mechanical pencils I brought!

I sat down at my assigned chair, and my heart began to race. This was it! I was finally taking that first step toward entering graduate school, and all I had to do was take an exam on a computer. I went through the guide to using a computer that introduces the GRE, just to calm myself down, and started the essays. I instantly recalled all of my AP Language memories as I wrote the essays, primarily those about impromptu constructions. Combined, I only spent about two-thirds of the time on them, but that was all I needed. I typed them out, read through them again, made a few edits and additions, and I was set (with each of them occurring in turn, of course). I finished, and raised my hand to be excused from my workstation.

My ten minutes break started, but really all I did was grab my snack, go to the bathroom, eat most of my snack, and went back to the testing center. From there, I knew that I only had three more sections to do, two of which would be the graded Verbal and Math sections. First on the agenda: Verbal. This was what I had been dreading through hours and hours of vocab words, analogies, antonyms, and everything else involved. This is what I spend basically all of my time on, knowing that I needed to improve my vocabulary and learn English in order to do well on this section. I took my time on the thirty questions, taking up almost all of the allotted time, and breathed a sigh of relief. I felt that I did pretty well on it, about as well as I did on my practice tests, which were both low 600s and fine by me.

Next up, my forte: Math. This I wasn’t worried about, but knew that I just needed to relax and take my time and I could score in the high 700s. That’s exactly what I did: I solved each problem, double-checked my work, thought about things, double-checked that I solved for the correct variable (which almost sunk me on one problem), and checked off the answer. I finished that section with a few minutes to spare, knowing that I did well on it. I clicked on the “Next” button a few times to advance, knowing that my last section would either be Verbal or Math, while silently saying to myself “Please be math, please be math, please be math” over and over, knowing that my brain might not be able to take another dose of vocabulary, especially after two hours of test-taking.

…and I had another Verbal section. My heart sank when I read those words at the start, but then it immediately turned to the fact that the first Verbal section might not be graded and I would need to do well on this one as well. So, I hunkered down and went through the questions, taking my time but making sure my brain didn’t linger on a single problem for too long. I hit the five-minute mark, and was greeted with a lengthly passage that I needed to read and answer questions on. I knew that I could either read and understand the passage, possibly running out of time while answering the questions, or I could skim the passage and still answer the questions. I chose the second idea, and finished the last question with thirty seconds to spare.

And my GRE was complete! All I had left to do was look at my scores and send them out to up to four schools (I chose MSU, UMich, Stanford, and CalTech, as mentioned previously). But before I did that, I needed to worry and wonder at what my scores were as my pointer hovered over “Next.” I clicked, and I read, and I had to stop myself from shouting out in the disturbingly quiet testing center. I had to restrain myself on the chair and I read over the scores again, making sure that I had read them correctly the first, second, and third times. Then I read them over again, just to be really sure. I wrote the scores down, still not believing it, and clicked “Next.”

I earned a 550 on the Verbal section, and an 800 on the Math section! I still couldn’t believe it as I filled out the score report form, barely able to contain the smile on my face. I stood up, walked out of the room (still beaming), and went to the desk to collect my things. “Would you like to write down your scores?” she asked after I signed out of the testing center. “Yes I would!” I almost shouted back, the smile still arcing across my face. She handed me a small purple slip of paper, and I wrote down those two numbers, proud of what I had done in the room. My hot walk back to the apartment was filled by me texting and calling friends and family, bubbling over with excitement.

And then, I sat down, decided to take a shower, and I relaxed. I relaxed like I had never relaxed before. Yes, my Verbal wasn’t quite as high as I wanted, but with the perfect score on the Math section, I knew that I wouldn’t be retaking the General Test. Now, all I have left is the Physics Subject Test and to fill out the applications, followed by a long process of wishing and hoping. It is good to know that a large portion of the entire process is complete, and I’m glad that it went as well as it did.

I figured that I’d split the programming part off, since I’m working on another large portion of the game, so I’ll post that up later.

My First Days as a College Senior

Of course, I can’t really talk about those first days until I talk about my last days as a college junior, so I’ll be back-tracking a few weeks. Get ready for a bumpy ride!

This past week were my three final exams (and my one mandatory class discussion session…) which I feel I did really well on. Due to some poor grades following my MDRS absence, I needed pretty high scores on my finals to get the grades that I wanted, or close to the grades that I wanted. Right now, three of my grades are officially recorded, one more is pretty much determined, and the last one is completely up in the air. For the three official ones (MTH 320, PHY 440, and PHY 472), the finals for the first and third went really well. I needed high-80s/low-90s to bump up to the next grade-point level, which I achieved! PHY 440 didn’t have a final since half the class was labs, and I still got a reasonable grade in that one. Due to some poor semester planning and missing two weeks, this semester was far from stellar grade-wise, so I’m really glad that it’s now behind me. One thing I am proud of, though, is only losing two points out of three-hundred on my various papers and homework assignments for LB 334 (the practically determined 4.0 that’s not quite official yet…).

But the end of the semester went a little tough… Homework assignments and fitting in study time and working all took a mental and physical toll on me, which I’ll be slowly recovering from over the next few days. I enjoyed most of my classes most of the time, which was a nice change from the LB 145 and PSY 280 days of yore. Another academically-related ending is my Calculus Learning Assistant job. I graded final exams this morning, finally ending my involvement with that past employment. I won’t even need to worry about the transition to the Physics LA job until mid/late-summer when our sections are decided, which is pretty nice. One minor detail that I am looking forward to due to that change is the possibility of having former students in my class again.

I also gave two talks about my MDRS experience: the UURAF and the Briggs Symposium. I’ve attended both of these events in the past, although my presentations have always been as part of a class, so it was nice to be there presenting on my own accord. At the UURAF, which I was at between 0930 and 1130, I was off in a side room of the Union with the other natural science posters, which were only about another ten or so. Small group, but it was nice being out of the mob scene that was the main hall. For the most part, I talked with some of the other presenters, visited a few of my current (or, at the time current) students’ posters, and just hung out. When the judge finally came around, we talked for twenty minutes or so about how I was selected, what I actually did there, my thoughts on the future direction of American manned spaceflight, my plans for the future, and random things I learned while there. Since most of the judges are volunteers, I think the judge that came around to me was glad that my poster was muddied with technical jargon and unintelligible results, hence my 13/15 combined on Delivery, Comprehensibility, and Visual Aids (each being out of five). I also talked with a few former professors, some old classmates, and random people walking by about similar topics. My only regret is that I didn’t bring a copy of The State News that I appeared on, but hindsight is always 20-20, right?

About a week later, I attended the Briggs Symposium, which is similar in structure but used more for semester projects with only a smattering of independent research projects. I basically just hung out with some classmates and talked with former professors about what I did. My old Chemistry (LB 171/172) professors were really interested in the future direction of NASA, especially coming from someone with an “insider’s perspective,” while my Biology (LB 145) professor was more interested in understanding the finer points of general relativity and the issues with interplanetary travel and communication, especially with regards to the internet. This Symposium is much more relaxed since we’re not really judged (unless you count getting graded for a class as being judged…), plus everyone in Briggs either knows each other or can understand the stresses that they’re going through, so it’s really easy to just talk with each other without really needing an ice breaker (You wanted to burn the CFTR map in front of the prof after two weeks? Me too!).

The best part about both is that I now have two coupons to the MSU Dairy Store. I’m saving one for MST@MSU-2010, while the other will probably be used at some point next week while I’m out job hunting.

Blue Group from MST@MSU 2009

Speaking of job hunting, I’m still partially unemployed for the summer. I’ll be working at the MST@MSU summer camp for two weeks again with the same group of counselors, plus one new addition, which I am really looking forward to. But, for the other twelve or so weeks, I’ll have no job. The kind of bad part is that I’ll either need to run around downtown East Lansing all day tomorrow, or wait over a week before I can search again due to attending the STS-132 launch in one week. I’m sure that I’ll be able to find some job somewhere; it’s just the act of going out and doing it that’s a little delayed due to finals recovery and an extended absence from East Lansing.

But now this post is really jumping around, so let’s return to what has actually happened. Finals week started on Monday with my PHY 472 exam. I studied all day Sunday for it, plus a few times within the week prior, logging somewhere around twenty-four hours for Quantum Mechanics. I sat down in my seat, took out my pencils, and got to work on the exam. I blazed through the entire thing, then went up to ask the professor two small questions just to make sure I made the right assumptions. Once he verified that I had, I turned it in. “Woah, you’re already done? That was quick.” Yes, I was in fact done, and in seventy minutes. I didn’t need any more time, and based on my final grade (and the score I had calculated earlier that I needed on the final to get that final grade), I got a high-90 on the exam, potentially even a straight 100%. I just like finishing exams early, and when I’m confident about my answers, looking at them thinking, “I’m so good at this,” doesn’t get me a better grade, so why waste an extra ten or fifteen minutes?

Tuesday morning went similarly for MTH 320. I had stayed up until 0400 studying, starting right after getting back from the Quantum final, then I took a quick nap before the 0745 final. This final, however, was optional; the last day of class, the prof handed out our current grade, so we could either take it as is or take the final and try to improve it. Since my grade was much lower than I anticipated, due primarily to a string of poor homework grades that fell (you guessed it) during and after my MDRS mission, I decided that I would be taking the final.

. . .
. . .

I was the only one there.
. . .
. . .

The prof and I stayed in the classroom for about twenty minutes, me furiously writing proofs on printer paper, he working on a crossword puzzle, before moving to his office so that he could get some work done while I took the exam. We talked during the walk about how I was angry at myself for having the low grade at that point and why, he said that it was strange especially since I understood all of the information well when I was there, then I continued taking the exam. I was about ten minutes into the eleventh and last problem when he mentioned that I had forty-five minutes left. I worked on that last problem for the next twenty-five minutes before finally giving up. “I know what I needed to do,” I told him as I stapled the sheets together, “but I just couldn’t get the last one to work out.” But you did the first ten, he asked as I handed the stack over, which I answered in the affirmative. “I’m only grading ten, though, so which ones did you want me to grade?” I said, “Well shit, I’m an idiot. I was done forty minutes ago,” before telling him to lop the last problem off the record. Before that exchange, I was feeling a little badly about that grade, since I needed a 90 to bump the grade up, and dropping that problem would put me right on the cusp (and it’s good that it wasn’t counted, because I also did another problem completely wrong by proving the wrong theorem which put me right on the cusp). That walk home felt much better, and checking my grade yesterday and seeing that I had, in fact, bumped my grade up, was icing on the cake.

My final final was Wednesday afternoon and in Thermal Physics, the giant thorn in my semester among the less-sharp thorns. Unfortunately, I had no idea what grade I had going into the final, or at least didn’t know the exact value. I knew it was drastically low because the class just straight up sucked. Terrible professor, boring subject, unintelligible lectures and textbook, and ridiculously hard problems on the exams that were never covered in lectures, homework, the textbook, or furious Google searches after-the-fact. I don’t even know if there’s a sizable curve to help me out, but I would need a pretty big curve to save my grade. So, I studied for close to three total days on it, reading through the three-hundred textbook pages, all of my notes, previous exams and homeworks, close to four or five times each. I think it worked out, because I actually had an idea of what to do on all of the problems, but again, a miracle might be needed to save that grade.

And that was my finals week. I went back to my apartment, ate some Doritos and drank and Arnold Palmer, played some Legend of Zelda on my computer, and smiled. I was done with my junior year at Michigan State, and it couldn’t have felt better! I’m transitioning from three straight semesters of ridiculous courses and “my hardest semester yet” to my twenty-four total-credit senior year. How can you even worry about what happened over the past five months when the next fifteen will feel so good?

And now, I get to do this stuff for the summer. In there is a computer game I’m designing, some video games, a bunch of book I want to read, and a complete lack of due dates, exams, office hours, class discussions. I’m pretty excited…

…but it will have to wait a little bit longer. As I mentioned, I’m basically losing a week of the summer due to heading south for the Atlantis launch (which I don’t mind at all!), and once I return I’ll be (hopefully) working and studying for the GRE. Yes, I have two weeks to finish my preparation, which is primarily vocabulary anyway, then summer will really kick in. I’m just very glad that I don’t need to worry about an entire section (Math) of the test, which greatly reduces my stress level about it. It’s just all of that vocab memorization that’s the worst part. I can memorize equations and reactions and commands, but just simple words? My brain just has trouble thinking like that, plus I take Orwell’s words to heart, whether intentional or not. [Sidenote: when I finished that sentence about Orwell, this post’s word count according to WordPress was 1984 words…]

And that basically my life from the past few weeks and looking forward to the future. I know I grazed over a lot of topics, skipped some, meandered around, but I think I got everything out there… Just ask if something doesn’t seem right, or you want me to more deeply discuss my feelings about being the only student taking my math course final this semester or anything else.

The End of the Semester

Starting this weekend, I am in finals mode. I didn’t spend enough time studying last semester, and it showed slightly in my grades, so this time I’m making a more focused and coherent effort to prepare for my end of year exams. One good thing about this semester is that I only have three finals; my HPS class will just have a final three-page paper (I just finished the long paper, which is due tomorrow and takes up more of my grade), while my Electronics class has half of the grade weighted into the lab portion. Yes, I’ll still have quite a bit of work to do for all five of my courses even while studying, but at least my time actually taking exams will be minimal.

I scheduled my courses for next year, with only a few small alterations from what I said a month ago. For instance, I’ll be taking MTH 451 [Numerical Analysis I] in the fall, while my spring Math courses are MTH 415 [Applied Linear Algebra] and MTH 442 [Partial Differential Equations]. There also was a little shuffling of my Physics courses due to when they were actually offered, but that’s fine by me. I’m only taking fourteen credits each semester, plus have no lab in the fall, so I’m happy. That might change when I wake up for 0910 classes every morning, but since I got so lucky this year with my times, I knew that it would eventually run out.

My summer plans are getting closer to being set. I applied for two jobs last weekend and am still waiting to hear back from, I’m on the counselor list for MST@MSU 2010, I am all set for my drive to Florida to see the STS-132 launch, and I’m living in my apartment with both Greg and Chris. I don’t think it could get any better than that. Technically, I’m still waiting to hear back about the NASA USRP, but I’m not very optimistic about it… Oh well, since I’ve had some great research experience so far anyway that working for NASA would’ve just been icing and not the whole cake. Speaking of research, I’ll be presenting at the 2010 UURAF this Friday, with only a few small modifications to do to my poster before then. Plus, to celebrate, I have a Calculus LA pub crawl that night…

I’m also looking forward to having some free time. I’ve been playing two online games pretty frequently recently: Light Bot and NASA ROVER. Both are command-sequence run games where you set a command sequence, hit run, and the robot/rover follows that sequence to achieve a goal, whether it’s moving to a certain point or switching on lights. I’m planning on writing a similar game in Python (using PyGame) this summer, which should be a good couple months of programming and testing. Plus, I’m just looking forward to playing it and expanding it as I go along. I’ve worked on some character art already, plus planning out how I want it to function, so I really just need to learn the ins-and-outs of PyGame before I can get started.

Of course, that won’t be until after the GRE, which I’m taking at the end of May. I’ve been studying vocab like it’s my job, almost to the complete exclusion of every other part of the test. I’m not worried about the math section; I’ll just need to make sure that I don’t make silly mistakes with my arithmetic or the directions. I’ve skimmed through everything, but the vocab is just what I’m worried about. I won’t be taking the Physics subject test until the fall, so I won’t need to worry about that for some time yet.

And that’s basically my life right now. This saturday, I’ll be shutting myself off from online social networking to fully get into finals mode, so you probably won’t hear from me until May 5th or later. So, until then, stay thirsty my friends.