Note: This blog was migrated from a previous blog.
My second year in college was hard. I knew it would be hard but poor study habits, bad prioritization skills, and personal issues didn’t make it any easier.
In my second year, the concepts that had been abstracted in my first year were now being explored in depth. I also found a new home in the science center since I had almost all my classes in that same building and even the very same class. If I wasn’t an RA in my junior year, I would have just bought a mattress and lived in the building!
Coming back from that tangent, here’s what I learned in my sophomore year of college.
CS 230: Programming Languages
In CS 230, we looked into how programming languages work looking into topics like typing, parameter passing, and others. We focused on four programming paradigms1;
- declarative using Prolog
- object oriented using Java
- functional using StandardML and
- imperative using Python
The theory itself was difficult, although dealing with the quirks of each programming language was frustrating. Prolog didn’t make any sense, ML had cool one-liners but its lack of variables annoyed me and Java kept blowing up in my face.
CS 360: Operating Systems
In CS 360, we went over various operating systems, parameter passing, signals among other very dense topics. Programming wise we traversed the Linux kernel using C (which was nasty) and we also implemented mutex locks and semaphores to help with CPU scheduling issues.
Much like CS 230, it was a hard class for a sophomore to take, but it’s better than doing it in senior year where it would take up more of my time.
MA 251⁄252: Calculus
I have no idea how math evolved from
/) into symbols which are used to calculate volume and rates of change. The most valuable thing I learned from this class wasn’t the actual math. Rather it was the importance of collaboration and teamwork as well as how to use some great software such as Desmos for graph plotting, Wolfram Alpha for calculations and Symbolab2 to explain them.
Also, calculating stuff is easy. After all, Wolfram can compute the US GDP over Kim Kardashian’s Weight, one still needs to understand the problem they’re trying to solve. Also, you need to solve problems with care since a flipped sign 20% into a problem can turn into a terribly wrong answer.
PHY 101: General Physics
I thought I would use this class as an opportunity to gain an appreciation of how the world works in order to abstract it to make a vidya gaym. I made a bad choice given that the class was much harder than I thought and my poor preparation didn’t help.
CS 320: Data Structures and Algorithms
This class is considered to be the rite of passage to Computer Science. In this class, I learned about various algorithms and data structures created to solve specific problems. We moved from naive algorithms, like Bubble Sort through to more powerful techniques like dynamic programming. Great class…
CS 249: Computer and Network Security
I thought this was going to focus on networking but it was more centered towards security. Still, while it wasn’t as programming heavy as other classes, it left me with a lot to think about in regards to how to evaluate computer security3. My favorite part of this class was watching Mr. Robot to evaluate how legit it was, especially in comparison tracking a killer’s IP address using Visual Basic [VIDEO]
CS 149: Java Programming
This was a really laid back class where we tried to learn how to program in a semester. I had a blog called Semester of Java which had a tutorial but I stopped updating it4. My greatest achievement was my final project where I made a memory game in 3 hours. It wasn’t the most efficient code in the world but it worked5…somewhat.
RE 101: Literature of The Bible: Old and New Testament
Since my college is Lutheran, we’re all forced to take a religion class. I wasn’t interested in taking it, but it was really interesting to get a different perspective as opposed to the prosperity gospel that invaded my home country6. Some things were inconsistent (which the instructor was intellectually honest enough to admit)7 and the homework wasted my time, but the class was taught really well and the instructor made it even better.
IS 201: Living In a Diverse World: Economic Conditions
As a follow up to IS 101, I had the same zealous teacher this time covering poverty in the United States and how culture and policy make it worse. Granted that there are poorer countries in the world, but the US is a first world country where this shouldn’t be a thing.
We read a lot of books such as The Grapes of Wrath, The Days of Destruction and The American Way of Eating and we also watched movies such as In America and American Winter.
The class was hard to process given how US-centric it was. The class was really sobering as it showed the reality of some people’s lives here in the US. It was taught by that one overzealous teacher, but then again I could be having cognitive dissonance. I don’t care how, but the US needs to have an honest discussion about the future of their country, its economic condition and how it will serve its citizens.
May Term 2016
In this class, we learned about the algorithms which make computer graphics possible and how to implement them. The class started easily since all we needed to do was draw a dot. By the end of the first week, we were implementing ray tracers in Python, which I struggled with given all the math.
While you wouldn’t want to implement a ray tracer in Python, I enjoyed looking into improving performance such as using PyPy and list comprehensions. I ended off by delivering a presentation on Pixar animations, but that was boring and complicated.
I’m not very good at the low-level classes, but as I’ve dicussed before, uncovering abstractions allows for greater knowledge transfer.
So that’s my second year at Wartburg College where things got harder and less abstract. Thankfully, Google, Stack Overflow and my professors were willing to tolerate my stupidity.
Join me next year where I go into part three of this tetralogy of my college life.
- It’s hard to put programming languages into a set category since some languages support multiple paradigms. For instance, Python does support functional programming and object-oriented programming. ↩
- Funny enough, I discovered Symbolab after typing in “Wolfram Alpha with answers” after beating my head since I couldn’t solve a problem. I don’t regret that decision. ↩
- Even though I have no interest in working in infosec, I follow a lot of infosec people on Twitter. I have no idea why… ↩
- There are so many learning resources online which are better and more accurate. I stopped since I wouldn’t be helpful to a learner. Since this revelation, I want to write more about how I did things rather than how to do things. ↩
- I remember it having a nasty bug which would prevent images from loading when placed in a
.jarfile. If I recall correctly, the issue had to do with loading the path to an image rather than loading the image itself. It was probably the first bug I’ve encountered where a bug was caused by something out of my competence rather than my stupidity. ↩
- I remember this one church where the pastor would be trying to convince us that he wasn’t spreading the prosperity gospel only to do that in a more eloquent and convincing manner. ↩
- Like gay marriage, treatment of refugees/migrants etc. The interesting one was the part about slavery which the bible has no problem with (it’s tolerated and sanctioned in the bible) and that it’s similar to what the Confederate States did. ↩