School Stuff

Midterms Looming and Functional Programming

2/19/20

Last week was the first midterm for machine architecture, and it went pretty smoothly. Lots of resources to prep with and straight forward in nature. Project went smoothly as well, probably around 17 hours or so to finish up editing and commenting/cleaning code. Not too bad, definitely hit some dumb mistakes which cost me a lot of time. I.E. fread("file"...) took a while to find... Additionally, shenanigans with pointers ensued while mallocing. Take away: Remember, a pointer itself is still passed by value to a function (unless its a pointer to a pointer). Therefore, changes to the pointer itself in a function call will result in nothing after function is exited. IE a null pointer passed in and malloc'd to a struct will still be null upon exit of func. Obvious, but caused some confusion.

Internship with Multitech was accepted last week as well, so Summer plans are now concrete. Additionally, over the weekend booked tickets to Korea for the 13th - 31st. Our flight connects through China, and with current Coronavirus, there is some concern. Flights have been cancelled to China until April 30th. However, I am not too worried, and worrying about it won't do any good. Looking forward to finishing up my exams and hopping on a plane that night!

Ocaml is turning out to be quite different than I thought. I continue to like the idea of functional programming, though it definitely takes some thinking. The fact that a binary tree function with insert, delete, find, and tolist functions took less than 100 lines of code is really nice. However, there is a lot of cognitive load. The amount of recursion and nested recursion can really take some time to wrap your head around. However, the lack of memeory management makes for clean functions without worrying about cleaning up etc. From that standpoint, it is very straightforward. I think conceptually I enjoy functional programming. Using a language to implement it can be the hard part.

Next week is going to be busy. I have midterms for functional, algorithms, and stats. It is a bit overwhelming, though I think stats will be manageable (just need to put in the work). I am a bit concerned with functional, as it is a lot of type checking and I often make mistakes. Also, it seems like quick implementation of functions, which may or may not go well. Depends on the functions and my brain that day. Algorithms is also a bit uncertain. The homework was definitely something to wrestle with, and I am not entirely sure about my answers. Proving mergesort's division algorithm seems like such a simple task, however the proper way to prove the invariant proved tedious. A proof by induction was the route I went, but I am still not sure. Additionally finding the T(n) of the merge part seemed straightforward enough, except for the pesky conditional statement. Using floor and ceiling functions seemed correct, but ended up combining all floor/ceiling executions into one execution. Hoping for the best.

This week is acutally pretty slow. Just finished functional assignment for Friday and have the rest of the week to study for next week. Project 2 for machine arch comes out tomorrow, it will be hard not to grind away at that this weekend and prioritize studying.

Project 1, Functional HW1, and Interviews

2/04/20

Last Friday got the first C project. Not too bad, spent about 6 hours on Sunday working on it. Some wierd makefile bugs, but got them fixed. Nearly there on part 1 and 2, have a bug in binary file reading and weird bug coming up about 10 elements short when reading elements in. Will look into it. Graphing is nearly there, need to update graph output loop.

For the first functional assignment, we are just learning OCAML. The functional approach to programming seems quite intuitive right now; however, as functions grow in size and complexity I am not sure how well I will like it. Somewhat concerned about the emphasis on commenting/style, however I am planning to go over this on Thursday.

Interview last Thursday with UHG and an interview this morning with Wipfli. Interview tomorrow with Multitech (onsight). Hoping to get an internship locked down soon, so I can start planning my summer travels accordingly.

Insertion Sort Analysis

1/27/20

In lecture there was some confusion about the runtime analysis of insertion sort. [add insertion sort] The difficulty was with summation notation. the summation of j=2 to n for (j - 1) reduces to a closed form equation of n(n-1)/2. The difficulty was due to simplification.

Coronavirus Update

4/15/20

Very long break between posts. Classes are now online. First week back from Spring break was awful. No motivation and classes were hard to adapt to. Now, things are getting back on track, but it still feels weird. All classes are optional S/N with exemption to major required courses. I have until the 30th to make my decision on my classes. Honestly, I don't know if I will change to S/N. This semester will probably be one of the worst semesters grade wise, but I feel like I don't really need to do S/N

I registered for classes: CSCI 3081W, CSCI 4061, Computational Genomics, Intro to AI, and Animation and Game Planning. I also have met with my advisor and may try to graduate with Honors. I need to fulfill a few honors requirements, but I will definitely be able to do so. Coursewise, I only need 2 more courses, which 5XXX level courses will fulfill. The hardest part will be getting into a lab so last minute and writing a senior thesis. I reached out to David Redish who is a part of the computational neuroscience grad program and runs a neuroscience lab. Some of his research looks at drug addiction and it would be a great opportunity to learn about neuroscience in context of CS. Ideally, there is some kind of modeling or machine learning that can be applied. Although, I think if I were to go this route, I would need to do a lot of self study this summer. I am not opposed, but between internship and DASH, I'm not sure if I'll truly make the time. I am also hoping CSCI 4061 will be an online summer course. If it is, I will take that and lighten my Fall courseload. The other thing is that if I do research, I need to have 2 semesters in the lab to write the thesis. I would also lighten my coursework in this case. If I took CSCI 4061 in the Summer and did research, I would consider applying to the master's program the U offers. It is a combined program where I can take grad classes which apply to my Master's Degree while still technically an undergrad. This would mean my last semester, when I was working on my Thesis, I could be taking 3 or 4 grad classes which would apply to the Masters. The Master's needs 31 total credits, so I could get 12 done and only need 19, which could be doable the next year. Although, I don't think I would want to spend another year in school, unless I was able to work/make decent money at the same time.