Herein I present a short reflection on my time at the University of Montana as a Master’s student in Computer Science. I started the program in August 2011 after working as a software engineer since May 2009 (when I graduated from Montana State University with a B.S. Physics and B.S. Computer Engineering).
Before graduate school…
I thought that I wanted to become a teacher. In fact, in my application, I wrote, “my primary objective for graduate study in CS is to enable myself to pursue a career which includes teaching at an institution of higher learning.” I also stressed my interest in learning the breadth of computer science, since I had focused quite strongly in PC applications built on the .NET framework. Now, after teaching a semester of Intro to Programming, I can say that my interest in teaching is still strong, but it is not the primary direction I see my career taking. However, regarding the breadth of my CS knowledge, I have had great exposure to new languages and paradigms, as well as a good dose of theory, with some interdisciplinary challenges to round it all out.
I think that I am most proud of my perseverence in studying the theoretical models underlying computation. Theory classes have always challenged me, especially when instruction is not tied to real-world examples, but Mike Rosulek was a terrific teacher, and I worked hard to do well in his classes.
Perhaps the best take-away, though, was a better perspective on design which I gained from Human-Computer Interaction (HCI)- I am now constantly checking my designs with (real or anticipated) users. I must say that Machine Learning was probably my favorite class - teaching a computer to be an expert is so rewarding and so revealing of human cognition. I guess, in a way, ML and HCI are both trying to learn about what makes humans tick, only for very different purposes.
So that’s a quick summary of what I’ve learned and where I’ve come. As for where I’d like to go, I’d love to learn more about Bayesian statistics and ensemble classification methods. I’m also compelled to search for better methods of code reuse - the fact that the most portable language today is still C is very frustrating. I look forward to a resurgence of a paradigm of systems communicating efficiently but each doing only one thing, well, in the appropriate language for the task.