Ivy League Computer Science Curricula Exposed
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."
Personally I am an Electrical Engineering student at a top-5 public university in the country. Our selection of required course materials in no way reflects the quality/content of our courses, in general.
To become a professional you do a theoretical degree to give you a toolkit and learn how to find stuff out, then you do your professional training. Works for physicians, lawyers, engineers, accountants. You end up with two or more sets of postnominal letters, one of which is vocational. Why not software designers?
From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
slashdoted already
The website provided is worthless with regards to its content and appears to be little better than poorly wrought blogspam.
Please Mac web designers, stop using Helvetica on the web. It looks absolutely dreadful on Windows, hundred times worse than Arial.
"Stanford, Princeton, Carnegie Mellon, and Berkeley"... only Princeton is a member of the Ivy League. Brown, Columbia, Cornell, Dartmouth, Harvard, UPenn, and Yale are the others. I can speak from experience in the Dartmouth CS program, that while you have an excellent networking opportunity and grant money is fairly available as a result of the school's renown, more tech-minded schools have superior programs for instruction in CS. Maybe the other Ivys are different though...
This is ridiculously spammy, and I don't know how this got to the front page. This dude just went to the online course catalogs for these universities and copied the course descriptions and text books, and then put them up with amazon referral links. There is no insight, no comparison between universities, no analysis of difficulty level, no breakdown between theory and software development, and no firsthand accounts. Just lists of textbooks.
This site is nothing more than a list of recommended list of books with a pointer to them on amazon using his affiliate link!
I can't believe slashdot posted this. I like robots,
Two classes using the same book, similar assignments, and similar equipment can vary widely because of things like the professor's attitude, the lab- and teaching-assistants' attitudes, the overall attitude of the college or university to allowing and encouraging thinking beyond what is in the syllabus, and a host of other factors that are very hard to capture without actually being there.
Almost every university has at least one professor students are dying to take even if it means they will get a lower grade, they will have to work harder or longer, or they will have to wait to take his class. Everything else being equal, the more professors a university has like this, the better.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
is not the education itself, but the doors it opens (because people see the name brand), and the connections you make (by knowing lots of other people who have open doors).
That's not to say that you can't get these things in other ways. But it is easier to get it in that manner.
My education at state college didn't open many doors, but I don't think that on average, the ivy league graduate has that many legs up on me.
Hint: MIT, Stanford, and Caltech are not "Ivy League".
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
I've met several CS grads and grad students from the Ivy League, and have to say I'm not impressed. For all the hooplah around the Ivy League, there isn't a bit a difference between them and any other CS department.
The Ivy League is just a brand, and a brand that is much more valuable in the liberal arts, not the sciences.
Same thing pretty much is tru
One of the major points that differentiate a good school from an average is the quality of teachers teaching the subjects and performing research.
Even if exact same books and syllabus is used, students will learn material differently from different teachers.
I went from my undergrad CS degree straight into a Ph.D, and then on to research.
Friends who took exactly the same choices as I went into telecoms, web design, databases and airlines (piloting, beats me what the connect was, but he did it).
Bottom line is, in my opinion, its more about how well you study, and how much time you spend just exploring each of the subjects covered in your own time.
A wide ranging understanding of the topics in computer science is important. You can then pick a decent final year dissertation to put the required polish on your academic record.
This can be achieved at any university, not just an Ivy League one. If you're geared to succeed, all you need is a decent library and a course that covers things your interested in.
Used to be they beat up the freshmen with assembler, C, and vi, and they liked it. Not sure if they pussified the curriculum since then...
Tsunami -- You can't bring a good wave down!
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
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.
Visit the
1) Make simple web page linking (with your Amazon affiliate account) to CS books used by several big name schools. 2) Post story on /. making your web page sound interesting or useful even if it isn't.
3) Profit!
It appears that the author of the website gathered a >very minimal set of data on a few different programs for around a dozen different schools. And as has already been pointed out, it is mostly just which courses use which books.
I hope the author didn't use too much time that could have otherwise been spent learning actual science (including computer science) on that exercise.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
I guess even with the preview button that we have to click before submitting a comment, we still don't catch all of our own typos.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
Agreed. I did not read a *single* book for a EECS course. In fact, I cannot think of a single CS course that even mandated any reading. I will admit though that one of the more interesting classes I took provided two or three research papers every week. Not mandatory, but they were interesting enough to warrant reading. Stuff like the Niagra papers, Supralinear Speedups using Intel Quadcores, and the Cosmic cube.
Tuition for sure :)
-- make sure to get a cut of his Amazon revenues.
Big-Name universities have nearly a single goal in mind: Published Papers. This is what fuels their reputation. This tilts their approach toward high-risk-high-reward research. However, 99% of all graduates will need real-world skills for the here-and-now at non-R&D places, and this may be where State-U excels, or at least even.
Most State-U's generally have given up on the "research run", freeing them to focus on marketable skills. Big-name U's still struggle with this balance.
Table-ized A.I.
We need a new metric: CMH: degree "costs more than a house".
Table-ized A.I.
The site was slashdotted, but I'll summarize what I got from the clickthru.
I would've thought that the top schools in the country would've given their undergrads a heavy dose of reading published by their own professors: Knuth, Hennesey and Pattersen, Horowitz and Hill, Abelson and Sussman. Instead, it's all "Ajax for Dummies", "Learn JavaScript in 21 Days", "Master PhotoShop Step by Step", stuff like that.
What's the real difference between an Ivy League degree and a state school degree? A shitload of money and some elitism. If you're looking for a practical difference, you should spend your time looking for something more probable, like a bigfoot.
I would say that the quality of the students is more important than the quality of the teachers. One of my profs once quipped:
"Most students get the most out of this course from the lab exercises. Actually, they get the most out of their lab partners."
The best researchers are not always the best teachers.
Attending a highly selective university means that you are surrounded by other students who are a lot smarter than you are :-).
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
or AFB-MBTDPA
Awful Football, Marching Band Too Drunk to Perform Adequately
and I go to a public college in New York. Lots of the ones I have aren't very good, and one of my best books is a "Data Structures in C++" book that's not on the list at one (or more, 'could only get to a few pages) of these schools. Book lists don't tell a thing, 'cept maybe what's the flavor of the semester for a certain professor (as he's the one who determines which book to use.)
I'm much more interested in how the entire curricula is structured, 'cause that's what's really important. What are freshman courses, sophmore courses, etc.? And by the way, that info is actually probably public and really easy to find. When I was looking at schools, a lot of 'em published their curriculum on their prospective students page (we even do it in a nice grid format). My school puts it in our bulletin, which is also public, as are many other schools.
open source modern art: laser taggi
I can assure you that there are circumstances when we tender for jobs when the client wants to see the CVs and the qualifications of the key project personnel, and the letters BCS and IAP count for a lot more than the odd Java or Oracle certification. But then we design systems, and code and databases are only a small part of the whole.
I don't know the answer to your question but I suspect the answer is yes. The core issue is that our Government systems frequently fail owing to poor specification by unqualified civil servants, but investigators (including MPs like Geoffrey Bacon) run into the Civil Service Mafia and make litle progress. Eventually I suspect some politicians will realise that the potential benefits of getting it right are better than the kickbacks from sucking EDS's or Cap Gemini's bottoms. But, alas, it will be long after I retire.
From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
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
So are all of the lectures from an experiment in Computer Science education that predates MIT's open courseware, http://aduni.org/ .
Put my fist through my alarm clock with its ding-dong death inside my ear. - The Blackjacks.
Any time any web site claims to save you money using the word "free" in all caps, run!
What do you mean they cut the power? How can they cut the power, man? They're animals!
Really good point. Sometimes professors just assign any book and teach out of lecture notes anyway.
Beetle B.
Already been posted, but what a load of commercial, not very useful crap.
Editors, why not create a new "Commercial" category for this kind of stuff? It's not the first time we've seen commercialism slip through. Or why not let us readers vote on stories even once posted? "Duplicate", "Useful", "Commercialism", etc.
Timothy is the new KDawson!
Keep this in mind and all will become clear.
If all you want is a job, then CS isn't for you. If what you want is to study and understand *computation*, then CS is for you.
Unfortunately, a lot of schools muddy the waters by wrapping up a technical training program and call it CS. It isn't.
-- Cerebus
This debate is not new; my father participated in it in the mid 1960's. As the retired Executive VP of World Wide Operations for a Fortune 10 company he and I talk about it often (I am a senior manager for a consulting firm). People with degrees focused on the theortical end of the spectrum do great in big thinking, research roles but often struggle in delivery roles. People with degrees focused on application tend to do well at task management and delivery but struggle to see the bigger picture and how seemingly unrelated things are involved. In both types of schools what is taught is a microcosm of what people need to be successful. For CS in particular things such as project management, estimation, architecture and design, financials, people leadership, requirements determination, and diversity training should be woven into the class work but rarely are. My degree, as my father's, is in Computer Engineering. We both went to a top 5 engineering school however I converted from EE and in doing so moved to a smaller, application focused school so I've seen both ends. It is the combination of the two backgrounds and viewpoints that has put me in a leadership role over both. There is no right or wrong answer. The proof of success is who focuses on filling in the gap so they cover the entire spectrum. I have learned to seek out both types for my programs.
...it's the instruction. The book lists say nothing of the focuses the classes take or the background the classes give.
As an educator and an undergraduate student at UC Berkeley, many classes make ill use of the books. In fact, in CS164 last semester, NO textbook was used -- at all! In fact, for all of the CS classes I've taken so far, I have not needed to read the associated book at all.
The strong point of these institutions (or, at least, Berkeley) is the legacy of good materials and resources that instructors leave behind, and the active monetary and personal investment of all the faculty in improving things for the next generation of students.
Books are the LEAST influential element in making a good CS program. This site might be totally serious in comparing the curriculum, but it completely misses the point.
so would your typical high school drop out.
"There have also been discussions here on Slashdot about whether any Computer Science curriculum gives students the knowledge they need for the working world."
Should it? I'd feel shortchanged if my university gave me some vocational training rather than bringing me up to speed in the academic discipline of "Computer Science". If I want some vocational training I can go to the local college and take the "Be a programmer in 6 months!" program
Math != accounting, Biology != how to run a PCR machine, CS != how to program.
The best text book I had to read in college was, "503 Service Temporarily Unavailable." I don't remember what that one was about though...
// file: mice.h
#include "frickin_lasers.h"
First of all, I hate that the CS classes are all now about writing business software. IMO, CS should be about chip design, power controls, logic and how to build the proverbial better mousetrap.
That said, I tend to hire CS grads because I manage software geeks and that is the degree with which most graduate. The problem I see all around - whether from Stanford, UCLA or CSU Fullerton - is a lack of cohesive project experience. I would really like to see a multi-semester/quarter project from these folks that shows the entire software lifecycle from beginning to completion then through iterative changes.
I find my senior staff spend much of their time introducing the newbies to these concepts, while 80% of what was learned goes out the window.
I've been fortunate enough to work on most of the big problems in computer science at one time or another. CPU scheduling. Network congestion. Compiler optimization. Proof of correctness. Secure operating systems. Image processing. Mobile robotics. Game physics. I've done very well financially. I have an advanced degree from one of the big-name schools. So I can't complain personally. Going into computer science worked out very well for me.
But I'm from the previous generation of programmers. Programming today is mostly about dealing with yet another API with another thousand or so interfaces, some of which work. By the time you're dealing with the fifteenth system for putting widgets on a screen and processing incoming events, you get fed up. Especially since you can see all the ways in which the new ones got something wrong that was a solved problem a decade or two ago.
Most of the basic algorithmic problems have been solved. Not only have they been solved, the solutions have been packaged up so that you don't have to look at them. How often do you really need to open Knuth any more?
Computing is the "stationary engineering" of today. About a century ago, stationary engineering, the work of, literally, keeping the wheels of industry turning, reached this point. In 1870 or so, stationary engineering was a growth job that needed smart people who understood the details of engines, generators, and steam. The basics of the field were still being figured out. Counterflow boilers and carbon commutator brushes were hot R&D topics. Just getting the machinery to work at all was tough, and there were serious reliability problems. By 1910 or so, most of the hard problems had been solved; big steam turbines and generators were working reliably, and plant operation didn't require much innovative thinking. Today, stationary engineering is a union job that few people even realize exists.
Computing is now about where stationary engineering was in 1910. Everything pretty much works, and most of what's going on is not that innovative. We're now dealing with scaling issues, which is where electric power was in 1910.
There's interesting stuff going on in robotics, parts of AI, statistical methods, and the handling of very large databases. We need small numbers of smart people to push that forward. There are areas of software engineering that need real engineering talent, like video compression and graphics, although such narrow, well-bounded problems tend to move into hardware. But we no longer need computer scientists just to run a data center or to set up business applications and web sites. Just careful, well-trained technicians.
That's what employers want, and that's what most of the students want. Most of the schools are willing to accommodate them.
I have to disagree. What books the faculty recommends does reflect upon them. I'll expand on this more later when I'm not trying to keep my site from crashing.
Can someone please create a new site like Slashdot, except with actual editors?
I remember when I was in EE (late 80s). Every year we had a programming contest between EE and CS and every year EE won.
I'm not sure why, but I suppose while the CS guys were thinking about the most elegant design pattern to solve the problem, the EE guys were already halfway through the actual solution.
In actual work over two decades, I found that it doesn't matter where the guy/girl came from as far as programming prowess was concerned.
Just my two bits as far as daily mundane computer programming is concerned.
I did undergraduate at Carnegie Mellon and spent other time + graduate school at other institutions. It isn't the curriculum that stands out at CMU when I compare experiences, it was the quality of the professors when it came to teaching. In general CMU courses were far better organized and centered around having a much deeper and broader understanding of the material. Usually when I see the same material I had in undergrad presented elsewhere, I am floored by how poorly it is explained, and the total lack of context for how something works or how to use it. Although roughly speaking it appears that the same subjects/areas are covered, so you certainly can do just as well if you put more personal work into it.
In the summer before I went up to Cambridge University to read CS, I went to my local university's library to work through the "required reading". I didn't learn much, but I did the exercises as suggested. When I arrived I discovered that no-one was at all interested in whether I'd done the reading or in marking the exercises I'd done.
That's not to say that I never used books. I still have the one book I bought which was actually useful: Concrete Mathematics by Graham, Knuth and Patashnik, which inspired my dissertation project.
Yah, we could call the category, "boingboing". :)
I was going to the University of Colorado for computer science before switching to econ (get your jokes in now - at least it wasn't history) and I had Prof. Main who has his own text book; which he did the coding in, another Prof. did the text. CU also did a lot of work on the library for different languages and other schools (who also do the same thing) and informed companies know this, but that doesn't matter, what matters is that you understand computing and can easily learn a new language. Different schools have their advantages in being recognized and can give you a step up in getting in the door to an interview, but now with the internet any school can be researched or looked into instantly, gone are the days when only schools in the Princeton Review are important or schools on television for sports are the ones we know.
Unfortunately, their web server was unprepared for the onslaught of nerds and is currently suffering from unresolved emotional issues.
If the reading material reflects the quality of your program then you're at a correspondence university.
GOOD programs, whether they're acknowledged top universities or the hidden gems at local colleges, are more than the sum of their book lists.
"If you decide to go the Computer Science route, get into it for the love of science, and for no other reason." - by Yaztromo (655250) on Sunday July 27, @02:54PM (#24360081) Homepage
Yaz? I hear where you are coming from - separating the 'engine/algorithm builders', from the guys that apply them, basically (IF I understood you correctly), & yes, it makes some sense... however, don't you feel that KNOWING the algorithms, such as are taught in coursework like datastructures, helps IMMENSELY, for building "patterns of thought/a mindset", more-or-less (for lack of a better expression)?
See, I've been @ this field, as a pro now, for 16++ years, in the field (ranging from fieldtech (in school for work), to network tech-> network engineer -> network admin -> programmer/analyst -> & lastly now "software engineer" (as my title, lol, etc.)) - & what have I found?
Well - there are times when the "std. approaches" & tools (such as prebuilt .vcl (Delphi), or ActiveX controls (.ocx), or OLEServers libs (.dlls) etc., don't always "cut the mustard" alone... & there are times you NEED to design the engines, yourself, & especially for better efficiency (@ some point, provided time is allotted for this after delivery deadline, IF it is required that is))
I asked a question here, the other day (fairly simple one imo, not always needed because many controls OR objects (via their properties &/or methods) provide it) here, & that was:
"Can you find me the midpoint of an array, without knowing the total # of elements"
(Via the 2 pointer method, 1 pointer moving @ twice the speed of the other, when the larger/faster can no longer 'advance' w/ out abend-err, you poll for that err, & assign the smaller pointer the midpoint of array value (useful for sorts for example, many benefit here on speed, PLUS, for binary searches etc. et al (probably more, just some cursory examples)).
Nobody here could, not a single person... was it/is it necessary? Not really - declaring an array usually has you sizing it (dynamic too) initially, & many controls have sortation built-in from the get-go too - but, as I stated there?? My point was "CAN YOU THINK OF HOW TO DO THIS, YOURSELVES?" - in other words, could you figure out HOW to do that yourself, w/out prebuilt methods in controls & compilers objects + commands.
A lot of folks here got 'bent @ me', some even made a good point of "but most of my controls &/or objects have sorts built in & array lengths" etc. which is true, but, the point was "CAN YOU THINK" on my end...
Nobody here @ this site, could! I did this, because a Computer Engineering student felt his (verbatim) -> 'degree wasn't worth the paper it was printed on' & I felt that I had to show him SOME example, with folks here as my sampleset, of where this degree & its training would separate he (the wheat) from the chaff (not saying networkers are that, they're the storm troopers by all means, & DO know things (I speak from professional experience in BOTH arenas, programming & networking, + many years of both as a pro)... but, they are NOT in the same league, as far as actual UNDERSTANDING of this field, & how it works @ the "nuts & bolts" level.
Imo, even for they? It's needed - sometimes, tools they use (which we coders create for they)? ARE NOT ENOUGH - & this is where actual understanding helps, on how this all works, for fixing their hassles, OR, @ least identifying WHAT/WHEN/WHERE/WHY/HOW their problems is originating @ least, for starters (gotta have that, cuz imo, without that? You're LOST!).
(Well, @ least of the sampleset of the respondents I had... I say that, because I am SURE there are guys here who CAN & FAR MORE on this website (e.g.-> Members such as John Carmack, because of his clearly & CLEANLY demonstrated "carmack's reverse" (thinking 'outside the box', seems to be this guys' specialty, & it SHOWS) in his gami
What you should be looking at is which school are you more likely to make th best contacts at for what you want to do.
"You don't go to Harvard to study. You go to Harvard to make contacts."
The Kruger Dunning explains most post on
Ones interested in engineering and or computer science mostly want to go to Berkeley. They could care less about Harvard, Yale, Princeton, etc. I have never asked any of them to give me a prioritized list, but they seem to like the West Coast. And I know why.
My brother was back in Cambridge, MA 4 years ago shuttling around my nephew who was interviewing at Universities. He says the town is like an upscale slum. I can kind of picture it, but can't really describe the scenes he was referring to.
all a college does is sell Admit ticket.
1. yes, can come to class.
2. no, cannot come to class.
Digital lectures can reach billions of people, worldwide, around the clock.
Digital books, e-books can be seen by billions of people.
Digital age, digital colleges are here.
colleges will be obsolete in 10 years.
I spent 2 years at the Univesity of Washington and then 2 years at Western Washington University, the biggest differences were the individual professor differences regardless of which school. At both schools I had professors that were completely incompetent (seriously), and at both schools there were some professors that were great. The range of good to bad was far broader than I expected.
Funny that only one of the examples he cited was Ivy League (Princeton) :P
ACM curricula guidelines
Scandalous!
I would rant about how stupid the original post is, but I see that's already been covered...
I was going to say something to this effect also. I graduated from CMU and I have helped students at other universities (interns and the like.)
Top universities generally sort of create the curriculum. Other universities copy it, that's the difference. I'm not saying you can't get a top notch education at non-top school but the reading list will be similar because they are trying to copy and keep parity with the top programs. It's simple economics, the top schools have the top budgets and people and can afford to spend time inventing stuff, do you want your state school's shoe string budget (thanks NCAA football) being spent trying to come up with a new and competitive curriculum to unseat MIT as the top program (which probably won't happen) or should they copy the one from MIT and make a few adaptations? It's the non-reading part that is really hard to capture. The projects, the interactions with the profs and other students, some of the competitiveness of being ordinary when you're used to leading the class, all those other things that really add up to very different experiences.
Something else, at CMU in a project class, most people will finish the project, to really get an A on one you really have to do a great one and go beyond; it takes a lot more than satisfying the requirements to get a really good grade. I think other schools there might be a little more grade inflation or the benchmark to an A is a little bit lower. More than the reading list, they set a higher bar.
I think one big reason universities concentrate on Computer Science is because that's what school is good for - theory. To make a very broad generalization: whatever you learn in academia, it will probably not be directly applicable in the real world. That's the nature of the beast.
I can't speak for its success yet, but I feel good about what I'm doing right now. Go to school mostly for math and science, and pick up a lot of the engineering concepts from job experience.
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.
In fact, I'm surprised academics have not moved (even tentatively) to what I call the "wiki-pedia, professional / expert model" of education. It's an idea I've had brewing in my mind for some time now, where industry, academia, and professionals in the field have a wiki-like forum.
This is impossible, at least to do the way you are thinking.
For any given page on the wikipedia you would form, there would be as many "correct" answers as people reading. The industry is still in way too much churn with no real solid solutions to almost anything, or at least nothing provable.
That's because software is the intersection of science and art. Procedures that work well for one group will fail with another. Programming languages can each do different things well, but again a project in any language actually working is totally dependent on the team or programmer working on it.
Basically what you would end up with is the equivalent of a whole bunch of blogs and small informational pages - which is what the web offers today.
Rather than a collaborative Wikipedia, a true scholar of computer science wishing to tie back into industry should be mining the web to understand what people are really doing.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Giving credit to the university for the student is like giving credit to the odometer for the car.
Whether the quality of education is different is irrelevant. That the middle manager looking at the resumes has to justify his choice to his boss isn't.
We need a new metric: CMH: degree "costs more than a house".
The way house prices seem to be going in the US, this metric won't rule out many universities!
Great Windows SFTP Server!
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.
Stylish sheet to fix many problems in Slashdot's D3: https://gist.github.com/801524
I don't really think there's much quality difference, at least in undergrad. I go to University of Pittsburgh, and the only real difference I see in my friends up the street at CMU is that they have better facilities, a larger library, etc. If anything, a lot of my friends got stuck with crappy professors who cared about nothing but research and just droned from a book for 45 minutes twice a week in larger average class sizes.
Oh, and they pay more too.
If it's not open source, it's not computer science.
There are countless web sites out there with valuable information related to CS, and simple searches for common things usually net you a hit or two on google that come straight out of a lecture or textbook - to put it bluntly, if your in-class materials can't stand up to the kind of community vetting that those sites do, it's not worth teaching.
At TWU, our CS teachers took nearly everything related to our programming from the net and told us it was better to be as open about your work as possible so that you could get help when you needed it and not just when you wanted it.
It was the first time I could really say that my teachers deserved praise for their work in CS, and it was a welcome change from teachers that were either not experienced whatsoever, or completely soup-nazi about stringent (and ridiculous) programming practices, like putting constants in a seperate text file and never using a single numerical in any program.
I'm now sitting pretty with a very nice programming job, and I can guarantee you their teachings helped me the most out of any of the Universities I attended.
If you can read this, I forgot to post anonymously.
I already know I am going to be raked over the coals here so I am providing the warnings upfront: the link bellow (1) goes to my own site (2) contains a list of books with links to Amazon and (3) is a work in progress and has jacked-up CSS.
If you're offended by any of the above, don't click. But just in case anyone's interested, here's a link to MY PERSONAL take on books that have helped me become a better (I would even dare say, good) programmer. Since I work in the financial industry, the are links to some good financial books as well.
http://ed.markovich.googlepages.com/important_books_for_programmers.html
-Ed
http://ed.markovich.googlepages.com
Exactly. I went to one of the listed schools and in most of my CS classes the books were gravy or just for more in-depth reading (or to fill in gaps). Most of the material came from class notes which were in many cases posted online. Even beyond that what the professor said and the assignments given was where most of the information came from. It is in fact quite possible to use the same book and teach classes at two vastly different levels (some books even have extra sections for that reason).
I can't tell you how the computer science programs compare because I've only gone through one of them and that's from Yale. Having worked in the industry for a few years now, I would say that I'm glad I went to Yale and majored in CS. I don't pretend that Yale is somehow better than all the other schools out there, especially compared to the more technically oriented schools. A professor of mine even admitted this to me, "We're no MIT" but then he followed up with, "If you want to do something substantial you must pioneer a new field." So there you have it. Yale is no technical powerhouse but it does do things that are kind of new and out there.
With the overviews out of the way, here's what I really love about the Yale CS program:
1. Very academic and theory based. There is no classes for a specific language. You learned a language as part of some other course. If the professor happened to pick C, then you learned C on the side by reading K & R. The professor will tell you which chapters you will need to read but that's it. The class is about systems so you learned that.
2. Small class sizes and informal interaction with professors. It was generally encouraged to call your professors by their first name and really get to know them. You also learned a lot outside of classes and from discussions. A professor invited me to attend some discussion groups that some professor and graduate students were having because he thought I might be interested. From my experience, I wasn't just a student or a bucket but considered an active contributor.
3. Probably the most valuable lesson I learned was having the attitude to not be frightened by problems or new concepts. They like to demystify things and show you how simple everything is underneath. Wonder how something works or should work? Go read the RFCs. I think that's where point #1 really came in handy. Once you have a solid foundation in theory, it became easier to understand how the more complex systems and concepts work.
Obviously this came with some disadvantages. One Microsoft recruiter complained to my professor that Yale students seem to lack practical experience and I have to agree. Coming out of college, I probably knew less about existing APIs than others but that didn't take long to rectify. I think Yale knows this which is why they're more concerned with a solid foundation in theory than any specific APIs. Furthermore, this can be remedied with the right internships during the summer.
I'll leave you to be the judge of how the programs compare.
EvilCON - Made Famous by
For Software Engineers, absolutely, which is why they're generally required to take a certain amount of Computer Science courses. You need to know a certain subset of the theory in order to put it into practise. Being a newer degree-granted area of study, Software Engineering tends to have a better overall focus and design to it, graduating people who, by-and-large, do indeed know how to engineer a piece of software.
Where I think things aren't quite right is in the Computer Science world. Truthfully, not all Computer Scientists need to know things like Software Evolution, or Software Architecture, or tools like UML or Source Code Management systems. They frequently don't need to know how to plan a large, corporate-style software project. That's not to say that these things are inherently bad, or simply not worth knowing, but for the most part they really aren't particularly scientific. Indeed, I'd argue that in many circumstances, having a the kind of rough passing knowledge most Computer Science students are taught in these topics, and then assuming you know these issues well because you have a degree, is frequently detrimental to the process of creating software. How many of us know someone with a valid degree who felt they were an expert in software development, but who misused/abused the basic tools, to the detriment of everyone else? Software Engineers get design and management tools drilled into them over and over and over, and by the time they're finished University, they know how to apply them to projects, and how to drive projects to completion. They may not know all of the fancy algorithms and esoteric theoretical areas that a good Computer Scientist is familiar with, but this is why we (should) have two specialities. They still both go hand-in-hand, particularly for complex projects, and there isn't any real reason to necessitate that any one person is an expert in both roles, because in the end you often wind up with one person who is only moderate in both roles. And that is where the danger lies.
Yaz.
Isn't the OP making the assumption that you can learn everything you need from the reading? If that's the case why bother going to college at all? If you can judge a CS program by its reading list, then there's no value added by the program itself. Professors and your fellow students contribute quite a bit to your education.
For some people, formal education isn't necessary. I've met a few brilliant programmers who've never graduated college or even attended one. I've also met some brilliant Ph.D.s I don't think we'll find an answer that works for everyone. Colleges also know that they're not the best fit for everyone, which is why there is an admissions process. At least at Yale the process isn't only about finding brilliant students but also finding the people who would benefit the most from the environment and contribute back to it as well. Every year the Ivy Leagues get a ton of applicants and many of those who are rejected are quite intelligent.
EvilCON - Made Famous by
The books is very useful in the event you skipped class for a session of Team Fortress 2.
In my one of my EE courses, books are not even needed. People will just come armed with a homework solution manual, since the professor was so dumb to assign all the problem from the textbook, and so dumb to make the homework 50% of the course grade. (The final exam worth only 10%, the other 40% were lab-reports,where majority of people just copied from other people who previously took the course.)
"The New Age. The New Beginning."
I still remember the day where we had the ACM-MCPC (an qualifying round of ACM-ICPC for the Midwest section of U.S.) contest in a November weekend two years ago.
Our university happens to be a host site, and because of that, allowed to have 3 teams to compete instead of two. For most other universities, people have to qualify to appear at the competition. For us, we do not have enough people. So that, the professor assembled two teams of three people from the CS department, which happened to have the highest G.P.A. in the department (3.8+ out of 4), and opened the other team slot for public. Nobody inquired in a week. So I decide to make a run for it, even though it looks weird for an EE student to compete in the ACM-MCPC. The professor let me choose my team members. So I assembled a team, all EE students, picked from my electronic class, with G.P.A. in the low 3.x/upper 2.x range, with some knowledge in basic C++ and data structures.
The C.S. teams receive heavy coaching and training for the competition. Us? heavy "training" in Counter-Strike:Source.
At the end we happen to rank in the upper 30's (35th if I remember) out of 120 teams in the entire region. For the other two teams in the C.S. department, one of them ranked just a few place below us, and one of them ranked closed to triple-digits.
So, our training has work so well that we beat the top guys in the CS department. This story is still being talked occasionally.
"The New Age. The New Beginning."
Cause if he was he would know his bandwidth is going to cost him way more the the ROI from his amazon links. Something tells me he didn't think that through.
"(I) have this unfortunate condition that causes me not to believe a single thing any politician says when a mic's on.
I probably spent more time on this than anyone else cared to, but besides the fact that the linked site is total crap, it appears the author is as well. If you follow the links to his personal homepage www.dougtreadwell.com, you find a bunch of copy reading something along the lines of "I'm an expert with web standards, design principles and artistic vision."
For one, the site you submitted to Slashdot doesn't even validate or display correctly in Firefox. Apparently you only use IE for your "design" and testing. The 6 or so other sites in your "portfolio" are bare bones constructs that look TERRIBLE and don't even hint at the notion of "artistic vision." Plus, the written history of your "experience" implies that you're 28+, but your MySpace page (http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&friendid=47998693) says you're 24. But then, it also says your name is Alex and that you're a real estate agent. It looks like your dad, Patrick Treadwell, is actually the real estate agent and that you live in his basement, as you both still share the same address.
"For Software Engineers, absolutely, which is why they're generally required to take a certain amount of Computer Science courses." - by Yaztromo (655250) on Sunday July 27, @09:09PM (#24362909) Homepage
Well, "back-in-the-day" (not long ago to me, but beginning of 90's), since change in this field imo, 5 yrs. time = 10 normal one in most other fields? I was out to become a "programmer", strictly that - 'software-engineer' to me, is the same thing (janitor = maintenance engineer, lol, same idea)? I way, WAY overloaded... & on strict comp. sci. only (ASSEMBLER(x86), C, C++, COBOL, PASCAL, VISUAL BASIC - all 16-bit PC @ the time initially, except COBOL (slave terminals to System32 or OS400 rig, iirc - far before that on my first of 2 degrees (comp. sci. #2, to freshen up for world of the PC, coming outta the midrange world really), in MIS, COBOL on VAX-1180, BASIC before that, on same too, via timeshare (modem boots, remember those?))
Anyhow - it's YOUR MONEY, & some of the curriculum you have to take, imo, especially @ a tech school/2 yr./Associates degree level (this is what YOU make it though, so nothing to be 'undervalued' imo)? I could have done without, & WITHOUT question... but, why am I not "ticked off"?
BECAUSE, & you may laugh, but this was "good business sense"? I had a botany course, took it, & it's actually paid off doing home gardening in its way (this year, killer cherry tomato crop))?? Well, I had this partner, who dropped the class, didn't tell me, & made me blow a lab (90% of grade no less) ruining my average - how did I make up for it though??? Prep for "combinatorial thought", lol:
I told my prof., if he would guarantee me an A on the final exam (not having to take it even) & overlooking this? I told him I would write a 1 piece database program for his class & get it put into the library computer system, so all students could use it (was full of botanical terms, lol, ALL of them @ the time, must have been 1,000's... to make it "1 piece/1 moving part only" construction? Object Pascal OWL libraries to the rescue, along with computer science!
Gave the prof. WHAT HE TOLD ME HE WOULD LIKE TO HAVE AS A TOOL, & thus, made a piece of electronic virtual appliance furniture, as a combination of botany with comp. sci... Man, typing in those into the program as a resource file to compile into it, took DAYS (even @ 120wpm) - I'll never forget a great deal of those terms & their meanings because of it though (believe me, I walked away learning a great deal, if for THAT only)).
----
On another set of your points now:
I agree on some counts, but I guess my point earlier? Things seemed to have changed along the way... field's getting segmented @ the academic level apparently, lately, or something (no Phd or Prof. here though, admittedly) - we'll see how it pays off in the long haul (probably well enough, as to this field seemingly 'segmenting/specializing more - I really only knew of dataprocessing type tracks or computer science tracks for majors in my day in academia).
I cannot see using Enterprise Class tools (modelling systems (rational rose type stuff), &/or Team Coding tools (Visual SourceSafe etc.), & the ones I am familiar with in that realm, you just don't see as much, for a simple reason - there are more smaller/smallish projects, than those of 'enterprise class' for say, information systems (what I do the most @ least, most 'steady-eddy' money there is imo, as everyone's data is different, & thus, gets managed differently, especially for reporting)).
You're right on that account, some stuff you just do NOT see as much "Enterprise Class" stuff being built... makes sense though, bigger dollars, needs bigger sponsorship from departmental heads, which means parts of their budget, etc. - you have to SELL THIS too basically. MIS/IS/IT is a "business inside the business" imo.
(Anyhow, you don't see HUGE projects as much, @ least, I can say that, about the above, as
Someone needs to brush up on what the Ivy League is. Also, this is just links to books - so f'ing what. How much of a bribe does it take to get your stupid, get-rich-quick site on slashdot?
By the way, IBM is great for offering theorists to spend years thinking about their theories without the necessary fear of being on their ass, unemployed and living on the streets. They haven't been known for always leveraging their IP capital as well as other companies--Microsoft comes to mind.
Here's why I love Slashdot: unlike any other website I've ever seen, there's real content in the comments. Even on a story like this one, where the original article is garbage, there's informative discussion in the comment threads on the value and nature of Computer Science education in universities.
As they should! I always hated being taught out of a book - where's the value-add? The book should be something extra, the professor should cover everything he is going to assess without relying on one.
"whether any Computer Science curriculum gives students the knowledge they need for the working world"
They should not attempt to, any attempt can only fail given the wide variety of areas a CS student can end up working in. A CS course should do two things; test aptitude for the subject and teach students how to learn. Aptitude is tested by the variety of subjects studied - any decent student (and of course prospective employee) primarily learns how to approach problems, and that approach should be expected to continue after the degree is granted. Don't like a particular subject? Most jobs have their fun parts and their not-fun parts too. At the end of it the grades reflect the aptitude and the ability, as they should. Expecting specifics, like ability to write in Ada or Python or C# or Cocoa is only going to work for a select few and fail the rest.
I've attended schools ranked in the top 80 (undergrad), top 25 (past time masters while working), top 15 (completed masters), and top 5 (phd work ongoing). I've taught or participated in the teaching of undergrad classes at the last 2. I've found that in general, the more that the professor teaches out of the book, the worse the class. The best lecturers tend to teach almost entirely out of their own material, as they are experts in the subject. Book readings are given almost as afterthoughts.
Better schools tend to have better professors, which are in turn better lecturers. Professors need to recruit great students to do their research for them. Great research professors tend to understand that their best recruiting tool to identify and find the best student researchers are the classes they teach, even at the undergraduate level. So the thoughts of these professors at this level isn't "Ugh, another undergraduate class I have to teach", it's "I need to give the best lecture I can to attract brilliant students and make them want to work for me." This attitude seems to be what makes the difference between the best lecturer of a course and someone who merely teaches the material.
The quality of the books seemed to be the same to me across the board. That is, the top professors at the top schools pick the books they prefer, and then the lower ranked schools say, "I don't know which book is best. Lets see what MIT is using, and maybe they're onto something."
That all said, if you're the type to learn something from books, and you don't want to go to classes anyways, you can't go wrong with lists like these. Of course, you're missing out on the opportunity to impress great research professors who are looking to hire bright minds to do their bidding -- and otherwise have ridiculous ties to the industry old boys club if you're more inclined to get that type of job.
Much like the Yale poster here, MIT is no different. The CS courses are about theory, history, and how computers "are." There is a difference between computer science and computer programming. The more practical programming classes weren't even taught by the computer department - they'd be in civil engineering or mech eng because those students needed to be able to practically program for certain tasks related to the field.
Computer science courses just assume you can program. If you can't, then you'll have to pick it up on your own, and yes, there are plenty of peers readily available to help you.
In general, the schools you go to are only partially about the content of what they teach. You go there for the people. How would you like a computer scientist that pioneered their field to be your mentor? Wouldn't you rather be with students with similar goals and aspirations as you? It is the community that you join, and the education that comes with it is only as good as the people you learn from. Only by learning from the best, will you truly know what best is and where best is at. That is a true advantage if you dream to be and intend to become... the best.
The best lecturer I ever had didn't use any textbooks. If you asked him a lot of very detailed questions about some section of the course you were interested in he'd answer you and then recommend some books that might interest you but that was it.
Another good lecturer was of the opinion that by the time many books on his subject were in the library they were mostly out of date anyway.
Just trying to say, you won't get an education equal to that of the course just by reading the textbooks.
If you want to be a network engineer don't bother looking to see what the college course books on the subject are, they're chosen assuming there will be someone to help you along. You're much better off going onto a network engineers forum and asking them what would be good to read.
ask when you can't understand a concept.
Does it bother anyone else that "curriculums" is not an English word, and certainly not the plural of "curriculum"?
http://en.wikipedia.org/wiki/Curriculum
Physical laws do not tell what safety factors are needed in airframe design, or how to specify piling for a building based on a given geology. Computer science does not tell you how to design a business application taking account of the needs of auditability, or how to measure the statistical limits of accuracy of data gathering. My professional qualifications are in the design of software for business needs.
In fact there are important physical and mathematical laws in information theory, which shade off into quantum mechanics, and many of the arguments around black holes have to do with the fate of information. But this is not relevant to whether you would trust me (or another person) to convert your specification for an on line banking website into something that did not lose money or create it from nowhere.
From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
And I thought that the IV league was an intravenous drugs users association.
"Concrete Mathematics" annoyed the heck out of me. The subject matter was dense enough; but then they 'spiced it up' by adding pre-printed margin notes to the pages, places where people much smarter than I am rubbed my nose in the fact that they're much smarter than I am by making obscure, incomprehensible jokes about the material.
I still have my copy of that book as a trophy of having barely survived the course. Occasionally I take it down off the shelf to scare children. Someday I'll have it bronzed.
As it is now though, it isn't really recognised as that important in the business world just because so few people have that accreditation.
I suspect it's not important in the business world simply because, in today's economic climate, a lot of people are willing to pay for crap. Quality control is only important to a business that is trying to keep up the quality of its products. If they never intend to fix the bugs at all, fixing them early isn't more efficient, it's a waste of time.
I expect this to change sooner rather than later, as (a) people are getting fed up of software just not working, (b) community-developed alternatives for basic needs continue to improve, requiring professional products to be better to maintain competitiveness, and (c) businesses come to understand that if you are going to have to fix the bugs at some point, it's cheaper, faster and better PR to do it before you release than in some hastily-uploaded patch on a web server a few weeks later.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
They often assign the books for the problem sets, not the content of the book.
Or, also the content of the book as an alternative view to the content presented in lectures. Always good to see a concept from a few angles :)
I laugh now, but it was nothing but funny in the beginning. For the younger crowd on slashdot, parent has wisdom you should take to the bank.
It *is* the college name brand first, with social connections practically as important and GPA way down there. The key after getting in the school is staying in and then making as many friends as humanly possible.
After college, I was really dismayed at the *total* lack of professional and life skills of many of my peers coming from much more well-known (e.g. expensive) schools to whom I had to report.
I screwed myself in the beginning by *not* sinking into overwhelming debt (no Bank of Mom and Dad) and sticking with the well-known school with City College level curriculum in the third year. Don't make that mistake.
http://www.maxineudall.com/2010/02/should-economists-be-sued-for-malpractice.html
I'd have to say there are several factors involved there.
Largely because GPA has little to do with your actual programming ability and more with your ability to solve problems in the same way the instructor expects, creative problem solving and a high GPA don't always go together. Sometimes a creative and elegant solution that would work great or more efficiently than the expected solution will take too much time, so the (irrepressibly) creative student finds themselves working toward a solution which they ultimately have to abandon to meet deadline and instead finish up a hackwork version of the expected solution. Creative students who are good at quelling their impulses to do it "right" are usually graded better.
Another point is that EE students aren't usually primarily programmers, but if they are, they learn assembly first, VHDL, etc., then higher order languages. This is particularly useful when it comes to writing extremely tight code. Add that to the heavier emphasis on boolean logic and logic reduction and you get tight minimal solutions to complicated input/output problems. I've noticed that EE majors tend to make better drivers and low level I/O and message processing stuff whereas CS students tend to be better at making very abstract reusable code. Both are survival tactics to survive their education.
For a CS student, the quality of the solution doesn't matter, just whether it solves the problem and displays whatever "design pattern du jour" their instructor favors most.
For an EE student, if you make a circuit which has 10 more gates than the optimal solution, you'd better have a damned good reason why, like reusability of the package or better heat dispersal. In electronics, everything is time critical, and silicon is time. The more you put between vdd and gnd, the less performance you usually get, the higher the power consumption, and the worse your grade.
Looking at the 2008 ACM-ICPC challenges (just a quick glance), I see that almost all of these challenges depend on some vaguely subtle maths and are stated in the form of input/output problems. These are problems that both EE and CS students should be well-trained to approach.
However, the judging criteria are somewhat weighted toward what EE students tend to be better at than CS students. Time-critical applications with precise output. It's not just requiring your output be correct, but always correctly formatted.
The land shall stone them with the bread of his son.
It's how much the students actually do.
Programming is a bit like creative writing: you have to actually do it a lot, and everything else is just guidance, important but secondary to the act of writing as the chief source of learning.
My experience with several CS curricula is that the best one clobbered the students with many and difficult programming assignments, producing deadly ninja graduates. Others focused on theory and concepts, and produced students who could just barely complete an assignment by their senior year.
I have gradually decided that the focus on theory, and viewing an education as something that you acquire passively from teachers (and a better education from better teachers,) has made many CS curricula as useful as four years of powerpoint lectures about how to juggle.
(We'll argue whether MIT is ivy somewhere else.) Most of the specific-knowledge courses like OS-360, PL/I, APL, LISP are in the dustbin of history. The general knowledge courses in algorithms, digital electronics, mathematics are still relevant and haven't changed a whole lot in three decades, although new software engineering techniques continue to be added.
That cache of "ivy" helps you stay in the job market, even long after many software engineers in our fifies are long put out pasture. Ironically many of the classmates I've kept in touch with switched to software after majors as diverse and geology, biology and music.
The most important component of a good engineering or computer science education is not what texts are used in the classroom, but rather, it's about who you interact with. This goes for both professors and your student colleagues. A top-notch CS program teaches you to think analytically. Interactions with faculty and the quality of lectures at these top tier institutions is what gives them their advantage. Rather than simply 'telling' students, "this is how you do such and such", top professors 'develop' these ideas with the students.
From what I gather, the real difference between ivy and state schools is the quality of instructors. At the land-grant state megaversity I attended, the professors were kinda useless, but I still got a lot out of my education because I worked hard and did my homework. At better-funded schools, you have professors who are better at teaching, and often have some notoriety outside of academia.
I didn't go to college to get a well-rounded education based in theory. I went to college to learn something I could apply to a career that would last me 30+ years and make me money. I just happened to enjoy working with computers. I started as a Chemical Engineer, which pays better than CS but I just couldn't do it - it was much too boring.
I would seriously find it hard to believe that any 18 year old is heading to college to do anything other than get an education so they can get a good career. I think most of the men heading to college are more concerned about getting laid and meeting women.
"Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
Computer Science is certainly not any science. A field of study, yes. A combination of applied math and specific problems arising from real-world/engineering, yes.
But the mindset of research scientists is entirely missing. Scientists do experiments to find out about nature, with controls, statistics, etc. Even theoreticians in Physics use experimental results and depend on new experiments to guide their work.
"Computer Scientists" build math models.
We engineers do measurements/experiments, which are quite hard in systems work.
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.
"The biggest problem with communication is the illusion that it has taken place."
Reading lists and curricular plans have nothing to do with the quality of an education. What drives the quality of the education is the leadership (the professors) and the colleagues (the other students). This is why the top Ivies (Princeton, Harvard, Yale), the top science schools (MIT and Caltech) and a handful of other institutions represent the elite - they attract the elite professors, researchers, and students. This is valuable for networking, for maintaining a high degree of challenge, and for generally growing accustomed to working among the leaders in any field. If all you want to do is be a commodity programmer all your life, by all means read a bunch of books, teach yourself how to write code, and best of luck. If you want to be challenged and understand what it means to work for and with top people in a field, get the best education you can at the best school you can afford into which you can gain admittance.
Disclaimer: I did go to one of those snooty schools (Princeton), I still write some code despite being in senior management, I didn't major in CS (another science instead), and the biggest thing I got out of my college experience was the confidence that "all these other really smart people just seem pretty average to me."
Or the Prof assigns the book he/she wrote.
Just browsing through the listings for Carnegie Mellon, I saw a lot of textbooks that I've used here at NC State. Either there isn't much of a selection for books on some topics, or maybe there's not much of a difference between the two universities.
...just RTFB and save myself 10's of thousands of dollars and a year or three of time? (In theory - assuming that I didn't care about the degree, just the knowledge itself?)