My Lousy College Experience With Computer Science
ihany.com
ihany.com
News flash - programming != computer science. It doesn't require a PhD to learn (or teach) Python or AJAX. In fact there's nothing inherently scientific about the day-to-day uses of that language. You want to learn to program? Go to ITT Tech or work on open source. Hell, you could land an interview pretty much anywhere if you spent 12 weeks watching the MIT Intro to Algos lecture and The C Programming Language. WHY DO YOU THINK IT'S AN INTRO COURSE?
If you want to learn how programming languages (syntax, grammar, compiler, interpreter), an operating system, automata, logic/circuits, Turing machines, AI, HCI, graphics, databases, MATH works and the theory and provenance behind all of it...you want a computer science degree.
Sorry your professor isn't teaching you the difficult inner-workings of jQuery.
A class I signed up for three semesters ago was listed as "Theory of Programming Languages". Sounds like a great class, right? The syllabus said it would cover Common Lisp, Prolog and Smalltalk, in addition to us doing a "serious" paper studying another language in-depth, on our own.
However, when it came time to take the class (two semesters ago), it had been renamed to simply "Programming Languages" in preparation for future changes to the curriculum. Instead of going over the neat things about the language (S-expressions in Lisp, how dynamic and flexible Smalltalk is, etc), the professor spent a month per language going over over syntax. The hardest thing we had to do in any language was to flatten a list that had lists within it.
The curriculum changes that were being prepared for? The biggest one that I've heard of involved replacing Smalltalk with PHP. The reasoning for this? "Students complained they didn't get any practical knowledge they could put on their resume out of the class."
But I got a lot of use out of my roommates. High school had been a homogeneous environment, everyone taking the same stuff and enduring the same assignments, preparing for the same standardized tests. But at university I was suddenly thrown in with people with different specializations, different expertise, different interests. I found myself taking meals with electrical engineers, mathematicians, political science observers, religious people, educators, psychologists, physicists, chemists... and I could pick the brains of any of them. I was like a kid in a candy store.
And that's not all: I discovered the pain and pleasure of ethanol. I walked in the moonlight through a cypress forest discussing existentialism with a platonic girlfriend. I acquired some rudimentary burglary skills. I broadened my musical tastes. I learned to eat stuff that wasn't mama food. You can't do any of that these days, sitting in your parents' basement and skulking the intarweb.
The community made university worthwhile, not most of the academic stuff that was routinely delivered as part of a contrived degree requirement. Not to say that some of the classes weren't worthwhile - far from it - but I sure wish I could have selected better. I'd have rather taken more math than some of those general studies requirements.
So, thinking out loud here, is there a place for an academic hostel? A low-rent complex with dormitories and classrooms, paid lecturers but no degrees and no grades, and students stay on the basis of some kind of meritocracy? I'd go back to school, even now, if it weren't for all the BS. I just don't have time for that - and really, who does?
I'd say that cheap living, in exchange for lacking comforts (privacy, being able to cook your own meals, etc) is the sort of thing that only works when you're in your late teens/early 20's. Which is, unsurprisingly enough, when most people who go to college/university are attending.
And to be honest, as someone in his early 20's, it gets pretty tiring after a while. I'm all for low rent and being around great people. But, I'd rather pay a bit more for those comforts and still be around previously mentioned (or other) great people.
Consider a grad program in math or computer science at one of the best research universities:
BS courses? Sometimes there aren't any and, instead, the students are expected to learn the basic material for the qualifying exams on their own.
Interest? Students are expected to have some research project underway in their first year.
Courses? They are mostly introductions to leading edge parts of research by world experts. You may not see just how to use it yet, but it mostly won't be trivial!
Main requirement? An original contribution to knowledge worthy of publication.
Publication? New, correct, and significant.
BS? Do some good RESEARCH, and f'get about nearly everything else; the school will.
Entrance requirement? Show you have the prerequisites, talent, and desire. Another way: Write a paper and publish it in a journal where one of the reviewers, editors, or the editor in chief is a prof at the grad department you want to go to, and when the paper is approved for publication then write a letter to that person saying you want to be a grad student in their department.
Support? The best US research universities typically have more funds for grad student support than they have good grad students.
More? Take three papers (one non-trivial paper) with a staple in the corner called your Ph.D. dissertation, and then your main work is DONE and you can concentrate on more in research, the opposite sex, etc.
The Future? If you REALLY want to see computer science or math move forward, then don't curse the darkness and, instead, light a candle.
Is this more of what you were looking for?
The business will demand these constant features, that are all mostly the same and when you've mastered what the business requires, it will be up to you to continue your education and improve your programming skills. Either by jumping jobs to one that focuses on a different area of programming... from a web stack to an iPhone app, or embedded systems... or you have to learn it on your own because work only need you to know the minimum required to get the product out and the minimum is only challenging and fun for so long. Learning to learn on your own is important, most programmers don't do it, they get to a certain level and do not progress.
I don't mean to sound discouraging, there is a lot of intellectual challenge along the way, and little is as satisfying as sitting down and creating a great product or solving a particularly difficult challenge. I always feel something is missing on days I don't get to program.
You also have to take a serious look at your fellow students and see what they are doing. Ask yourself if you would enjoy teaching them. Are they interesting and engaging? Do they even talk about computer science?
Here's a therapy suggestion. Offer your services to researchers in the sciences and you will find a practical outlet for your frustration. The budget for programming is the first thing to be eliminated from a research project and the postgrads, having taken a single course in C devote a ridiculous amount of time to programming. You, of the other hand can knock out a program using Python and negotiate payment of some sort.
The problem is, your adviser should be encouraging you to do this the moment you step foot on campus. It never hit me until after my junior year when I saw all the freshmen working in labs and such.
Think of it this way: If you want to be a journalist, you don't just take English classes, you work on the school newspaper.
My college experience was nothing like that: in intro CS, we were taught Java concepts as the basics of object-oriented programming, and the second class was the basics of advanced data structures, again using Java. As a result, when I saw Python code, it was trivial for me to read it, and after looking at it for a short time I was comfortable writing it. When I took my current job, I had never written Javascript before; I picked it up in a day. Even Scheme wasn't hard to pick up when I took Declarative.
Oh, and I never had a class in CS with more than 15 people in it. Just saying.
You can learn programming in college, but you should not expect classes on "AJAX, jQuery, iOS apps, APIs". Once you know how to program, you can easily figure out how to do any of those things by reading documentation and tutorials. With my college CS classes, I can read and understand Android's developer guides and PHP's online documentation. That's what's important.
On the other hand, maybe I don't really know what I'm talking about, since I went to one of those "hated on HN" flaky liberal arts colleges.
Recently I decided to do a Do-It-Yourself masters in computer science, using open courseware and social learning. It's an experiment, and I am also hoping to learn a few new things. So far I have had a great time, because I can learn at my own pace, and follow concept leads which I think will be useful.
I am documenting the experiment at - http://opencs.wikidot.com
I am hoping that in the future students will take charge of their learning, rather than the other way around.
This quote sums up the situation for the author.
Why don't you take the interesting classes? You don't have to take just the required classes. Take the classes that interest you.
Computer science is about how to solve problems effectively, not necessarily the hot programming language of the day.
I'd add Edu 2.o (www.edu20.com) and School of Everything (schoolofeverything.com) to the list of web based alternatives.
Also, just because it says 1997 does not mean that the teacher has not edited it without changing the date in the header.