Ivy League Computer Science Curricula Exposed 312
Doug Treadwell writes "Many people have wondered what the difference is between the Computer Science education given in the average public university versus one given in an Ivy League university (or a top level public university). There have also been discussions here on Slashdot about whether any Computer Science curriculum gives students the knowledge they need for the working world. As a computer science student both questions are very important to me, so I decided to answer them for myself and build a website to share what I found. I was able to find the required reading for hundreds of courses at Stanford, Princeton, Carnegie Mellon, and Berkeley; along with some other institutions. This should also help answer some of those 'What should I read?' questions."
Worthless (Score:5, Informative)
The website provided is worthless with regards to its content and appears to be little better than poorly wrought blogspam.
The REAL Ivy League... (Score:5, Informative)
You appear to equate "Ivy League" with "top level" (Score:5, Informative)
Hint: MIT, Stanford, and Caltech are not "Ivy League".
Here's the deal. (Score:5, Informative)
Okay -- here's the deal with Computer Science, coming from someone who is a Computer Scientist (in training if not always in profession, although at the moment I can speak as someone who teaches upper-year undergraduate courses at a moderately sized University).
I'm sure everyone has heard the mantra that University isn't intended to prepare you for the working world. To a certain extent this is true, however in order to build partnerships and gain additional sources of funding in Computer Science, this view is generally skewed in practise, with the end result that Computer Science doesn't always appear to be a scientific field of endeavour.
So here's the issue: if what you're looking to do is get a good paying high-tech programming job, should you study Computer Science?
In my opinion, no.
Thirty-plus years ago, Computer Science was generally taught as a science. It was generally about algorithms and theory, and in many cases how they can be applied to science. Courses on things like computer simulation certainly weren't unheard of.
Along the way, as corporations picked up the pace at which they adopted computers as general-purpose and problem-solving tools, and as the software industry exploded, Universities in general started getting the message that their graduates weren't well suited to software development tasks, and as such they started requiring more courses on software development methods, and "how to program" and "how to create software" -- which by-and-large, isn't really about science or the scientific method, but a problem of engineering.
Fortunately, as the field continues to mature, some Universities are starting to "see the light", and are offering programs in Software Engineering. Based on my educational and industry experience, software engineers are exactly what most corporations are looking for when it comes to low and intermediate level software developers, and the good programmes emphasize the design of software, while only giving what background is needed into the science behind it all.
This is how things should be. We don't send physicists out to build bridges, but instead use physicists to come up with the core science, and than have engineers apply it to build the bridge. Software should be no different. At the risk of being labelled a heretic, we need a lot less Computer Scientists, and a lot more Software Engineers.
Note that this isn't to say that Computer Scientists don't have a role to play; theoretical Computer Scientists still have a significant role to play in determining what is possible, and in the creation of new algorithms to solve problems in the field, and practical Computer Scientists (of which I count myself a member) are needed to design solutions to complex real-world problems, the designs of which can be passed down to software engineers for actual implementation. Plus, both types of Computer Scientist are needed to train future generations in the field, both at the University level, and as general mentors.
Unfortunately, education hasn't quite caught up with this ideal yet, but it appears to be getting there. Larger schools are starting to provide both types of program, reducing the software development courses in their core Computer Science departments and moving them to Software Engineering departments (with the courses cross-listed between departments, or at the very least allowing students in the one to take courses in the other to supplement their degrees). Smaller schools, however, continue to muddle the two topics into a single programme, which causes the type of confusion often seen here when discussion "Computer Science vs. The Working World".
So there you have it. All the other sciences have a differentiation between the "science" and the "engineering" aspects, and Computer Science is no different. Eventually I predict this separation of concerns will be the norm, and we'll be all the better for it.
The conclusion here is, if you just want to get out int
RTFA, it's an ad (Score:5, Informative)
The linked site doesn't have any actual comparisons of the programs, just a list of textbooks with Amazon affiliate links. It's a scam -- this story should be deleted ASAP.
Underpants gnomes (Score:5, Informative)
Re:slashdoted (Score:3, Informative)
(Yes, the summary gets it right, but not the "sight" itself)
MIT curriculum already online (Score:5, Informative)
The OP forgot that the MIT curriculum -- the lectures themselves -- are already largely available. The course materials for nearly two thousand courses at MIT are available here:
http://ocw.mit.edu/OcwWeb/web/home/home/index.htm [mit.edu]
So are all of the lectures from an experiment in Computer Science education that predates MIT's open courseware, http://aduni.org/ [aduni.org] .
Re:Interesting project but...do students use books (Score:5, Informative)
Really good point. Sometimes professors just assign any book and teach out of lecture notes anyway.
Re:The REAL Ivy League... (Score:3, Informative)
Speaking only to the Ivy schools listed, Brown is known for having a consistently outstanding CS program. Their undergraduate CS education in particular is reknowned. They were one of the pioneers in creating a first year program that taught using OO design from the ground up, and were great at engaging the students with interesting problems. I haven't tracked the evolution of their undergrad CS program for years, but I gather via the grapevine that it's still quite strong.
[Ob. Disclaimer: I have no personal association with Brown. I studied their CS education model back in the day, when I was in academia.]
Re:The REAL Ivy League... (Score:1, Informative)
You realize that both Yale and Harvard are, for all intents and purposes, free to anyone whose family makes less than $60k? And heavily subsidized up to three times that amount? Absolutely everyone who makes it in to those schools can afford to go... Yale Daily News [yaledailynews.com] Harvard University Gazette [harvard.edu]
Books are the smallest part of the equation (Score:1, Informative)
I've TA'ed in various schools - and the most important thing that differentiates students in a top CS program is how hard they're willing to work. Professors (regardless of how good they are) will teach classes at much faster speeds and cover far more material because they know the students will put in the hours necessary out of class to understand everything that's been glossed over. Similarly, the homework assignments are harder. Downside, of course, is that if you can't keep up, you're screwed.
Also looking at it from the Ivy League perspective is silly. The top programs are MIT, Berkeley, Stanford, CMU, Michigan, Wisc-Madison, UT Austin - none of which are Ivy League schools. And in an undergrad. program all the books are the same anyway - they're all standard texts.
One more thing - please don't choose Software Engineering over Computer Science if you want to stay in the profession. You'll be drastically limiting your career options if you do. Software Engineering degrees just might make you more attractive to an employer when you're coming out of school - but in the long run, it will really limit the interesting engineering jobs you can do. Of course, if you don't want to stay in engineering, then you should be looking at other things when you choose.
Re:Interesting project but...do students use books (Score:3, Informative)
At my school, for my EE, science and math courses, the books are there solely for the mandatory (graded) homework exercises. The Profs would always cover all the material in lecture, so reading the book was not necessary.
The book was useful in the event that you missed a lecture, or forgot something, and perhaps for review, but nobody actually expected you to read through the chapters. If you did, the lectures would be pointless, except for hints about what will be on the exams, and any in-class quiz's or exams.
Thus I have had several courses taught using what even the professors were forced to agree was likely the wost text in the market for the given subject. But the Profs did not care, as the books were really only about the exercises.
Big difference... (Score:3, Informative)
I did a computer science BSE at Princeton, and now I'm a PhD student a U of Colorado, Boulder. Forget assigned reading--Princeton and MIT, at least, have their intro CS problem sets online (anyone interested can track them down pretty easily). As for CU, I'm not going to make it too easy either (don't want our little server to get /.ed) but try searching for FractalGrading and going from there.
My experience at CU (as a TA 3 years ago; things may have changed) is that the emphasis here is on exposing students to C++ syntax, and then seeing an example of how to use it. Students end up lost, unable to think. When they're asked to turn a thought into an algorithm, they start by naming some C++ syntax, and, unsurprisingly, that's about as far as they get. At Princeton, we were given a though, shown how to build an algorithm, shown how what we knew already wasn't quite adequate (ie. taught why we might need some concept), shown the concept, taught a small amount of syntax that would let us program the concept, and then given a programming assignment in which we put it all together.
Basically, at Princeton we learned to think like programmers, whereas at CU we expose students to a large set of tools without rhyme or reason. The result is that people who come in to the CU curriculum already knowing how to program do fine, and the rest struggle and become frustrated. Since grading reflects on the teaching as much as on the students, we basically pass everyone, even though by the end of the intro course half the students wouldn't be able to understand the idea of a linked list, let alone implement one.
Of course, there is a vast difference between the intelligence of the average student here and that at Princeton. But I have seen no research comparing the method of teaching here to the method at an "average good school", and my personal experience is that it doesn't work very well.
Re:The REAL Ivy League... (Score:3, Informative)
Sounds like your program might not have gotten the curriculum sorted out yet. Brown and other programs had really clearly thought out the order of introduction for basic OO concepts (which came absolutely first) with control flow and basic algorithms, including making all of these things concrete through hands-on work. These schools were having immense success with their students using this approach.
You're right in that just mashing OO into the curriculum without a real rethink of the whole first year program is problematic at best. This is not what the top CS-edu schools were doing. Sadly, much of the 90's in many CS first-year programs was a nightmare of pseudo-OO concepts without solid pedagogy taught in C++. This, when in years prior CS departments shied away from C in the first year because its warts detracted from the essentials of algorithms and data structures. I spent a lot of time trying to un-break students back then... :-(