
My Lousy College Experience With Computer Science - kloncks
http://www.ihany.com/2010/08/college/
======
acconrad
I really can't stand it when people complain about computer science education.

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.

~~~
Zev
In my defense, whenever I complain, its about the opposite ;)

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."

------
dandrews
At the end of the article the OP admits: "... you will never be able to
replace the social element of attending a university, arguably the most
important part of it". This is so true; even in the early 70s the system was
broken, and I got only so much out of the university offerings by themselves.

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?

~~~
Zev
_So, thinking out loud here, is there a place for an academic hostel? A low-
rent complex with dormitories..._

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.

------
seasoup
Things continue like this in the workplace too. Whatever the industry is you
get into programming, the challenges are mostly the same. You run into the
same problem time and again, because the problems that industry need solved
are all very similar, and mostly not that complicated. Accept user input,
shuffle the input through whatever language you are programming in,
query/update a database, shuffle the results through whatever language you are
programming in, display the results.

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.

------
bob_calder
When you enter a department, you have to engage the social environment of the
staff. Find the researchers, volunteer to do some tasks for them. Join some
projects. Don't take classes from profs that aren't emotionally engaged with
students. And for goodness sake, get to know them. If this isn't successful,
you need to find a college where you can feel at home. Do you know who is
doing research? Do you know who is getting funding? If you don't, you aren't
doing your job as a student.

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.

~~~
jkmcf
I'll doubly recommend engaging the faculty and staff, regardless of subject.
Especially for technical subjects where most of the learning is done outside
the classroom.

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.

------
mithaler
Generalizing the college experiences of the writer to all college experiences
is not doing anyone any favors.

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.

------
starkfist
My intro to computer science class had 12 people in it, and was structured the
same way as 6.001 at MIT, using SICP, and whatnot. Subsequent courses had
about the same number of people and used the top textbooks at the time. Cormen
for algorithms, stevens for networking, foley and van damme for graphics, the
dragon book for compilers, etc. The small class size put me in close contact
with my professors, who cherry picked me to lead some NSF funded grant
projects in computational geometry and atmospheric science research. They also
let me be the sysadmin for the school's UNIX servers. This combined experience
and education made it trivially easy to have a career working for various
internet startups. Just wanted to point out that there's varying quality of
education, and maybe it just sucks to be you.

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.

------
adaptives
That's unfortunately how much of college education had begun. Unfortunately
(this is a guess), but I think the problem has come into being because of many
universities' desire to scale up. With scaling up the number of students, it
has become impossible to give quality attention to the students and encourage
interaction.

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.

------
tcc619
"I’ve yet to take a mathematical class that discusses algorithms and as far as
I know I will not even be required to take one."

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.

------
cpswan
None of these problems are specific to computer science. Education in general
is trapped in 19th century models. It's just that this is more of a problem in
a discipline like IT where the state of the art changes so fast.

I'd add Edu 2.o (www.edu20.com) and School of Everything
(schoolofeverything.com) to the list of web based alternatives.

------
Lewisham
I think you need to straight up name the university you're at and the subject
that had the 1997 teaching notes. Unless you're doing a theory class, there's
little good reason for them to be so out of date.

~~~
weaksauce
How much has changed since 1997 in computer science fundamentals? Especially
in the first two years curriculum. The first year is general ed with a gentle
introduction to cs(overview of basic computer science constructs and some data
structures implementation and analysis.) The second year is general ed with a
bit more computer science stuff. The third and fourth years are where the more
interesting stuff happens. Even there though the stuff that they are going to
teach you are as fundamental and theoretical as it gets. An algorithms class?
They are going to teach you the asymptotic behavior of the more fundamental
algorithms. You are not going to implement them you are just going to analyze
the running times and storage space behavior.

Also, just because it says 1997 does not mean that the teacher has not edited
it without changing the date in the header.

------
pramit
This is also a useful read, although about the viability of business education
<http://bighow.com/tags/doweneedmabs>

