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."
Re:The REAL Ivy League... (Score:2, Interesting)
Yeah, I hate how people tend to think that any good school in the North is "Ivy". MIT isn't IVY, for example.
The value of an ivy league education (Score:5, Interesting)
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.
Re:Why "need for the working world"? (Score:3, Interesting)
Probably because nobody's seriously talking about creating a regulatory framework for them like physicians, lawyers, engineers, and (IIRC) accountants have. Any software project that is going to fuck up somebody's life or property in a bad way if it fails probably already has a physician, lawyer, engineer or accountant signing off on it so that somebody can officially take the blame if there's a problem.
I suspect we won't see any serious talk of regulating software designers or developers until there's some serious incident that injures or kills a lot of people, but that's just a wild guess. Were there any big events that led to the current forms of licensing of medical practitioners, lawyers, engineers, etc., or did those things just develop gradually over the decades/centuries?
Re:Interesting project but...do students use books (Score:2, Interesting)
Re:The value of an ivy league education (Score:2, Interesting)
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)
Thank you!
The people who wind up at Ivy League Schools (after the kids whose parents went there) are the ones that want it. Cost means nothing because they want the ivy degree so badly they will figure out how to get there. Now, these are the people you want to be around. They're motivated, smart, and will go on to do big things more often than those who didn't go to a high-caliber school.
--Mike
Different Goals (Score:4, Interesting)
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.
Re:Here's the deal. (Score:4, Interesting)
We have a total mishmash of pure theory and applied (like software design and databases) and end up producing a lot of very muddled code monkeys
CS hasn't changed then. When I did it (1991) they made us learn Ada, 68k machine code, Pascal, Statistics and Double Entry Bookeeping - that the was supposed to make us into 'Software Engineers'.
When I'm looking to recruit I actually prefer people who've worked their way up than those with CS degrees for this very reason.
You pay for better teaching (Score:1, Interesting)
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.
Re:The real difference (Score:4, Interesting)
What's the real difference between an Ivy League degree and a state school degree?
The Ivy League guys have a much easier time getting interviews.
Re:Why "need for the working world"? (Score:4, Interesting)
Re:The REAL Ivy League... (Score:5, Interesting)
I don't know how Brown's program compares to MIT, Carnegie-Mellon, etc. in terms of providing real research opportunities for undergrads (probably pretty well, in fact); it certainly does not have the same reputation for graduate studies. Brown CS does accomplish something that I think is even more difficult (and important) than simply providing a strong computer-science education, however: it makes computer science compelling even for those people (like me) who would never have even thought previously to dedicate their professional lives to computers. I would say that Brown CS may be the ideal undergraduate program in computer science; it inspires a devotion for the discipline that can last an entire career, and provides a rigorous and strong preparatory basis for further development, whether that development be provided by industry or by other, more graduate-oriented institutions like Carnegie-Mellon or Stanford. Randy Pausch's [youtube.com] story about how he became a computer science educator is really illustrative. Randy Pausch's mentor, Andy van Dam [brown.edu], is only one of the many devoted men and women that make up the department.
Re:Why "need for the working world"? (Score:3, Interesting)
-----
Speaking for the legal profession (based on my memories of lectures from a respected professor of legal history, so take this with a grain of salt), it was largely a discriminatory desire to maintain a (white male protestant) monopoly on the profession that led to the current manifestation of the state bar associations and their examinations.
Around the turn of the century (1900), large numbers of well educated East European Jews were transplanting to the U.S. Many of them had legal training and practice, and began to set up legal practices in the U.S.
At the time, the state bars generally only required a term of apprenticeship and/or a recommendation from a current attorney in good standing to accept someone into the bar. The fledgling ABA saw a chance to seize a good deal of power by convincing the states that the influx of immigrants was a serious risk, and they should begin following ABA recommendations for accepting new members.
These recommendations initially included graduation from an ABA-accredited law school (which eventually grew to require four years of college before law school) and an examination, including an ABA-approved portion on federal law and general legal principles.
Does this lead to better lawyers? Not really. The exams in many states (all except CA have followed the ABA's recommendations...CA does have the exam, and the multistate portion, but does not require an accredited law school) have become largely pro forma, with pass rates over 80%.
Suffice it to say that there are still plenty of barred attorneys who aren't very good at their jobs.
The realm of software and web design and network management and all the rest should be careful to avoid examinations and requirements designed primarily to produce a monopoly on certain career paths, as these can easily be used to increase the costs of services and keep out unwanted or threatening groups, without ever increasing the quality of services provided.
Just my two cents.
Re:Why "need for the working world"? (Score:3, Interesting)
I didn't attend any school to get a degree, I make a 6 figure salary, and manage to seem to know what the hell I'm doing, according to the people I work with. Some of who have degrees and are usually asking me questions, not the other way around.
So .. I call bullshit. People who have spent/are spending tens or hundreds of thousands of dollars will always try to find ways to justify their choice.
I hire smart people. Smart people can learn any language or any programming theory in a matter of a few weeks. I hire people who learned programming on their own because they enjoy it, not because they can make a buck at it.
So .. you smart people out there... run away from any company that requires a degree. They'll hire just about anyone regardless of skills. Take courses you want that you feel teach you what you need to know, and ignore the rest. Pay attention to what is around you at work, and volunteer to tackle any task, especially those that 'but no one knows how to do that'. Learn business processes, from sales to accounting to marketing so you can talk with those people. You will become the most valuable person in the company and the go-to guy instead of just another programmer.
You not-as-smart people. Spend the money because there are companies out there that won't hire you unless you have a degree.
For What It's Worth (Score:3, Interesting)
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.
Re:Interesting project but...do students use books (Score:3, Interesting)
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.
Re:Interesting project but...do students use books (Score:3, Interesting)
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.