Why CS?

I grew up in rural Iowa, where - as you can imagine - I had little exposure to coding. What few computer classes were offered at my high school were focused on advancing your skills in “business applications” such as Microsoft Excel. I had a knack for fixing high level technical problems, so when a spot in my schedule opened up for an elective, I decided I’d take Fundamentals of Computer Programming as a dual credit course with the local community college. In my final semester, I finally got around to writing my first line of code (in VBA, mind you).

And I immediately fell in love.

When doing the homeworks, I realized I was getting legitamately giddy with every problem solved. I’d always loved puzzles, and coding was like a puzzle with limitless outcomes. I found myself spending hours outside of class creating needlessly difficult programs, just to see what I could do with my limited knowledge of this amazing tool. I remember one such program that would read out the number of days until important moments in my life, and that it calculated it without using a date data type! I cringe at the idea now, but back then, it was so cool that I could build all of these things that just… worked!

When I came to college and realized I could be productive in life while having that much fun, I knew I had found my path. Since then, I’ve been a CS major, and I haven’t looked back.

Course Highlights

  • (CS:3330) - Algorithims
    • Important concepts: solutions using dynamic programming vs. recrusion, time and space complexity, and efficient use of data structures
    • Implemented various language agnostic programming assignments (generally in Python)
  • (CS:2820) - OO Software Design
    • On top of being introduced to Object-Oriented Design, this class provided me with my first working esperiences with Java, Git, and automated testing (Unit and Integration Tests)
    • Much of what I learned in this class was useful in my first industry internship with Cerner
  • (CS:4640) - Computer Security
    • Studied threat models and the way we define security in computers (Semantic vs. Computational Security, IND-CPA Standards, etc.), and explored subjects such as homomorphic encryption, public key systems, and password securtiy.
    • Language agnostic assignments, C and C++ preferred
    • Concluded with a personal research project of our own choosing - mine was on the insecurity of audio CAPTCHAs and there necessity for blind internet users. You can read it here.
  • (CS:3620) - Operating Systems
    • Fundamentals of Operating Systems: the objectives of an operating system, how it maintains control, how it interacts with the hardware, etc.
    • Mostly Bash scripting and C assignments
  • (CS:3820) - Programming Language Concepts
    • Introduction to functional programming and programming concepts (compilers, parsers, verification, etc.) through programming assignments in Haskell and Agda