A bit of background: I’ve a B.S. in Psychology from a small state school in Texas, which I received in 2006. I bounced around various post-bac programs in Mathematics (Calc 1, 2, 3, Operations Research, Intro to Analysis), Geology, and a stint in a Computer Science program (CS 1 and 2, plus a Software Engineering course and Discrete Math 1) but never was really that interested in anything I was doing at the time. I worked as an IT Support guy for a small non-profit for a few years and got into hacking on some web apps for the users there. I realized I really enjoyed developing software, so I applied to a Software Engineer position in Oregon and have been doing that since 2012 without significant interruption.
Over the years I’ve done a lot of things: Python CLI tools, Django web apps, Node.js backends, Backbone frontends, Go tools, Go services, C/C++ databases, written documentation, built test runners, and so on.
My recent projects have involved some interesting optimization problems that I’ve taken to really enjoying… bithacks, algorithms with interesting mathematical properties, and so on. I’ve really come to enjoy and highly value mathematics.
I’d like to go back to school, primarily to strengthen my mathematical toolkit as well as improve my CS fundamentals: algorithms, data structures, and things like what one might find in a “Computer Organization” course. I’ve been urged by friends in academia and elsewhere to go for Computer Science. However, I find many of the remaining CS courses to be of minimal benefit or just plain uninteresting (“Computer Science III”, “C/C++ and Unix”, “Principles of Programming Languages”).
My questions are the following:
Since my interest is primarily in the mathematical side of software development, does it make sense to consider Applied Math with "the core 3" algorithms/data structures/computer organization as supplemental courses?
Is Applied Math going to put me at a disadvantage from a job seeking perspective as compared to Computer Science, given my practical experience in the field?
Is my proposed Applied Math + smattering of CS "not enough Math" and "not enough CS" to really make a difference in my skillset and employability?
How prepared for a hypothetical Master's in CS would I be following this curriculum?
Seems like you need to find a university where you can take junior/senior level math and CS courses as a non-matriculated student if you want to take more courses.
It’s been almost 10 years since I last took Calculus (which was a non-rigorous sequence - I don’t recall doing any proofs, just plug and chug). I’m concerned that if I don’t retake those courses (a rigorous sequence) I’ll be at a severe disadvantage doing any upper division math, and not really be satisfying my goal of getting better at using math in my everyday work.
Likewise, skipping ahead to upper division CS seems unwise given I’ve no formal algorithms/data structures/computer organization courses.
By the way, my only option at the moment (family and job keep me here) is University of Oregon.
A less formal option that may be good if you have inherently high motivation is to self-study CS courses based on course materials available on the web. For example, in http://www-inst.eecs.berkeley.edu/classes-eecs.html , you can self-study the introductory sequence (CS 61A, 61B, 61C, 70), then self-study the upper division courses (CS 1XX) and graduate level courses (CS 2XX).
If you want to use the University of Oregon courses, it appears that similar pages for CS courses are available at https://www.cs.uoregon.edu/Classes/ .
I have the CLRS algorithms book as well as Computer Systems: A Programmer’s Perspective, which I’ve done some self-study from. Both are practical and interesting, but I tend to get bogged down in the proofs as some of the math is just not anything I remember seeing (again, 10+ years since I took a math course). Barring that, I’ve not had much if any trouble with the content of either text, so self-study of this material is something I’d be comfortable with going forward. However, I worry that the lack of these classes on a CV/resume is a barrier to entry for some jobs.
My main goal is to improve my ability to model computational problems mathematically. I find this activity tremendously satisfying and challenging. It seems to me that part of being able to do this is not just knowledge, but intuition, experience, and breadth of exposure to mathematics. I definitely do not feel strong enough mathematically to self-study anything beyond basic calculus.
Computing is somewhat less credential focused than many other areas (including IT). Some software developers mainly learned CS through self education. They may have an unrelated degree or no degree at all. But that obviously requires a high level of ability and motivation.