Back in September 2006, I wrote about a new and innovative approach that Georgia Tech was taking towards its computer science curriculum. It appears that this approach, plus an improved job market for computing professionals, is helping turn around a fairly gloomy period for the field:
The Georgia Institute of Technology has revised its computer science curriculum to move away from a traditional hardware-software approach to much more emphasis on the creative process and the roles computer science majors go on to assume in their careers.
Giselle Martin, who directs student recruitment for the College of Computing at Georgia Tech, said that undergraduate applications are up 15 percent this year — in part due to new approaches to explaining the field. One key audience is parents, Martin said. Many remember the horror stories of the job market a few years back and Georgia Tech believes that it can break through that out-of-date mindset most directly with actual employers. So in April, when the college holds a series of events for accepted applicants, there is a panel for parents featuring employers who recruit at Georgia Tech talking about the jobs available and how much demand there is for new graduates.
And there’s this from Virginia Tech:
A new course focuses on problem solving, and several courses are being shifted to focus more on “how to think like a computer scientist,” he said. “We are thinking about how we portray ourselves and what we do,” [Cal] Ribbens [associate department head in computer science] said. “We do not want to be seen as just offering a bunch of programming classes.”
Indeed. There’s a lot of talk going around our campus and at the ICTCM about offering intro courses that focus on problem-solving and the methodology of the discipline, rather than just one little (but deep) slice of content. That certainly seems to make the front door of a major easier to get into. Right now, at least in math, it seems like many students who might do well in a math-related major are either turned off to the subject, or even shut out of it, because their first introduction to math is a technical calculus course, which is almost nothing like what the discipline of mathematics is actually about.
[h/t Inside Higher Ed]
This sounds like a good step forward. I interview a lot of candidates for developer positions, and I find that graduates from CS programs seldom have the skills needed. There seem to be too kinds of programs out there – those that expose students to a set of languages and solve pretty much the same set of problems in each, and those that go very deep in things like compiler theory or computing for applied mathematics – things that are interesting, but represent only a very tiny slice of what developers tend to do outside of large software firms.
More troubling to me than the content issue however is that the model of teaching focusing too much on individual knowledge and performance. In our line of business, the ability to work on a team and the ability to communicate trump raw devlopment skill. Sadly, most colleges fail so miserably in equipping for those skills that we almost never even consider a candidate who doesn’t have several years of demonstrated real world experience.
And another thing… 🙂
I’ve never been a math major, but your description of math curricula as a turn off for potentially skilled mathematicians sounds exactly like what happens in CS. In many cases, it is precisely the mathematics courses that deter potential CS majors. For a math major, however, I would assume that those calc courses have at least some relationship to mathematics. As a software guy, on the other hand, while I find it useful to understand the distinction between O(1), O(n), and O(log n) when talking about application performance, I can’t think of a single time when I’ve absolutely had to use math that I hadn’t already learnt in high school.
So the answere is to dumb it down and turn it into a training program for U.S. corporations. Don’t believe any of this. If you are entering college, pick something else. The H1B caps will be raised or eliminated entirely after the 2008 elections, flooding America with cheap foreign programmers from Tata and Infosys etc. This will make it even easier for U.S. corps to offshore even more IT work. You will face a lifetime of wage competition from India, China, Vietnam, Phillipines etc. If you insist on majoring in a tech field, you will have to hope that the dollar continues it’s freefall against other currencies, making Americans programmers more competitive with foregin goat herders.
Rob Huffstedtler Says:
For a math major, however, I would assume that those calc courses have at least some relationship to mathematics.
————————————
I Reply:
Yeah, you would assume that, wouldn’t you? Just like every other field, right? Of course, “real physics” probably isn’t really like freshman physics, and “real computer science” isn’t really like freshman computer science, and so on. But, in a much more profound way, “real math” really is not at all like calculus. In fact, “real calculus” isn’t even like calculus. In fact, it is truly remarkable how different two courses can be and yet *literally* talk about the very same theorems.
To me, this is perhaps the single worst part of how it is all done in college. The real subject is hidden from most students. I had no idea what math was really like until I took real analysis and abstract algebra. And, my father was a mathematician! How did that happen? I remember he said that once — that real math isn’t like calculus. I didn’t really take it that seriously at the time — after all, how could since I had a litany of counterexamples. Let me see, all of these course that I took were like calculus: calc 1, calc 2, vector calc, linear algebra, ode, pde, complex variables, vector analysis, probability. The main issue in them all was “solving for x”. Even after I took combinatorics and then abstract algebra, I was still kind of looking at like 2 counter examples vs 10 examples of the rule. And, besides that, both those classes were still kind of formulaic and combinatorics was still construably about just getting the answer.
When I took real analysis, it really openned my eyes a lot, I think, because it stands in very specific contrast to the original calculus sequence. It is pretty much a topic-for-topic rehash of freshman calculus. So, you really get to see the inadequacies fo freshman calculus. Truthfully, though, even though I thought it was really great and all, and that I really wanted to do that, specifically, analysis, I still don’t think I really “got it” until I went to graduate school. Every course in graduate school is like that real analysis class — there are no classes like calculus. (Well, there might still be one low level class — maybe.) You have to pass qualifying exams to stay in good standing in your program that are all like that analysis class. In fact, no matter where you go, those exams will probably include one on real analysis. They will also probably include abstract algebra and topology. Those three subjects seem to be the pillars of mainstream math as the field exists these days. And, yet, you don’t really get anything like these three as a freshman in college. In fact, no one hardly even knows this outside of the field.
So, students that really belong in the field are getting seriously shafted. For one thing, they are lucky if they even discover the field at all because they’ll take a whole bunch of courses in and the field will be presented to them as something else. Mathematics will appear not as a field in its own right but more just the theory of every other field. So, if you like physics, then you might like math, too, if you are into the theory of physics — math is like a roundabout way to being a theoretical physicist or something. That’s kind of how it comes off. So, you may well just not choose to major in math at all and just pick physics, instead, for instance.
And, then secondly, students don’t get a very good education in the field. Like I say, even when I majored in math, the classes that I took in the service for other fields — that engineering or physics students could just as easily take right along side of me — outnumbered my real math classes for math majors that really talk about mainstream *mathematics* like 5 to 1 or maybe 3 to 1 or something. So, you kind of get seriously hit by that fact when you go to graduate school and suddenly all the classes you take and your success in the program depends almost entirely on the 1 and not the 3 or 5 that you did as an undergraduate. I think there was at least one of my fellow domestic students that literally had never even taken a real analysis course. Meanwhile, there is a flood of chinese students that get off the plane, get an apartment, pass the quals, and get a drivers license, and usually they’re worried more about the driving portion of their driver test than anything else in that list.
Sam says:
So the answere is to dumb it down and turn it into a training program for U.S. corporations.
—————————————————————————-
On the contrary, the answer is to smarten up the program, or perhaps to split it into multiple programs that have more tightly defined purposes with appropriate supporting curricula. There is a need for “real” computer science to supply us with folks who are capable of tasks like designing compilers, file systems, database engines, etc. [I’m not convinced that these are adequately supported by the current programs, either, but since that isn’t the discipline where I live, I’ll leave it to others to comment on that]. However, that isn’t what most people who graduate with CS degrees do.
In my experience the average developer does almost no math, some percentage of programming, a lot of design, not as much testing as he should (and that usually without any understanding of methodology for it), as little documentation as he can get by with, and a fair amount of user interaction (for which he is ill equipped). In my experience, the average CS grad is only prepared for one or two items from that list. While I don’t advocate the view that college should be nothing *more* than vocational training, if the end result is that it is substantially less than that, students are being failed miserably. If it’s a matter of domestic graduates competing against H-1B applicants, being able to understand vague user requests and translate them into a working deliverable is a much more marketable skill than being able to articulate the performance characteristics of a red-black tree vs. a b-tree.
I think that’s the real punch line:
If it’s a matter of domestic graduates competing against H-1B applicants, being able to understand vague user requests and translate them into a working deliverable is a much more marketable skill than being able to articulate the performance characteristics of a red-black tree vs. a b-tree.
The problem here is that what it takes to do something like that is not “math” or computer science. (I put math in quotes in an attempt to distinguish most math programs from “real math” or whatever you want to call it.) And, I think this is such a good example of what it all comes down to. Simply having another technical notch in your belt is not going to improve your ability to do something like that. You need real math and philosophy for that kind of thing. You need to be able to “make sense out of things”. You need to not just make distinctions but to be able to know when they are *meaningful* distinctions.
These kinds of skills are “soft skills” like “people skills” or something. You can’t easily quantify when someone is going to really be good at that sort of thing. And, at the same time, it is stuff like that that really gets stuff done. A hundred people are out there turning the crank while one guy really places his shot in the right spot and actually makes a difference. And, the truth is that a lot of the time it isn’t even that hard to do, really. No one appreciates this better than someone out there working in a large corporation.