---------------------------------------- | |
computer science | |
February 02nd, 2022 | |
---------------------------------------- | |
I came across one of those lists of free computer science classes | |
curated in a github gist or some other such place. I knocked it | |
around in my tabs for a couple hours and let my mind go back to my | |
own CS education. | |
I started at Rowan University in 1998 in the Computer Science | |
department following the coattails of a friend from Boy Scouts who | |
had been doing well for a year already. In high school I didn't | |
really have any direction at all or idea of what I wanted to do. | |
Computers happened to be a thing I was familiar with, spent a bit | |
of time on, and it appeared likely to have a future that paid | |
well. My dad's only restriction on my choice was, "No art." | |
He had gone to Kent State and studied in the Visual Communications | |
department there and was unable to turn that into a career. He | |
instead took the long way through a retail job and eventually into | |
sales. Because of his experience he hoped to save me the trouble. | |
The thing is, had he not had that restriction I likely would have | |
gone into some form of art education. It was the course track | |
I enjoyed most in school, continuously excelled in, and got me | |
motivated. But, in the long run the joke is on both of us. As I'll | |
explain in a moment. But first, back to Computer Science! | |
In 1998 I got my start. I had some great introduction to | |
programming classes that dove right into C. I had a killer lab | |
techniques practical course that taught me the ins and outs of the | |
command line, jobs, rediection of outputs, and all sorts of mighty | |
cool things I use every day. I also had some heavy-duty math | |
classes which bored the ever-living snot out of me. | |
My first semester went well. My second semester saw a marked dip | |
in my grades, though. I was getting involved in stuff that was | |
taking my focus away from class, and part way through that year | |
I developed an extreme clinical depression and insomnia. Entering | |
my sophomore years I find it difficult to relate details because | |
I have some intense memory loss due to the insomnia. I basically | |
accomplished nothing is school, failed everything, and was on the | |
edge of academic probation when I somehow signed up to enlist in | |
the US Navy. That gave me an excuse for a leave-of-asence from | |
school (delaying repaying those loans!) and in a matter of weeks | |
I was gone. | |
All in all my computer science education is the equivalent of two | |
pretty solid semesters of foundations. | |
In the Navy I was a nuclear electronics technician, so I picked up | |
more skills in hardware which was really cool, but didn't do much | |
to further my computer expertise. | |
Finally, after the Navy, I ended up returning to school and | |
beginning anew at Indiana University. I transfered pretty much | |
nothing from my first school as I wasn't going into a CS | |
department. I think 2 of my math classes may have worked and | |
that's it. But, this time around I had a Navy work ethic and also | |
the a limited time payment due to my medical discharge. The Navy | |
had me covered for about 3 years of school, so I went to town. | |
I managed to go from nothing at all to a masters degree in those | |
three years. Fun part about it? It was in this lovely new program | |
that just launched called "New Media". It was, in fact, a visual | |
communications degree + computers. Hah! | |
So, as I'm remember all this stuff I'm also lementing how I can | |
whiz through and code really well and professionally at a senior | |
level in a few niche areas, but if you need skills that get past, | |
say, data structures and algorithms level, I never learned it. | |
Systems programming? No idea. Operating systems? Nope. Parallel | |
computing? Huh? | |
I'll sum it up this way: I never got to learn how to link to | |
a system library. Not sure what to do to make that happen. | |
I can muddle around in about 15 languages, but without that | |
conceptual level to fall back on there's not a lot I can actually | |
DO outside of the web. | |
So yeah, I need more education. And here are all these free | |
courses. My formal education was a quarter century ago, so I'm not | |
going to rely on memory. I've decided to start from the beginning. | |
The following is a list of courses with video lections I found | |
which roughly run in linear order. I may end up shuffling one or | |
two things later on, but for now I'm just watching lectures one by | |
one and soaking it in. I'm pretty sure I won't need any note | |
taking for the first couple of courses, but we'll see. | |
Stanford CS106A - Programming Methodology | |
Stanford CS106B - Programming Abstractions | |
Stanford CS107 - Programming Paradigms | |
Stanford CS110 - Principals of Computer Systems | |
MIT - Mathematics for Computer Science | |
Wheaton - Discrete Mathematics and Functional Programming | |
Stanford CS161 - Design and Analysis of Algorithms 1 | |
Stanford CS161 - Design and Analysis of Algorithms 2 | |
Stanford CS261 - A second Course in Algorithms | |
Stanford EE261 - The Fourier Transform and its Applications | |
CMU 18-447 - Introduction to Computer Architecture | |
CMU 15-418 - Parallel Computer Architecture and Programming | |
CMU 15-721 - Database Systems | |
CSE 421/521 - Introduction to Operating Systems | |
Berkeley - SICP Python | |
MIT - SICP Scheme | |
The last two entrants are both courses based around SICP. There's | |
the famous Scheme original from MIT, but also one in Python which | |
I grok better. In April I'm picking up the Javascript SICP book | |
too. Between two courses and a book in three different languages | |
I hope I'll be able to muddle my way through. | |
I hope I finish it all. I think it's doable. I'll keep pressing | |
forward as best I can. If you read this and think about it at some | |
point in the future, feel free to ping me on IRC or Mastodon | |
sometime and ask how I'm doing. Who knows, I may be stalled and | |
need a little nudge back on track. |