Join 3,558 readers in helping fund MetaFilter (Hide)


More Universities Should Shut Down Their Computer Science Programs
April 27, 2012 9:28 AM   Subscribe

More Universities Should Shut Down Their Computer Science Programs
posted by thisisdrew (142 comments total) 27 users marked this as a favorite

 
Read the article, it's great and it resonates with what I've heard from local employers - while Comp Sci programs provide for a great theoretical understanding of software, they do not provide students with the skills needed to immediately enter the workforce right after graduation. In fact, graduates of a local 3-year diploma program offered by the local community college are more immediately hireable, and find more work quickly. For example, .Net has been in demand by the local software industry, by the university program doesn't teach it (the local community college does), but instead focuses on Java. There are, apparently, a lot of Java devs out there.
posted by KokuRyu at 9:32 AM on April 27, 2012


It should not be necessary for two universities located within commuting distance of each other to have the same academic department (this goes for any department, including English Literature as well as CS).

This is where I stopped even considering it possible that this person knows what he is talking about.
posted by RogerB at 9:34 AM on April 27, 2012 [94 favorites]



If you want job training, go to community college.

A CS degree is like a math degree. It's not a "job" degree.

In fact, the "Applied Software Engineering" program he describes is the "Business Computing" major in the School of Business.

Which aint engineering - they barely require calculus.
posted by Pogo_Fuzzybutt at 9:37 AM on April 27, 2012 [25 favorites]


Agreed, RogerB. The author knows a lot about software engineering, but nothing about academia. Whether that negates his thesis or not is a matter of opinion, I guess?
posted by supercres at 9:37 AM on April 27, 2012 [1 favorite]


And, as you might suspect from the upshot of the argument (which is entirely about the CS degree as a job-skills credential),

Jeffrey McManus is the founder and CEO of CodeLesson, which produces instructor-led online learning to technical professionals.
posted by RogerB at 9:38 AM on April 27, 2012 [36 favorites]


If you are looking for someone who can prove theorems about type systems and computability, look for computer scientists. If you need somone to bang out an application, someone with a certificate from a trade school is probably a better bet. Starbucks doesn't need chemists to make lattes, and Facebook doesn't need computer scientists to make like buttons.
posted by idiopath at 9:38 AM on April 27, 2012 [6 favorites]


while Comp Sci programs provide for a great theoretical understanding of software, they do not provide students with the skills needed to immediately enter the workforce

A university is not a job-skills training center. There may be a good argument to be made that people who do, in fact, only want job-skills training would be better advised to look elsewhere than a university Comp Sci program, but that is not an argument about what training a university should provide to its students.
posted by yoink at 9:38 AM on April 27, 2012 [26 favorites]


Facebook doesn't need computer scientists to make like buttons.

Yeah, I'm sure a site that serves millions of hits daily doesn't care about things like algorithm efficiency at all.
posted by kmz at 9:42 AM on April 27, 2012 [38 favorites]


From Point 2:
This means that consumers of the resource (which in an economy usually punish substandard products by taking their business elsewhere) are really a captive audience. This is one big reason why all universities are slow to adapt and reform in general.
From Point 3:
To put this another way, wouldn’t it make more sense for UCLA and Cal State LA to have a single, combined computer science program that’s among the best in the country, instead of two mediocre computer science programs?
So in the space of a few sentences, he's bemoaning the weakness of competitive forces between academic programs, and also proposing the creation of local monopolies. This is where I get a bit skeptical.
posted by Johnny Assay at 9:42 AM on April 27, 2012 [6 favorites]


I tend to agree with this guy based solely on the local college my wife teaches at. Their main CS instructor doesn't have a PhD. They were teaching C and Java up until a couple years ago when they finally introduced Python in small bits. None of the kids coming out of it know how to actually program websites and they have almost no practical skills.

I think "applied computer engineering" is a much better term for people pumping out iOS and web apps, which is where the vast majority of growing work is out there.
posted by mathowie at 9:43 AM on April 27, 2012 [1 favorite]


This is a whole lot of dubious intellectual masturbation just to make the reasonable but fairly uncontroversial point that "university CS programs should focus more on applied CS and less on theoretical CS".

But then, if he just put "Computer science programs should teach more applied skills" on his blog there, nobody would read it. Oh well.
posted by Scientist at 9:43 AM on April 27, 2012 [4 favorites]


This is where I stopped even considering it possible that this person knows what he is talking about.

Yeah, that's an absurd declaration by the author. Does he actually think that all academic classes are interchangeable widgets? Would he agree that since his company does something very similar to other companies, he should just close up shop?
posted by rtha at 9:43 AM on April 27, 2012 [3 favorites]


> You need to have a good basis in algorithms and higher math to be successful as a software engineer, and computer science provides that.

He doesn't thing that a good basis in algorithms is necessary to be a good coder.

end case;
posted by stonepharisee at 9:45 AM on April 27, 2012 [2 favorites]


can someone explain nerd anti-intellectualism to me because every time i think i get it it slides out of grasp again
posted by beefetish at 9:45 AM on April 27, 2012 [10 favorites]


Dear American business,
If you desire new workers who are trained in exactly the systems and software you need, I respectfully suggest you do what your forebears did not too long ago...put some skin in the game and train them yourself. Stop expecting schools to be your free work training system.
posted by Thorzdad at 9:45 AM on April 27, 2012 [105 favorites]


It should not be necessary for two universities located within commuting distance of each other to have the same academic department.

You hear that Barnard, CUNY, CCNY, Berkeley, Columbia, Cooper Union, FIT, Fordham, Hofstra, Juilliard, Manhattan School of Music, Marymount, New School, NYU, Pace, Parsons, Pratt, St John's, and SVA?
posted by griphus at 9:45 AM on April 27, 2012 [15 favorites]


I don't hire based on a CS degree. I hire based on applied skills and ability. Many of my best employees never went to school for CS, and some never even went to college.
posted by Chuffy at 9:47 AM on April 27, 2012 [8 favorites]


Yeah, let's get Georgetown, GMU, GWU, Catholic, Trinity, Howard, Marymount, and UMD together and just mash their classes up to kill dupes. That'll teach them to declare minors, force them to run the circus around town, racking up Metro fare!
posted by Hollywood Upstairs Medical College at 9:49 AM on April 27, 2012 [3 favorites]


Starbucks doesn't need chemists to make lattes

Yeah, they have English majors for that.

/English major
posted by Celsius1414 at 9:50 AM on April 27, 2012 [22 favorites]


Yeah, I'm sure a site that serves millions of hits daily doesn't care about things like algorithm efficiency at all.

I'm sure they care about those things quite a bit, but at the same time whether they need all of the folks working on interface stuff to care about it is another question. Not everybody is doing architecture work; for every person making a significant decision about algorithmic efficiency you're going to have plural people doing implementation or maintenance where that decision-making is less of an issue.

I've got a CS degree; I love the science part of computer science. But CS knowledge and practical development skills are Venn diagram stuff, all else aside.
posted by cortex at 9:50 AM on April 27, 2012 [6 favorites]


If you want to take seriously the notion of "Universities are not job training centers," which I have some sympathy for, then what the fuck are Engineering programs doing there anyway?

I have a Computer Science degree. I am a software engineer. I went into my Computer Science program knowing I wanted to be a software engineer, but my choices were between CS (too theoretical) and Information Science (for future SysAdmins, not future code monkeys.) What I really wanted was an undergraduate Software Engineering degree. My Mechanical Engineering major friends designed and built doohickeys for classes, as preparation for careers designing and building doohickeys for businesses. Why shouldn't I get the same kind of education?

My having a Computer Science degree to prepare for a job writing code is like a Mechanical Engineer having a Physics degree. Yes, that's where the theory comes from, but let's not pretend that "Prepare for a career" isn't what college is for. It may not be what everyone wants it to be for, but the rhetoric and arguments for "people should go to college" generally boil down to "so they can get better jobs." Let's acknowledge that instead of pretending that anyone who isn't interested in remaining in academia forever should be in a two-year trade school.
posted by Tomorrowful at 9:51 AM on April 27, 2012 [36 favorites]


This reminds me of the arguments being made against a liberal arts education widely nowadays as well: "If students are going to spend tens of thousands on college they should learn hard job skills rather than just memorizing the first line of the Iliad in Greek". I find this argument actually most ridiculous in the context of technology. Technology is an industry that changes so fast that the hot technologies at the time you enter a four year program will almost definitely be obsolete by the time you leave it. The idea that this guy (or anyone) can predict what a software engineer will need even five years into a career is ridiculous. I've been working in technology for about 8 years. I started with web programming: PHP and Ruby and have since worked in: C++ for embedded systems, Objective-C, Erlang, Javascript, C++ for graphics programming, and some electronics design. And now I'm finding myself diving into machine learning and statistical analysis where algorithmic thinking and math are unavoidable prerequisites. None of the fields I've worked in even existed when I graduated from college. But thankfully I graduated from a liberal arts school and so I know above all how to learn new things.

What this guys is recommending is not a more pragmatic degree, but a more disposable one, one that will, unsurprisingly, keep undereducated addicts constantly coming back to his fast food online training site rather than being able to teach themselves.
posted by AtDuskGreg at 9:53 AM on April 27, 2012 [45 favorites]


This seems like a pretty poorly made argument by a person who is mostly looking to argue with others and promote his product.

His pre-emptive response to the statement that higher level math and algorithms are important for programmers is to say most people don't need to understand pointer arithmetic. I'm not even sure how to respond to that statement. Pointers have nothing to do with algorithms. Absolutely nothing. The rest of his statements are similarly lacking in coherence. CS programs are only focused on "systems programmers"? Since when?

And, to make things even worse, from the look of it, he's basically jumping in as the first responder to more than half of the responses, with completely ridiculous readings of criticism. Someone rebuts his point about not needing algorithms and his response is "it sounds like you think coding should be a priesthood. I can’t agree". Say what?

This is a crappy, crappy article. The question of whether to teach more practical vs. more theoretical content in CS programs is certainly worthy of debate, but this just seems like link-baiting blog spam intended to sell a product.
posted by tocts at 9:54 AM on April 27, 2012 [7 favorites]


One good example is cited in an awesome book on educational reform called Crisis on Campus by Columbia professor Mark Taylor: one of the most pressing problems that humanity has today is obtaining clean drinking water. Yet no university has a Department of Water. Why is this?

Aaaaand, I'm out.
posted by R. Schlock at 9:54 AM on April 27, 2012 [3 favorites]


The university I went to has a program devoted to water.
posted by drezdn at 9:57 AM on April 27, 2012 [6 favorites]


Well, he demonstrates that knowing how to code (I guess he does?) doesn't mean you know how to think clearly.

University undergraduates are not discriminating consumers of education...But if you’re in a CS program that happens to be awful, there’s no way you’d know it as an 20-year-old undergrad.

and

There’s no reason to suffer through a mediocre or outdated CS program when lots of good online courses are available. If you’re looking to actually learn something (instead of just getting your ticket punched) you should be able to pick from whichever course best suits your learning objectives, even if that course isn’t available at your school.


Well shit, you're too dumb to know if your CS department is any good, but you can totally tell if an online course (lots of which still cost money, hi) is All That.
posted by rtha at 9:58 AM on April 27, 2012 [1 favorite]


> A university is not a job-skills training center.

Yep... even if it claims to be. All recent college graduates are fuzzy, moist, pink mouselings no matter what their diploma says.

I have hired PhD students because their research was directly related to the position, but I completely discount any specific job skills that an undergraduate has acquired from classes. There's just not enough time in a class or a series of classes to get an even approximately professional competence in anything. So they are going to have to be trained anyway, and what I am looking for in their resume is evidence that they can be trained on new stuff.

With a CS degree, I at least know that the person has some understanding of what computers do and how they do it. As an advisor of mine once said, "With a solid CS background, a programming language is something you can pick up in a weekend and be idiomatic in a few months".
posted by bgribble at 9:59 AM on April 27, 2012 [3 favorites]


>while Comp Sci programs provide for a great theoretical understanding of software, they do not provide students with the skills needed to immediately enter the workforce

A university is not a job-skills training center.


Yes, but how many students enrolled in a comp sci program understand that? And is it realistic to expect that comp sci undergrads will all move steadily up the academic ladder to an academic career?

Youth unemployment is typically double the national average, and industrialized societies all face major challenges in terms of increasing productivity (which pragmatically speaking means improving wages for all workers) and providing jobs. And the jobs are there - places like San Diego and Seattle are crying for tech workers. If you say, not everyone can be a tech worker, well, surely a comp sci undergrad who is looking at unemployment upon graduation can be a tech worker.

A more pragmatic approach to post-secondary education is needed.
posted by KokuRyu at 10:00 AM on April 27, 2012 [4 favorites]


Of course, he might have some other reason to encourage this:

"Jeffrey McManus is the founder and CEO of CodeLesson, which produces instructor-led online learning to technical professionals."

Why go to college when you can just log onto CodeLesson?
posted by Ideefixe at 10:01 AM on April 27, 2012 [2 favorites]


I have a Computer Science degree. I am a software engineer. I went into my Computer Science program knowing I wanted to be a software engineer, but my choices were between CS (too theoretical) and Information Science (for future SysAdmins, not future code monkeys.) What I really wanted was an undergraduate Software Engineering degree. My Mechanical Engineering major friends designed and built doohickeys for classes, as preparation for careers designing and building doohickeys for businesses. Why shouldn't I get the same kind of education?

You should. But it shouldn't be called Computer Science. Don't most universities have Computer Engineering? I know mine did.
posted by kmz at 10:02 AM on April 27, 2012 [1 favorite]


If you are looking for someone who can prove theorems about type systems and computability, look for computer scientists. If you need somone to bang out an application, someone with a certificate from a trade school is probably a better bet.

What if you are writing one-off software for a research laboratory implementing (and thinking up) algorithms no one has ever needed before? You need a software engineer.
posted by DU at 10:04 AM on April 27, 2012


It should not be necessary for two universities located within commuting distance of each other to have the same academic department (this goes for any department, including English Literature as well as CS).

Harvard, MIT, Brandeis, Boston College, Boston University, Tufts, Wellesley, Northeastern, etc.......hmmm.......if only one could survive which one would I pick?
posted by Seymour Zamboni at 10:06 AM on April 27, 2012 [2 favorites]


For the sake of clarification, when I talk about practical education at the university level, I'm not talking about ".NET vs Java." That's an absurd distinction; a good programmer can pick up languages similar to the ones she already know in no time, and entirely new ones with some modest effort. (And, in particular, .NET and Java have so much in common that there may be no two major languages more suited to being considered a single skillset.)

What I'm talking about is teaching how to design and write software, period, as opposed to, say, how to optimize an algorithm, which is what Comp Sci often focuses on. Again, the latter is still important for a software engineer to know, but it shouldn't preclude teaching good code-writing skills that are portable to any language you might ever learn.
posted by Tomorrowful at 10:06 AM on April 27, 2012 [1 favorite]


You should. But it shouldn't be called Computer Science. Don't most universities have Computer Engineering? I know mine did.

Most Computer Engineering programs I'm familiar with are about building computers - at the hardware level and very-low software level - not teaching general principles of software development.
posted by Tomorrowful at 10:08 AM on April 27, 2012 [3 favorites]


Related on the gray.
posted by blucevalo at 10:09 AM on April 27, 2012


I have a CS BS from Harvey Mudd, which very much focuses on the UNIX/Java/C side of things (or did 10 years ago), at least as far as what you're actually implementing. But more importantly, I learned that the concepts are universal, and the difference between languages are mostly syntactical, until you're doing pretty advanced things.

My first job out of college was asp. I spent exactly 0 hours being taught asp in college. But it taught me that I could pick up a book, spend a few days learning, and then have quite a bit of it down. So I did. And when I had the technical interview, I did better than the other applicants, most of whom I'm sure had professional experience, and got the job.

If your CS program isn't teaching you how to learn, they're doing it wrong, because it's not like engineering fields that have been doing the same thing for decades or longer. It's a rapidly evolving field, and just teaching rote skills in a particular language is a recipe for failure if you want anything other than drones.

Which I do.
posted by flaterik at 10:09 AM on April 27, 2012 [8 favorites]


What I'm talking about is teaching how to design and write software

And it's worth noting that quite a bit of the last year.5 of my education was focuses on exactly this - building software with a team while working with an external supplier of specifications. It's part of the field. It was not expected that we would've been taught anything directly related to what we needed to implement, it was expected that we would FIGURE IT OUT. Because if you can't do something that YOU don't know how to do right now, then you're never going to do something new. You can't have to wait for a HOWTO on everything.
posted by flaterik at 10:12 AM on April 27, 2012 [2 favorites]


Thorzdad: "Dear American business,
If you desire new workers who are trained in exactly the systems and software you need, I respectfully suggest you do what your forebears did not too long ago...put some skin in the game and train them yourself. Stop expecting schools to be your free work training system.
"

Favorited like the fist of an angry god. Or something.
I think I've told this story before, but I'll reiterate:
Our local community college's IT department had gathered a bunch of local business owners to talk about what they wanted out of graduates of the IT program. Each request was written on a piece of paper and taped onto the wall. When it was all done, three walls has been covered with requests that included about every programming language and major software package.

"Right now, you're looking at an eight year degree. Minimum," our IT chair said. "We're a two year college. How do we make this work?"
It was decided that programming basics and critical thinking were the most important thing and the specifics of languages and software could be picked up on the job. No one actually wanted to TRAIN their employees, they expected them to know everything out of college.

On the subject of the article, I think he's right in that a lot of CS majors would really be better off getting a two year degree. I took CS and failed back in the day - couldn't wrap my head around the advanced stuff. But what I actually WANTED to do was covered by the two year degree I have now, much more practical. It's part of the whole, "Not everyone needs to get a bachelor's" thing. Heck, I'm looking at taking more classes and I can't find a four year degree that would make sense so I'll probably just stack of some certificates.
posted by charred husk at 10:16 AM on April 27, 2012 [6 favorites]


I personally think it's silly that extremely expensive undergraduate degrees are required in general for any field. I graduated from a tough CS program with a high GPA and having that on a resume when I looked for an entry level job was a good indicator that I was able to solve difficult problems. But programming was mostly something I learned before I went to college, outside of classes during classes, and at work when I eventually got an internship and later a job. The experience of going to college and taking courses on all sorts of things made me a better person in general, but on a practical level I don't think it made me significantly better at doing what I do now directly.

You should. But it shouldn't be called Computer Science. Don't most universities have Computer Engineering? I know mine did.

At my school the Computer Engineering degree was more or less a hybrid of the Computer Science program and the Electrical Engineering program, it didn't have any more Software Engineering courses, which there were only a few of when I was there at least (which I took because I thought they would be useful).

I'm not talking about ".NET vs Java." That's an absurd distinction; a good programmer can pick up languages similar to the ones she already know in no time, and entirely new ones with some modest effort. (And, in particular, .NET and Java have so much in common that there may be no two major languages more suited to being considered a single skillset.)

This is at odds with the fact that even most entry level programming jobs require you to already have experience with an alphabet soup of particular technologies, even though in reality a good programmer used to Rails would be a better long term choice for a position writing Django code than a mediocre programmer who already knows Django. The main reason I got my first job out of college was that I had experience with Visual Basic and almost no one else graduating at that time did because it was expensive and CS departments wouldn't touch it.
posted by burnmp3s at 10:16 AM on April 27, 2012 [2 favorites]


Related on the gray.

AskMe is grey now?
posted by eustacescrubb at 10:16 AM on April 27, 2012


I went into my Computer Science program knowing I wanted to be a software engineer, but my choices were between CS (too theoretical) and Information Science (for future SysAdmins, not future code monkeys.) What I really wanted was an undergraduate Software Engineering degree.

It appears that you and I are the same person. My school offered the same choice, though I think it's changed some since I graduated.

I remember having finished an intro course in OO programming and then moving on to a DB class. The OO class hadn't taught us how to connect to and use databases in our programs, so I figured that's what the DB class was for. Halfway through the class I realized that wasn't so and asked the professor when we were going to learn that.

He looked genuinely puzzled by the question. The next week he gave me a photocopied handout with some generalized ODBC basics, nodded as if to say "there, you're good now", and then started lecture.
posted by middleclasstool at 10:17 AM on April 27, 2012


Sorry, my bad. I meant the green. Brain freeze!
posted by blucevalo at 10:19 AM on April 27, 2012


There's a little hate-on, but I don't think- based on my own experience- that he's that far off-base. As Chuffy says above, the degree means very little for most jobs; the first job someone holds you care about basic applied ability, and by the time the higher math could even come into play they're more seasoned, or can pick it up along the way. And that's not to say that getting the CS degree doesn't have real benefits- but isn't always critical for being a good programmer.

Heck, in my experience the most important skill for a programmer on production sites might be "Spent some time in Operations before learning to code", so they know the kind of fuck ups or assumptions that make for code that is hard to deploy, support, maintain, or troubleshoot. The people who've been on the other end, they're the ones who write defensive code that has fantastic logging, is easy to upgrade, and doesn't make assumptions about availability of downstream dependencies being available and timely 100% of the time!

I'm reminded of two of Steve Yegge's blog rants. The first, "Done, and Gets Things Smart", has as a key tenet that basically of us are a muddled mediocrity who are terrible judges of talent, and biased to boot. That is, except the very rare superstar (the superstar is who Mark Zuckerberg would be talking about when he made that 1000:1 efficient comment a few months' ago). Those people, you can't really even interview for them, you probably aren't smart enough to necessarily know when you've found one... but sure as heck they know the higher math and computer science, and if you are lucky enough to have one or two in your company, it can act like the seed crystal in making silicon wafers: your whole company will be better for it. I guess people like Jeff Dean at Google are held in this regard. I took the article's point as being similar: most people, even the "smart ones", are just "okay" programmers, and don't need 3-4 years of education in a classroom, they need a couple of years of writing production code. They aren't going to be the next Jim Gray anyway.

As for when the math matters: well, Steve sort of addresses that in another set of blog rants, discussing his reading of a biography of John von Neumann as a springboard, "Math Every Day (and the three-part programmer's view of the universe)". The math can be useful, can enlighten us, and can certainly start to truly turn us into programmers... but we almost get there faster if we encounter this stuff using a backdrop of applied programming, where the math starts to "stick" as more meaningful and more applicable.

I don't think it's that crazy as a general principle (albeit biased for this individual) to suggest most people who want to be programmers not get CS degrees specifically, but have some alternative such as a 1-2 year computer programming degree where they write functional code most of the time, and get guidance on general principles and techniques that will help improve their habits, skills, and style. In other words... a vocational skill.

I guess some programmer's don't like to hear that for the same reason they don't like the idea of unions: it is a pinprick in their still-juvenile notion of themselves as Randian Supermen of Meritocracy... instead of glorified electron plumbers. Except unionized plumbers might actually earn more.
posted by hincandenza at 10:23 AM on April 27, 2012 [10 favorites]


Does he offer Hindu courses? Because that would be useful for people interested in visiting the places where those kind of programming jobs are.
posted by ceribus peribus at 10:23 AM on April 27, 2012 [3 favorites]


I like that his argument entails that, once we have perfected teleportation, all schools (world-wide!) should merge into a single multi-campus university.
posted by oddman at 10:25 AM on April 27, 2012 [1 favorite]


Computer programmers are on the same road that machinists were on 30 or 40 years ago. Starting to be devalued, shipped overseas, automated, given to "monkeys" rather than someone who can do the actual engineering involved, etc. It happens to all professions. You are hot for a couple generations and then the owners figure out a way to cut the labor costs and make more money.
posted by DU at 10:26 AM on April 27, 2012


This is a whole lot of dubious intellectual masturbation just to make the reasonable but fairly uncontroversial point that "university CS programs should focus more on applied CS and less on theoretical CS".

The biggest danger I see is that the 'Focus on job skills' drum-banging drowns out the quiet, nagging voice in the background: things change so fast in CS that a good grounding in the philosophy of software development is needed to actually stay current.

Even front-end developers -- the folks who used to get by on Photoshop-slicing, Javascript tinkering, and HTML wrangling -- are now expected to have a working knowledge of dynamic client-side templating systems, complex language constructs, and enough server-side knowledge to deploy test sites and poke around with node.js and assorted sexiness.

I started out in journalism and made my way to software development, and it's taken a lot of work learning the ropes of computer science. I have a lot more practical experience working on and running projects, working with clients, and so on, but those work-a-day skills have to be matched with knowledge of the 'science' in computer science.

While there's certainly a fair amount of work to be had out there just maintaing existing projects, or bashing together a simple (potentially insecure) webapp, understanding the 'why' behind a lot of the hard problems and the 'how' behind common solutions and patterns is really important. The world doesn't need yet another wave of graduates four years from now, trained to churn out today's hot application in today's framework of choice.
posted by verb at 10:26 AM on April 27, 2012 [1 favorite]


Oh, the irony. I had just read the linked post and several of the comments on this thread, then went over to my email. In my inbox was a message from my alma mater about their participation in Coursera, which has already been posted about on the blue.

BTW, Stanford is offering CS 101. So now a newb can go deep for free, or shallow for $$. Or maybe, they can do both.

I'm a couple minutes into the first Stanford lecture already.
posted by Currer Belfry at 10:27 AM on April 27, 2012


I wish he would have plugged his own code learning business at the top of the post instead of the bottom, so I could have dismissed it as the link bait that it is without actually having to wade through the post.
posted by braksandwich at 10:29 AM on April 27, 2012 [2 favorites]


This is my O(n) face.
posted by symbioid at 10:32 AM on April 27, 2012 [6 favorites]


A university is not a job-skills training center (et al.)

I get this. But it isn't true across the board, and it doesn't have to be true. I work for a state university. We focus on the application of degrees to the 'real' world. We do not offer a computer science degree. Instead, we offer a degree in Computer Science Engineering Technology. The degree course includes internships with local businesses like IGT, Intel, Mentor Graphics, etc. 86% of our grads are employed in 6 months, and earn an average starting salary of 59k, which in today's economy is pretty damn good for a 22 year old.

The liberal arts major in me wants to defend the importance of theoretically-focused degrees and well-rounded undergraduate educations. But the philosophy major from Fancy Pants U who wrapped burritos after graduating looks at the starting salaries of these kids with vocational, applied degrees (and from a state university - not a technical or community college), and thinks he made a big mistake.
posted by Lutoslawski at 10:41 AM on April 27, 2012 [5 favorites]


His pre-emptive response to the statement that higher level math and algorithms are important for programmers is to say most people don't need to understand pointer arithmetic. I'm not even sure how to respond to that statement. Pointers have nothing to do with algorithms. Absolutely nothing.

Oh god, yes. That's precisely the place where I stopped reading the article.

Any case, pointer arithmetic is extremely useful even in this App-based world, as I recently learnt to my detriment; when you're asked to design a secure gateway to a retail bank's app, you would need your code to talk to existing legacy systems, and that can involve using unsigned integers.

Also, for all school-leavers out there wondering whether doing a four-year CS degree is useful for a tech career:- recently, as a form of evaluation for my consulting skills, I was asked to design an enterprise system in three hours for another large-scale website, mostly involving moving their existing system over to mobile and apps and so on. Told the management team upfront that I had no direct experience in, say, jQuery mobile, but that I can architect the solution in UML. Which I did, with sequence diagrams, use-cases and even a proto-class structure. That proved to be such a hit that we not only got the deal, but we're well on our way to talking about a phase 2 or a phase 3 plan for the next year or so.

Yup, still using my trusty degree nine years after I handed in my last exam. The university tenure hasn't been my key to the treasure chest, so to speak; it's more of a knowledge of where to put the key in, how to turn it without setting off the booby-trap, to use an Arabian-Nights-isque metaphor.

Does he offer Hindu courses? Because that would be useful for people interested in visiting the places where those kind of programming jobs are.

As hippy and liberal as they are, and clearly, while tech greats such as Steve Jobs did have an interest in Hindu and Buddhist theology, I doubt your Bay Area or Seattle experience would be improved by an advanced knowledge in Satvic mythology or Advaitic beliefs.
posted by the cydonian at 10:43 AM on April 27, 2012 [3 favorites]


Countering the "Universities are not job training centers" opine by noting that given:
  1. ...that students are strongly encouraged to attend college after graduating from high school.
  2. ...that undergraduates face mounting pressure to attend grad school because apparently a bachelors is the new high school diploma.
  3. ...that student loan debt in the country is massive and has surpassed credit card debt
  4. ...and that job opportunities for those without college degrees (or some level of college education) are disappearing fast (at least where I live).
Sorry, something's gotta change.
posted by JoeXIII007 at 10:49 AM on April 27, 2012 [3 favorites]


More contractors should build houses with sand foundations, too. It's cheaper, and most people don't need houses that will last a long time.
posted by mullingitover at 10:50 AM on April 27, 2012 [5 favorites]


Went to a large (25K+ students) state university, got the BS in CS. Generally, I'm happy with my education. I think they gave me a pretty well-rounded background in CS. My main complaint is that my education didn't revolve enough around projects. I got A's in every class where a significant part of the grade came from projects. Classes where the grade came from exams? Yeah, didn't do well in those. Basically, I have no respect for exams as a tool for teaching students. Really, I just don't believe in studying. I think it's a waste of time, a way to pass exams, a way to cram and regurgitate "knowledge" that you'll forget a week later. The way to learn something is by DOING. It's the only way.

So yeah, the classes and professors were basically useless. You could say I derived all my education value from the TA's : they were the ones who graded my projects, offered detailed feedback, and then tutored me in office hours when I had trouble understanding something.

As for the classes themselves, I think it was a good mix of theoretical and applied skills. I'm actually pretty happy with that aspect. I wish my advanced algorithms course had been taught over two semesters and involved actual coding, though. I would have learned a lot more and understood the concepts better. But this goes back to my aforementioned distaste for studying.

The one thing I strenuously object to is the amount of math I was forced to take. Given, certain kinds of math are useful for CS -- probability, statistics, set theory, big O and that sort of thing. But did I really need to take 3 semesters of calculus? And linear algebra? Such a waste of time. Such a complete waste of time. I've never used any of it, never want to, never will. I think students should definitely have the option to learn this stuff, but by no means should it be required.

Ultimately, I disagree with the idea that schools should close their CS departments and these skills should be taught by the University of Phoenix or DeVry or whatever the hell this guy is advocating. Putting aside the value one gets from the gen ed requirements -- which I would argue is actually significant -- CS is a difficult and complex discipline, and spending four years of your life to concentrating on it will undoubtedly do you good if you wish to enter the field. However, I would completely change the way it's taught.

Basically, I'd hire a fuck ton of TAs. Classes should be entirely project-based. I'd scrap most of the math requirements, and replace them with a specific math curriculum that's useful for CS. I'd design a CS curriculum around teaching (1) how to write GOOD code (should cover TDD), (2) practical skills (operating systems, databases, compilers, etc), and then finally (3) areas of concentration for advanced study. And I think students should have a lot of flexibility in choosing their area of advanced study.

Basically, right now CS programs are structured like Math and Engineering programs, when in fact CS doesn't really resemble either discipline in any meaningful way.
posted by Afroblanco at 11:04 AM on April 27, 2012 [2 favorites]


It should not be necessary for two universities located within commuting distance of each other to have the same academic department (this goes for any department, including English Literature as well as CS).

WTF?!?

University academic departments in general should have limited charters and should be reorganized frequently. (Again, not just CS departments, but all departments.)

WTF?

I spent nearly all of my undergraduate career working in academic administration...

Ohhhhhhhhhhhhhhhhhhh. There we go.
posted by jocelmeow at 11:08 AM on April 27, 2012 [3 favorites]


The way to learn something is by DOING. It's the only way.

Dude, come on. It's a really good way. It's not the only way for a lot of people who are not you.
posted by rtha at 11:08 AM on April 27, 2012 [4 favorites]


Colleges can't charge tens of thousands of dollars a year for tuition and simultaneously bemoan that their students are materialistic and careerist and have lost the spirit of education for the sake of the love of learning. Bulllshit is hereby called on that! What the hell do they expect people who they are putting into five figures of debt to be to be concerned about, if not getting high-paying jobs?
posted by thelonius at 11:10 AM on April 27, 2012 [12 favorites]


Maybe I'm just making a semantic distinction here, but a university is defined as a place of higher learning. You go to university to learn how. To think critically and ask critical questions. To acquire and develop a life-long taste for learning. Ultimately, to learn that this is all just the beginning and that in the grand scheme of the universe, human beings know infinitesimally little of the fields of expertise we have managed to define, and compartmentalize, and steward, across each of our brief lives.

The whole endeavor of higher education has been to expand the frontiers of human knowledge, and in areas where that has encountered limitations, to learn how to tolerate ambiguity and uncertainty, i.e. to come to terms with the unknown.

Although college programs have an ethical obligation to help its students to transition out of university in the context of the given socioeconomic climate, it is by no means the primary objective. And for the sake of our culture and future as a free society, it cannot stray from that mission.
posted by polymodus at 11:14 AM on April 27, 2012 [3 favorites]


Does he offer Hindu courses? Because that would be useful for people interested in visiting the places where those kind of programming jobs are.

Or Victoria BC. Lots of developer jobs here.
posted by KokuRyu at 11:15 AM on April 27, 2012


And linear algebra? Such a waste of time.

I don't even know what to say to this. At the very least I would like to point out that the video game industry (which motivates about 75% of CS degrees as far I can tell) would probably prefer that CS graduates know what rotation matrices are.
posted by Pyry at 11:28 AM on April 27, 2012 [5 favorites]


There's a similar argument to be made about law school.

Law school in America has developed or devolved into a kind of faux-graduate school experience, in which with limited exceptions less pretense than ever is made of engaging in vocational training...Law school as graduate school is very much a luxury that the vast majority of people who are forced to purchase it can neither afford, nor would they want to buy even if they could actually afford it.

Paul Campos
posted by justsomebodythatyouusedtoknow at 11:31 AM on April 27, 2012


At the very least I would like to point out that the video game industry (which motivates about 75% of CS degrees as far I can tell) would probably prefer that CS graduates know what rotation matrices are.

Right. And I would consider this an area of advanced study that students could choose to specialize in if they would like. What percentage of CS jobs make use of linear algebra? Not the majority, or anywhere close. For most undergrads, advanced math is more akin to hazing than education.
posted by Afroblanco at 11:32 AM on April 27, 2012 [2 favorites]


More Universities Should Shut Down Their Computer Science Programs

This is a misquote. The full sentence is: More Universities Should Shut Down Their Computer Science Programs Every Evening But They Can't Find The Button Thing That Does That. Can Someone Call I.T. For Fuck's Sake?
posted by gallus at 11:38 AM on April 27, 2012 [2 favorites]


If you want job training, go to community college

This argument always gets trotted out. Unfortunately, in the U.S., community college and vocational school education is often looked down upon by employers. Whether those who wish to protect the ivory halls of academia like it or not, universities are considered a place for people to acquire the skills and knowledge necessary to begin their careers. Businesses either need to rethink the value of those who have a community college or vocational background, or they need to provide training for new hires, as mentioned earlier.
posted by Apocryphon at 11:41 AM on April 27, 2012 [1 favorite]


As of right now, we don't actually know how to build software in the large. Which means that anyone building software who isn't a computer scientist will inevitably be "doing it wrong", simply because you need a scientific lens in order to figure out how to do things right in your given context. Anyone claiming they do know the "right way" to write a large software system is selling something. Or is Rob Pike, Fred Brooks, Alan Kay, Guy Steele, or one of a very few others. And many of them are also selling something.

All of this is aside from the fact that flaterik hits a few nails on the head (also: HMC CS! Woo! Clinic! Ouch!) and tocts correctly points out that the author is an idiot (or, at least, is making statements only an idiot in CS would make).
posted by pmb at 11:43 AM on April 27, 2012 [2 favorites]


My having a Computer Science degree to prepare for a job writing code is like a Mechanical Engineer having a Physics degree. Yes, that's where the theory comes from, but let's not pretend that "Prepare for a career" isn't what college is for.

Sure, if by 'prepare for a career' you mean 'give the intellectual tools for.' The set of possible jobs you may end up doing once you leave university, even with an applied degree like engineering, is so large that there is no way you'll be able to slot in like a long-service employee immediately; far better to teach a wide variety of analytical methods to be adapted to the job at hand. I did an engineering degree at an elite institution, but I don't know any of my classmates who were able to start an industrial career without any on-the-job training; the attempt seems pointless unless the education is so narrow as to be pointless outside a target job.
posted by Jakob at 11:46 AM on April 27, 2012


A co-op program is one major way that a university can focus on university-level theory-based education, while providing enough job skills to be useful. I know that at the University of Waterloo, the CS program is reasonably well about computer science rather than programming. But most students are in co-op, which means that by graduation, they've worked six four-month job terms and have the best of both worlds. This isn't just for CS, but also for other math disciplines, engineering, etc.
posted by parudox at 11:46 AM on April 27, 2012 [2 favorites]


The whole endeavor of higher education has been to expand the frontiers of human knowledge, and in areas where that has encountered limitations, to learn how to tolerate ambiguity and uncertainty, i.e. to come to terms with the unknown.

To be glib, tell that to all of the jobless liberal arts majors at the OWS camps. In Egypt, most of the disaffected unemployed youth are also liberal arts graduates.
posted by Apocryphon at 11:48 AM on April 27, 2012 [1 favorite]


I think the whole question of Computer Science versus Software Engineering is pointless. I know a chemical engineer, a physicist, and someone who only got his GED, all of whom became good software engineers. The GED guy even has fine CS chops. How ever did they accomplish the feat?

These are people who tried hard.

"Oh, Bob doesn't know how to do matrix math. That must be because he's just a software engineer." No, it's because Bob isn't on top of his shit and couldn't be bothered to prepare for the interview. I mean, it's not like this knowledge costs money. Go read Wikipedia.

If you are a mediocre person who wants to be spoon-fed knowledge, then it doesn't matter where you go to school, you will most likely fail at programming. If you're a sharp person who has goals and gets things done, it doesn't matter where you go to school, you'll probably do well.

Everything in between those two extremes is self-esteem, networking, and assholes trying to take your money.
posted by hanoixan at 11:49 AM on April 27, 2012 [4 favorites]


To be glib, tell that to all of the jobless liberal arts majors at the OWS camps. In Egypt, most of the disaffected unemployed youth are also liberal arts graduates.

This is sloppy. I am talking about education, you are talking about welfare. They're related but not the same.
posted by polymodus at 11:53 AM on April 27, 2012


Dear American business,
If you desire new workers who are trained in exactly the systems and software you need, I respectfully suggest you do what your forebears did not too long ago...put some skin in the game and train them yourself. Stop expecting schools to be your free work training system.
posted by Thorzdad at 12:45 PM on April 27 [37 favorites −] Favorite added! [!]


If I just posted this over and over again, that would probably annoy the moderators. But I want to.

I found his comment about how clean drinking water is a very important issue, but there are no Departments of Water to be very interesting. It makes you think: what is a university department - or a university, for that matter - for?

I don't think anyone has ever claimed that universities were for solving important problems, like the lack of clean drinking water, though that is very important. Universities exist for many reasons, some of which are just historical. European universities were created to be places where people studying things (mostly theology at the time) could get together, talk to each other, and share libraries. (That last one is still super important).

Universities always were teaching institutions - but only for very closely related professions like the clergy, law or medicine (and even law had an apprenticeship model in England, for example - people studied at courts in the 16th century, not a university). The scholars taught people to be LIKE THEMSELVES, not something very different.

But these days, we have this contradictory expectations of universities and their faculties. Universities are expected to be places of academic research - that is, research in the sciences, social sciences and humanities which may or may not have any application either in the economy or in public policy/development. We select and promote faculty almost entirely based on their skills in academic research.

But then we expect universities to also be teaching institutions where the vast majority of the students will never be engaged in any kind of research. We are asking researchers to train administrative assistants and editors and ... what are the other things people do with a BA/BSc when they don't go to grad school? (I have no idea, that's why I went to grad school).

I really enjoyed my undergraduate program -- that's the other reason I went to graduate school. But no matter how much my undergrad history program claims that it prepares you for the working world, it doesn't. What we studied prepared us for academic historical study - which only 1% of us would ever do (and it wasn't actually very good prep for academic history, since so few people were going to apply to graduate school). Maybe it improved our writing skills and maybe some research skills -- but I think I learned a lot more research skills in my part-time library job (lit searching, etc). And when I look to the skills that I use in my current job - using spreadsheets, databases, word-processing and layout, even a bit of HTML editing - these are all stuff I've taught myself on the job (or, ironically enough, learned as a result of the academic research I did in grad school but did NOT do in undergrad).

We need to seriously rewrite our whole system. Academic education is not a good job preparation EXCEPT for certain research-based jobs. Programs in universities like engineering, medicine and law are already not, strictly speaking, academic but applied.
posted by jb at 12:00 PM on April 27, 2012 [5 favorites]


True. But my point is that it's all well and good to talk about the historical role of universities as protectors of teaching you "how to think" and not "what to think", but there really needs to be a follow-up to how modern society treats universities as job training incubators. Do companies need to provide more co-ops and internship programs? Does there need to be a wholesale elevation of perception of community college or apprenticeship programs? Do businesses need to start training new recruits? Does society in general need to think of college differently, and alter itself so that going to a four-year stops becoming the expected baseline for entering into a white-collar professional career? These are the sort of things that need to be talked about. You can't just expound at length about universities' primary role in "expand[ing] the frontiers of human knowledge" when many, perhaps most college students since WWII attend university to begin a career.
posted by Apocryphon at 12:00 PM on April 27, 2012 [2 favorites]


For most undergrads, advanced math is more akin to hazing than education.

As a math person, I must protest that basic linear algebra is not advanced math. I suspect it'd be easier for most people than calculus.
posted by hoyland at 12:03 PM on April 27, 2012 [7 favorites]


One good example is cited in an awesome book on educational reform called Crisis on Campus by Columbia professor Mark Taylor: one of the most pressing problems that humanity has today is obtaining clean drinking water. Yet no university has a Department of Water. Why is this?

Because they call them Hydrology departments? In fact, my university has both a Hydrology department and a Soil, Water and Environmental Science department. So there you go!
posted by Squeak Attack at 12:12 PM on April 27, 2012 [5 favorites]


Maybe I'm just making a semantic distinction here, but a university is defined as a place of higher learning. You go to university to learn how. To think critically and ask critical questions. To acquire and develop a life-long taste for learning.

If that's the point of an undergraduate degree, then why do top universities only let in the best and brightest with high test scores, critical thinking skills, and an already developed taste for learning? Shouldn't they be focusing on high school drop-outs and disaffected slackers? At least in my experience, the students that perform well in college and get the most out of their education are the ones that already have an advantage over most of the population in those sorts of areas. If you don't figure out how to think critically and don't have a taste for learning by the time you're 18 then you're either not going to go to college or you're not going to do that well there. If undergraduate programs were actually about any of those things rather than serving as one long examination of the student's abilities then they would have to be completely redesigned from their current state.
posted by burnmp3s at 12:19 PM on April 27, 2012 [3 favorites]


As a math person, I must protest that basic linear algebra is not advanced math. I suspect it'd be easier for most people than calculus.

The basic stuff was easy, but after like week 5 it got scary hard. I remember a deluge of vocabulary. I couldn't keep up. It was the only class in my entire college career that I got a D in. If I had any interest in gaming (and not just trying to fulfill a bullshit requirement for my degree program), I would have certainly expended more effort.

Yeah, it was an elective. I actually had one other option I could have chosen : Differential Equations. And we all know how much that would have helped me in my career....
posted by Afroblanco at 12:19 PM on April 27, 2012


Thing is, a bit of actual computer engineering is quite useful if you want to learn computer science. In practice, people who can earn big bucks doing commercial software development would have to take a loss in pay to become a teacher. In addition, the most cutting edge hardware is available in the business world, not in academia, mainly because it's too expensive. For this reason, colleges are at an advantage dealing with the science part and weaker at the engineering part.

But learning computer science without knowing what the engineers know is like learning math without ever seeing the examples that illustrate the concepts. A course in operating systems will teach you "principles" but if you've never seen the internals of an operating system, you never really "get" it.

On a slightly different topic, if you take a course in compilers, you might form the impression that choosing among parsing algorithms is an important issue in the commercial compiler world while the reality is that the hard parts of compiler writing involves making sure your compiler parses the same language as the approved standard, recovery from errors and providing decent error messages, etc. These are not theory-less uninteresting problems, but no one seems to give courses in it.
posted by Obscure Reference at 12:20 PM on April 27, 2012


hoyland: "For most undergrads, advanced math is more akin to hazing than education.

As a math person, I must protest that basic linear algebra is not advanced math. I suspect it'd be easier for most people than calculus.
"

I had the highest score in my class in Calc I. Linear Algebra? I had to drop it halfway through the term and take it again later to avoid a blight on my transcripts.
posted by mullingitover at 12:24 PM on April 27, 2012


Or Victoria BC. Lots of developer jobs here.

Y'all hiring Californians up there? :)
posted by Celsius1414 at 12:25 PM on April 27, 2012


...an advanced knowledge in Satvic mythology or Advaitic beliefs...

The closeness of the 'i' and 'u' keys resulted in an unintentional typo there; my apologies.

posted by ceribus peribus at 12:29 PM on April 27, 2012


Another person here who goes "huh?" at the idea that basic linear algebra is "advanced math." (By basic, I mean through, say, diagonalization and statement of the spectral theorem.)

I am not really a programmer or a software engineer, but my area could be called scientific computation. Linear algebra is really the least of my problems. I also use probability and statistics, and not the stuff one learns in Probability 101, but real calculus-based probability and statistics. And PDE. And Fourier analysis. And lots of other math, math, math.

I really wonder what kind of software people write without math.
posted by Nomyte at 12:30 PM on April 27, 2012 [1 favorite]


I really wonder what kind of software people write without math.

Almost every website or application used by most people in the course of their everyday lives.
posted by Afroblanco at 12:32 PM on April 27, 2012 [3 favorites]


Look, nobody's saying advanced math is useless. That would be absurd. But the vast, vast majority of software jobs do not require it, or even a particularly deep understanding of it. Wasting our time with it in college is like forcing students to take a calligraphy class. Sure, some people may use it, but for most students, their time would be best spent learning other things.
posted by Afroblanco at 12:37 PM on April 27, 2012


I am clearly living in a different world, because pretty much every exciting computer project I read about or that my friends tell me about (or make themselves) depends crucially on higher math. Everything from speech recognition to image editing to machine translation to ML to Bayesian whatever.
posted by Nomyte at 12:37 PM on April 27, 2012


Hey there PMB, I remember you! I see we have both grown quality beards since graduating.

yeah, it's not a big school
posted by flaterik at 12:37 PM on April 27, 2012 [1 favorite]


I am clearly living in a different world

Well, actually, you kinda are. Your friends are working on exciting projects in scientific computing. That is not where most of the jobs are. Or even a lot of them, really.
posted by Afroblanco at 12:40 PM on April 27, 2012 [2 favorites]


Afro, I can think of an iPhone app that utilizes each of the subjects Nomyte mentions.
posted by flaterik at 12:41 PM on April 27, 2012


.... out of how many?
posted by Afroblanco at 12:42 PM on April 27, 2012 [1 favorite]


I don't really pay all that much attention to iPhone apps. The fact that I can think of them off the top of my head means there's a decent chance they are successful.

If you're doing something that's not difficult to implement but is successful, you got DAMN lucky with your idea.
posted by flaterik at 12:45 PM on April 27, 2012


You appear to have a detailed understanding of where all the jobs are and what skills they all require. Also, you have effortlessly consigned many, many areas of application to some sort of computing ghetto. I conclude that our conversation is unlikely to go anywhere productive.
posted by Nomyte at 12:53 PM on April 27, 2012


I am clearly living in a different world, because pretty much every exciting computer project I read about or that my friends tell me about (or make themselves) depends crucially on higher math

Well exciting new projects in general is a very small subset of all of the software engineering work that gets done. "Maintain this poorly-designed legacy system we are too cheap to replace with something better" is a much more common description of a software job than "Design this new and exciting system using state-of-the-art technology." Mainly because most businesses that hire programmers need something good enough to keep them from losing money while they do what actually pays their bills rather than something groundbreaking and new that is valuable itself.
posted by burnmp3s at 12:53 PM on April 27, 2012 [1 favorite]


But thankfully I graduated from a liberal arts school and so I know above all how to learn new things.

You go to university to learn how. To think critically and ask critical questions. To acquire and develop a life-long taste for learning.


Funny, I managed to develop all those things without going to college. You should be learning that in junior and high school, and you should be learning it because it's the most efficient way to get a handle on things. The idea that college shouldn't be teaching any sort of practical utilitarian skills is BS, when students are paying a fortune to attend college in the belief that it will help them get a job.
posted by anigbrowl at 12:55 PM on April 27, 2012 [2 favorites]


Something nobody has mentioned here are the issues which plagued my partner, who had been a PhD CS professor at several different universities in different parts of the country over the past 20 years.

His method of teaching was to teach theory along with application by assigning projects and then lecturing about the big scale parts of the topic while trying to steer the students toward developing a finished product which shows they can use what they're learning in a practical manner. He would attempt this through classroom lecture times, lab time where he was available for mentoring, group and individual project assignments, and just about any other way he could think of to try to get students to learn.

What he found, over the past 20 years, is that students generally don't want to learn the concepts, they want to be handed recipes. They don't want to have to produce anything more difficult than a cleverly formatted Word document and call that "learning to program". They don't want to have to do the actual work of learning to program, which is trying a bunch of shit which doesn't do what you expect it to do and gradually making it work the way it should. If given an assignment which basically says "use the concepts we've been discussing about this particular language to create a program which does X or Y or Z", the students really want to be handed a sheet of paper with the exact working code for X or Y or Z results printed on it so they can type it into their computer, compile it, and hand that in as the finished product.

He was constantly banging his head against the wall about they really don't want to have to actually LEARN something, just have something handed to them for regurgitation at the appropriate time. He would go to great lengths to make resources (including himself) available basically at beck-and-call for students while they worked on their project, and almost never had anyone come to him for guidance or mentoring. Students would rather take an F or a 0 on a course than have to learn anything of substance.

On top of that, they would complain endlessly to the department and university administration that they'd been given an F or a 0 for not doing any work during the course which proved they had gained any knowledge from the class. Some of the time, the students never showed up for lectures, never attended any lab sessions, never handed in any project work (even incomplete)... and they STILL complained that they got a poor grade for the semester.

Other teachers in the same department would do multiple choice exams for programming classes and base the student grades on the results from that. Now, how useful is the ability to do well on a multiple choice exam when it comes to gauging someone's ability to sit at a computer and creating code? Pretty much not at all. But the students LOVED these classes and would flock to them because it was pretty much an "easy A".

The result was a CS department which was a laughing stock. So much so that, after they created a "video game development" degree and graduated a few students, one of them came back after attempting employment (and being basically laughed out of the workplace for his lack of skills) and successfully sued the university for refund of his tuition because he hadn't learned what he needed to learn in the program. Not a huge surprise given how it was taught and graded. That program was quickly ended after that.

Now, to be fair, my partner would usually have 2 or 3 students each term or semester to really pinged on what was going on, and they thrived. They'd burn through projects, develop their own ways to study new subjects and learn new languages and approaches, and they usually went on to be successful in their employment.

So whose fault is this sorry state of affairs? Partly the university for accepting grade inflation and poor teaching techniques as a way of making a program look successful when it actually isn't graduating students functional in the subject matter. Again, partly the university for marketing the program as the fast track to Microsoft megabucks. Also partly the students, for wanting the easiest path possible to a degree and for thinking that computer science and programming is going to be like learning history facts or writing english papers. And partly industry's fault, for demanding "A BS in Computer Science" as a prerequisite for hiring, giving both the schools and the students impetus to create diploma factories which provide credentials that have no substance.

My partner has since left teaching and is doing research and development in VR and other such interesting things. Which is a shame, because he really was a good teacher, just not made for today's college environment on any level (student, department, or administration).
posted by hippybear at 12:57 PM on April 27, 2012 [13 favorites]


Also, you have effortlessly consigned many, many areas of application to some sort of computing ghetto

It is funny that we're having this conversation, because I actually do work in a new, groundbreaking area of scientific computing. However, what I do requires very little math, and a WHOLE LOT of understanding of parallel computing and scalability. It also involves some biology, which I've actually quite enjoyed brushing up on for this job.

Do I think all CS majors should have to study biology, just because they may wind up working with it? No. Or at least, not unless they're interested in biology. However, parallel computing and scalability are widely-applicable areas that all (or most) CS undergrads should have some background in.

See where I'm going with this?
posted by Afroblanco at 12:58 PM on April 27, 2012


I really wonder what kind of software people write without math.

Transactional software, popping things in and out of databases and doing comparisons thereon. Mathematical stuff can be brought in either with a library or a few specialists. I prefer the math-y stuff myself (I used to do some DSP and have a deep affection for Fourier transforms), but that's component-level stuff that most people buy in. the money in software is in delivering products. It's like the differences between product development, electronic engineering, and materials science (to develop new sorts of capacitors and so on).
posted by anigbrowl at 1:02 PM on April 27, 2012 [1 favorite]


Can't we just agree that math to some degree is necessary in software development (as it is with any engineering discipline), and we can agree to disagree with just how much of it is necessary? And even if it doesn't directly relate to the code you're writing it can still help formulate your mind for analytic thought.
posted by Apocryphon at 1:06 PM on April 27, 2012


The result was a CS department which was a laughing stock

This is kind of a vicious cycle, because the students who really want to learn CS and can succeed in a challenging program are generally going to avoid signing up for a CS program that has a reputation for being terrible.
posted by burnmp3s at 1:19 PM on April 27, 2012


I think there's a difference here too between front-end software and back-end software. The latter requires mathematics. Math isn't just multiplying numbers. If you're trying to figure out if an LRU algorithm is the best way to manage your cache or how to distribute your users and resources optimally, you're doing math. The people writing the database applications and cloud applications and GIS computation software and vector models that everyone depends on, are using math.

Just because you can now show up and invoke a few arcane libraries and it all somehow works, doesn't mean that a lot of mathematics wasn't involved in laying the foundation for what you are doing. I know I'll start a war by saying this but its arguably the difference between 'programming' and 'scripting.' With the understanding that many of the jobs today may be in scripting. Although many of the senior-level jobs are probably in programming or in architecture.
posted by vacapinta at 1:26 PM on April 27, 2012 [1 favorite]


I find hippybear's story interesting because that's the other thing I've noticed: a lot of people working in tech are, to put it as nicely as I am able... stupid. I tell people I know who aren't in tech that honestly, most of the people I meet in tech aren't particularly bright, they just think of themselves as special because of the quirk of luck that landed them the jobs they've had (even though they think say coding on your free time is 'weird'; these ironically are the Randian Superman which I referred to earlier). In time, the bulk of these jobs will be so thoroughly demystified as to be "blue collar", but that'll be okay so long as we ensure the standard of living of the solidly-middle-class continues to rise.

On preview, kind of what vacapinta says, but I'd argue there's no shame in good scripting: you're automating something that used to be manual, this is kind of our destiny as human beings.

I've been talking with my boss about that a lot lately, as we look even at our own team and see people who are just fundamentally uninterested in things. We even half-jokingly suggest the next team morale event should be to drop acid, because good lord there seems to be a very strong correlation between people who will experiment with mind-altering drugs, and those who have the inquisitiveness and doggedness to be even half-decent programmers and technologists.

And it irks us to no end when people send plaintive mails saying things like "Such-and-such isn't working!" without apparently having even the basic idea of how to break down a problem into smaller parts, or do comparative tests (try a different browser/platform! etc). The number of people who can do basic thoughtful troubleshooting is apparently vanishingly small even in the world of technology. I take it as a truism that any programmer could write a Google or a Facebook- they would just likely take a much, much longer time to create it, and it would run much, much slower. But even if you've never spent even one day in a CS class, just doing any programming should make you think readily in terms of how you would structure things, how you would pass data around, where and how you would store/pre-populate certain types of data in a distributed system to meet the appropriate two of three properties of CAP theorem, and how even highly complex software suites can be just these simple operations when you focus in closely enough. Good design after all is going to keep components nicely "black boxed" and defined, so that you can zoom in on one component, make sure it's input and output are proper, and then you knit them all together into software behemoth. This is as true of a function as it is of a service as it is of an external dependency, right? This shit is literally common sense, but apparently it isn't common when it comes even to alleged programmer's.

My good friend Nate (molybdenum here) and I still meet regularly for brunch, and every week when we do we'll each bring some interesting problem we've been working on, and we'll talk/debate/discuss "How would you solve this?". When he was getting his master's in computational linguistics (because he's the smart one, I'm just the dummy hanger-on) I'd love when he'd pose some problem and I'd try to intuitively suss out how I would analyze two- and three- letter chunks to make sense of things, computational. Even though I'm dumb as a bag of rocks and had no idea what I was talking about, just letting my mind try it out... that stuff is fun! We'd talk about approaches to our every day jobs and challenges, and how they would work mathematically, even though with my threadbare knowledge of math meaning I have to talk in thumbnail notions of algorithms etc (and here, now, getting that mathematical background in algorithms and efficiency would be useful and practical, with the fertile ground of my past experience). And we kvetch about how dumb people are about seemingly obvious concepts in architecture and design, things that seem blindingly obvious to us just as a matter of spending a little time thinking. Not that there's always "one right answer", but it's amazing how people with fairly high salaries can think so poorly about things, or have so little introspection or contemplation.

All of which is to say that I still firmly believe technology is the most accessible field for autodidacts- but apparently a tiny number of people have the wherewithal to be that way, to be creative or thoughtful, or imagining how you could do something even better. The ones that do will thrive even more with a CS background, but the ones that don't... should probably not even get the CS degree, to just go get a generic "computer job". Or maybe most people just want the "magic answers" handed to them, and boop-beep-boop they get a six figure income for no good reason. And I guess with that mentality, the biggest advantage of the CS degree is as a gatekeeper to the "riff-raff", and not as an element of actual training, learning, or talent.
posted by hincandenza at 1:40 PM on April 27, 2012 [9 favorites]


Yeah, this is incredibly stupid and short-sighted for a number of reasons. One of these is that one of the major challenges for the next decade is going to be working with the huge amounts of data being generated in almost every industry -- not just in science, either, marketing loves this shit. If you want to work with this data efficiently, a basic understanding of algorithms, which he disparages as some kind of obscure arcana, is actually going to be really useful. That's setting aside learning anything interesting from the data, which is the province of machine learning and statistics (which I'm also sure he doesn't want his prospective programmers wasting their precious time with).
posted by en forme de poire at 1:40 PM on April 27, 2012


hincandenza, it certainly isn't limited to "tech". Too many people are "stupid", used in the sense of uninquisitive and uninterested (the only meaningful sense of "stupid", I think). hippybear's anecdote is depressingly familiar in the humanities as well. The answer I always give students who want to know "what [they] need to do to get an A" -- for those who bother to ask -- is that the only real requirement is to demonstrate that they've thought about the topic in a meaningful capacity. Which isn't the answer they want to hear, apparently, as they continue to ask for a list of benchmarks they can check off, which they think must secretly consist of the citations I want to see, formatting requirements, the argument I want them to make. I gave out one A this term.

And this attitude has a lot to do, I think, with the many arguments being made in this thread that in the Real World what matters is "shipping product", rather than inquiry. "Business", always loosely defined, is the entire horizon. I'm terribly pessimistic about the future.
posted by junco at 2:22 PM on April 27, 2012 [2 favorites]


Meh, I think most people (especially in corporate environments) are pretty checked-out as far as their work is concerned. They exist to occupy a desk and cash a paycheck. They have no great love of their work, which is why they often wind up with really boring jobs. I pretty much think of them as retired, even though they're technically still employed. I try really really hard not to look down on these people; as one friend has pointed out, looking to your work for self-actualization is actually a rather new concept. There's nothing wrong with just showing up and doing the minimal to get by so you can keep your boring, lucrative job and feed your family and make house payments. But I find these people intolerably depressing, and if I find myself surrounded by them, it's a good sign that I'm in the wrong place.
posted by Afroblanco at 2:27 PM on April 27, 2012


Junco, that attitude also is a result of too many teachers who pay lip service to inquisitiveness, but who base their grading on the citations and arguments they want to see. I wish more of my teachers had meant what they said, as you appear to.
posted by Longtime Listener at 2:46 PM on April 27, 2012


Yes, but how many students enrolled in a comp sci program understand that?

No, but as has been said several times already, if employers think that degree educated people don't meet their requirements then they should stop requiring degree educated people. The way to influence the market is not to bemoan things on the internet or other forum, it's to take your money elsewhere.

However, what I do requires very little math, and a WHOLE LOT of understanding of parallel computing and scalability.

I'm having a hard time understanding how that stuff doesn't require maths, what is this non-maths based understanding of parallel computing and scalability you have?

Transactional software, popping things in and out of databases and doing comparisons thereon. Mathematical stuff can be brought in either with a library or a few specialists.

Again, how are things being popped in and out of relational databases (I'm assuming) without any understanding of relational algebra? If you're popping things in and out of databases you're already doing mathematical stuff, and how good you are at popping things in and out is going to depend on what sort of grasp you have of that mathematics.
posted by robertc at 2:54 PM on April 27, 2012 [2 favorites]


why do top universities only let in the best and brightest with high test scores, critical thinking skills, and an already developed taste for learning? Shouldn't they be focusing on high school drop-outs and disaffected slackers?

I've actually thought this -- but that was because in (my experience), top universities offer more support and even out-right hand-holding to their students than do community colleges or state universities. In fact, it seems that the amount of support offered is inversely proportional to the preparation/skills of the students: community colleges are the toughest places, where there are no extensions and no exceptions, followed by low-ranking universities which offer a bit more support, and finally by top universities where extensions and exceptions and personal support was everywhere.
posted by jb at 2:59 PM on April 27, 2012 [1 favorite]


Another person here who goes "huh?" at the idea that basic linear algebra is "advanced math." (By basic, I mean through, say, diagonalization and statement of the spectral theorem.)

As far as MOST of society, fractions are advanced math. I took math through the end of high school and I've always felt very comfortable with arithmetic and simple algebra, but I have no idea what you are talking about when you say "diagonalization" or "spectral theorem".
posted by jb at 3:04 PM on April 27, 2012


I write very business-oriented code at my job and am frequently surprised at how glad I am to have a serious math background. You think you won't need these academic skills . . . and then you do.
posted by rossmeissl at 3:08 PM on April 27, 2012 [1 favorite]


Also partly the students, for wanting the easiest path possible to a degree and for thinking that computer science and programming is going to be like learning history facts or writing english papers.

hippybear: I totally agreed with your comment, until this sentence. Trust me, the kids who just want to learn history facts also get Ds (or Fs) in History classes, because that's not what studying history at the university level is (or at the high school level, for that matter).

As for the English papers - those things are so hard that I dropped out of English to take easier courses in History.
posted by jb at 3:10 PM on April 27, 2012 [3 favorites]


I'm not in CS, so I'm an outsider to this argument, but all I thought when I heard about the closure is that CS brings in So Much Goddamn Money to my school, Florida must have been doing it wrong. And to people saying "college shouldn't be a way for companies to get job training for free" ...what? Schools with good CS programs are receiving millions upon millions annually from tech companies left and right.
posted by victory_laser at 3:16 PM on April 27, 2012


Finally, my pure CSEE undergratuate experience and my academic post-graduate CS experience can be put to use (to rant in this thread).

My CSEE (Computer Science and Engineering) training had almost zero bearing on what anyone in the workplace cares about. We never used source control. We barely used C (this was over two decades ago, when Ada and mainframes were still current). We rarely worked in groups of three, let alone five or ten.

My training was terrible for almost any kind of modern programming.

CS in graduate school was actually more useful (in my final profession doing applied AI and generally grokking new things quickly). It taught me to think and reason from first principles. More importantly, the seminar classes were great training for learning new things very quickly.

My take away is this: you want to teach how to learn more than you want to teach any given technology, because professors will almost never be up on the shiny language of the past five years. And more importantly, that shiny language or platform may become a backwater when the Next Thing comes along.

my first course used PL/I. And boy did I learn a lot of Pascal. Not a huuuuge amount of demand for those. On the other hand, while I never use Lisp or Scheme in production, I think learning those languages was really useful in expanding my brain.
posted by zippy at 3:17 PM on April 27, 2012 [1 favorite]


And this attitude has a lot to do, I think, with the many arguments being made in this thread that in the Real World what matters is "shipping product", rather than inquiry. "Business", always loosely defined, is the entire horizon. I'm terribly pessimistic about the future.

Well, 'business' provides most of the jobs. and people want a well-paying job, because of the massive student loans debt they need to pay off. Now, I think that more of the cost of college should be picked up by taxpayers, but on the other hand I think college is absurdly expensive as well. Especially in this age of Wikipedia when there are so many free informational resources available that introductory knowledge of any subject is only a few mouse clicks away. Kindly note that I am not positing Wikipedia itself as the source of all introductory knowledge, but as a characteristic example of its wide and virtually free availability.
posted by anigbrowl at 3:18 PM on April 27, 2012


that attitude also is a result of too many teachers who pay lip service to inquisitiveness, but who base their grading on the citations and arguments they want to see.

And I always try to keep that in mind, although it can be difficult, because I do remember the poor teachers I had in high school and my first two years of college. Likewise, I always try to remember stressing over grades back then even as I'm telling students "not to worry too much about the grade, the important thing is to learn something". How to get across the idea that thinking deeply about the subject, and treating it respectfully, necessarily involves reviewing the literature, pondering it until you have an idea about it that isn't self-evident, structuring an argument logically, and writing it in a readable fashion -- that's the difficult part, and a question to which I don't currently have an answer. Too many students go off with my dictates, come back with an unreadable essay that's the product of about 20 minutes with Wikipedia and 2 hours of stream-of-consciousness writing, get a bad grade, and cry "but you said grammar / number of sources / MLA format / etc. didn't matter!" (not, to be clear, that I'm directing that at you in any way.) Some students get it, so I know it's possible, but I wish I knew the different paths they took before they got to me that ends up with such disparate approaches to "thinking".

Back on topic, though -- as a humanities type who never took math past trigonometry in college who now wishes he had and is trying (sporadically) to learn more in my spare time, basic linear algebra is, I agree, more immediately intuitive than basic calculus (but calculus is, in humanities-type language, more beautiful). Sort of back on topic.
posted by junco at 3:18 PM on April 27, 2012


I'm having a hard time understanding how that stuff doesn't require maths, what is this non-maths based understanding of parallel computing and scalability you have?

It's all just basic algorithm stuff. Performance analysis. Big O. MapReduce. Load testing. That kind of thing. Sure, there's math involved. But it ain't calculus (which I wasted 3 semesters on) or linear algebra (1 semester).

I feel like a number of people in this thread keep trying to drag me down into the reductio ad absurdum argument of "everything needs math", and yes, I need math in order to tell time so I know when to wake up in the morning, etc. That's not what I'm talking about. I'm talking about a specific type of math that may be useful to some, but isn't useful to most.

Point being, a university CS education should teach you a widely applicable skillset. Stuff "every developer should know". I would argue that calculus and linear algebra do not fit that description.
posted by Afroblanco at 3:21 PM on April 27, 2012


The last sentence applies to a trade school education, not computer science.
posted by flaterik at 3:24 PM on April 27, 2012


anigbrowl, I realize, like telling a student not to worry about their grade when I'm the one giving them, my wanting people to be more concerned about learning than future earnings potential is easy from my current position of "having a decently-paying job". It's entirely rational to be focused on the bottom line, when employers view a piece of paper from a university as a basic requirement now for jobs in the wage-slavery category -- those there are left, anyway -- let alone "real" jobs, and when tuition prices have far outpaced inflation, and everybody apparently has to take out massive loans. But I hate this empty culture that has made it this way, and gutted our passion for learning for its own sake, culture, the arts. We used to care about those things. Higher education also used to be much more difficult to gain access to, and far, far more people lived in crushing poverty. I don't know the answer.

I'm posting too much in this thread, I think, but it's given me a more-anonymous outlet than I usually have to talk about this issue, which I've been thinking about a lot recently.
posted by junco at 3:31 PM on April 27, 2012 [1 favorite]


I feel like a number of people in this thread keep trying to drag me down into the reductio ad absurdum argument of "everything needs math"

Firstly, if you keep saying things like "your job doesn't require maths" when what you mean is "your job doesn't require calculus" you'll keep seeing those arguments.

Secondly you're in a difficult position to say whether or not you need to know calculus or linear algebra to do your job because you have studied both. Can you really be sure that you didn't build any capacity for abstraction or other modes of thought through those studies that has since been part of making you good at your current job?
posted by robertc at 3:51 PM on April 27, 2012 [2 favorites]


My last post should've included the fact that I think a trade school type education is probably a better fit for a large number of people, and I wouldn't discriminate against someone that had that on their resume.

I am much more a KNOW ALL THE THINGS kind of person who never grokked why people were groaning about "when am I going to need to know THIS?" and I think my education benefited my greatly in life. I think it'd better if more people had the physics and chemistry backgrounds that everyone who goes through HMC does. But you can't force someone into being interested in knowing things for the sake of knowing things, and it'd be better to teach them the things they're motivated to learn.
posted by flaterik at 3:53 PM on April 27, 2012



Can you really be sure that you didn't build any capacity for abstraction or other modes of thought through those studies that has since been part of making you good at your current job?

This guy apparently needed calculus to do his job...
posted by Pogo_Fuzzybutt at 3:55 PM on April 27, 2012 [2 favorites]


But I hate this empty culture that has made it this way, and gutted our passion for learning for its own sake, culture, the arts. We used to care about those things. Higher education also used to be much more difficult to gain access to, and far, far more people lived in crushing poverty. I don't know the answer.

I don't buy the idea that our culture has gutted our passion for learning for its own sake. You can do a great deal of learning for its own sake with books and other media and nonacademic study. I started studying law because I had been reading judicial opinions for pleasure. Higher education used to be difficult to gain access to because there were stricter academic barriers in place. In the attempt to make it equally accessible to everyone regardless of their ability or aptitude, the cost has gone sky-high instead, which is a big reason I've stayed outside the conventional education system even though I think I'd enjoy an academic lifestyle and it would suit my talents quite well - I learn material for myself by teaching it to an imaginary class as I study it and conducting my own low-rent form of Socratic inquiry.

I mean, if you don't think students should be worrying about grades then stop giving grades. If your employer requires you to issue grades, then move to a school that doesn't, or get together with other like-minded academics and rent a building and set up your own school. Yes, that's much easier said than done, but as long as you're getting paid to teach students who are going to graduate with the same amount of debt as the price of a small house, it's unavoidable.

I have to tell you that my experience is that employers don't require a college degree, they use it as a filter to identify likely candidates. If you can find another way around the filter and you're sufficiently smart and eager to work, the lack of a college degree isn't necessarily a major barrier. The government is as much to blame here as the private sector; I'd say it's much easier to get hired in the private sector without a degree than it is to get an equivalent job in the government.
posted by anigbrowl at 3:57 PM on April 27, 2012


Firstly, if you keep saying things like "your job doesn't require maths"

Actually, I never said that. I may have said that my job doesn't involve advanced math, and I still hold that to be true. And actually, if you look at my original comment that touched this off, one of my suggestions was to develop a math curriculum specifically for CS undergrads.

I think the current math requirement is a holdover from the days when math was pretty much ALL computers could do. Sure, CS may have started as an outgrowth of the math department, but we're way past that at this point. You can do a lot of really interesting things and never know any calculus.

At this point, forcing CS undergrads to take a whole bunch of advanced math is, to my mind, forcing them into a specialization that they may actually have no interest in. For example, if I'd had the option to take those 4 semesters of advanced math and, say, specialize in bioinformatics instead, that would have been a lot more interesting and useful.

Just because someone doesn't dig on calc doesn't mean they belong in trade school.

Anyway, I'm gonna depart this thread for a while because I feel like I'm monopolizing the discussion here.
posted by Afroblanco at 3:58 PM on April 27, 2012


I know I'll start a war by saying this but its arguably the difference between 'programming' and 'scripting.' With the understanding that many of the jobs today may be in scripting.

As a total non-programmer who occasionally writes text processing/NLP scripts in Python, I've actually become keenly aware of this distinction recently and I embrace it wholeheartedly. I do no desire, at this stage in my life anyway, to gain a deep understanding of the mathematics underlying of algorithmic complexity or the formulas for TF-IDF indices or whatever. I need to process text. In general, I'll take the output of CS minds and code with it.

Sure, if you're developing groundbreaking new applications to solve difficult, exciting problems, better know your math. I reckon that many people, though, just want to accomplish a task and move on.
posted by stroke_count at 4:02 PM on April 27, 2012 [1 favorite]


As far as MOST of society, fractions are advanced math. I took math through the end of high school and I've always felt very comfortable with arithmetic and simple algebra, but I have no idea what you are talking about when you say "diagonalization" or "spectral theorem".

There is no reason for you to know these terms if you never learned any linear algebra. Linear algebra has relatively little connection to the algebra taught in high school.

It's also a pretty and elegant branch of fundamental mathematics that pops up all over the place in applications.

By means of drawing a connection with high school algebra, one big question linear algebra is concerned with is whether n linear equations in m different variables have a solution. It quickly turns out that under some circumstances they always have a solution, under others they have a single unique solution, and in the remaining cases they have no solution.

More generally, linear algebra is the study of linear operators, which are a kind of relationship between inputs and outputs. Linear operators are often realized as matrices, which are often thought of as arrays of numbers. The idea of a matrix is thus both intuitive and commonplace.

Matrices act on things called vectors, which can be thought of sets of coordinates in some kind of space (intuitively, 2D or 3D space, although it's very easy to extend to abstract n-dimensional spaces).

In 2D and 3D space, operations like scaling, reflection, and rotation are easily operationalized as the action of a matrix on one or more points. In a more abstract mode, operations like integration or differentiation of polynomials or the transformation from a signal into its frequency spectrum are also easily conceptualized as the action of matrices on vectors in some abstract space.

One magical thing about matrices (and the linear operators they represent) is that complicated operations can, in certain cases, be analyzed as combinations of much simpler operations. In particular, some operators have invariants, which are vectors that react in very simple ways to these operators.

If an operator on n-dimensional space has n invariants, you can set up a coordinate system for your space that turns your complicated operator into a simple zoom or contraction along your new set of axes. This is called diagonalizing a matrix.

Khan academy has a good set of videos on linear algebra. People who dislike the fiddly number-crunching of calculus may find the computational straightforwardness of linear algebra to be a breath of fresh air. For many students, the subject also offers the first exposure to formulating conceptual proofs, which encourage conceptual mastery, ingenuity, and intellectual flexibility. As a bonus, a lot of basic results in linear algebra are both highly intuitive and elegant. If you've ever read Flatland and liked the idea of higher-dimensional space, you may find linear algebra inherently fun to think about.
posted by Nomyte at 4:25 PM on April 27, 2012 [7 favorites]


Sure, if you're developing groundbreaking new applications to solve difficult, exciting problems, better know your math. I reckon that many people, though, just want to accomplish a task and move on.

I'm willing to bet that the physics modeling in something even as silly as Angry Birds required a level of math knowledge which is well above "how many square feet of carpet do I need for my house". And that's a pretty good example of programming on the "accomplish a task" level, I think.(The task being, make a game people want to buy.)
posted by hippybear at 4:31 PM on April 27, 2012 [1 favorite]


MattHowie: I think "applied computer engineering" is a much better term for people pumping out iOS and web apps, which is where the vast majority of growing work is out there.

Please allow me to strenuously object to this. I actually hold a computer engineering degree, and I was taught how to make computers.
posted by newdaddy at 5:03 PM on April 27, 2012


For many students, the subject also offers the first exposure to formulating conceptual proofs, which encourage conceptual mastery, ingenuity, and intellectual flexibility.

I hear those things are handy for programming.

Actually, I never said that. I may have said that my job doesn't involve advanced math, and I still hold that to be true.

My initial comment bristled at the characterisation of linear algebra as advanced math. Where I was an undergrad, the discrete math stuff you mentioned earlier was in a course numbered 55. Basic linear algebra was 54. Multivariable calculus was 53. Now, it's hard to divine much meaning from course numbers, but, in this case, it's really not a stretch to imagine 53, 54 and 55 are roughly the same level. They may well have been a required sequence (in order) at some point. (When I took 55, it was notable for a total absence of math majors other than me. It was absurd. I believe it's now required.)
posted by hoyland at 5:06 PM on April 27, 2012


Please allow me to strenuously object to this.

Yeah, that sounds more like software engineering than computer engineering.
posted by hippybear at 5:07 PM on April 27, 2012


Actually, I never said that. I may have said that my job doesn't involve advanced math

Actually what you said was:

what I do requires very little math

When I asked you what these other things you do which don't require maths you listed a load of things which do require maths. I can understand that you meant to say "advanced maths" or "calculus" but this is what you said, if you're unsure you can just scroll back and look.

My initial comment bristled at the characterisation of linear algebra as advanced math.

Surely any sufficiently advanced maths is indistinguishable from magic?

Sure, if you're developing groundbreaking new applications to solve difficult, exciting problems, better know your math.

This is a false dichotomy. Quite normal and run of the mill applications require some understanding of maths. Some groundbreaking new applications have been quite normal and run of the mill underneath.

Please allow me to strenuously object to this. I actually hold a computer engineering degree, and I was taught how to make computers.

Quite. We already have a term for the discipline of engineering software, we call it Software Engineering.
posted by robertc at 5:51 PM on April 27, 2012 [3 favorites]


If that's the point of an undergraduate degree, then why do top universities only let in the best and brightest with high test scores, critical thinking skills, and an already developed taste for learning? Shouldn't they be focusing on high school drop-outs and disaffected slackers? At least in my experience, the students that perform well in college and get the most out of their education are the ones that already have an advantage over most of the population in those sorts of areas. If you don't figure out how to think critically and don't have a taste for learning by the time you're 18 then you're either not going to go to college or you're not going to do that well there. If undergraduate programs were actually about any of those things rather than serving as one long examination of the student's abilities then they would have to be completely redesigned from their current state.

Because that's not the point of an undergrad degree. Your BS or BA in whatever is your societal pass. You are making an in practica analysis, talking about implementation. I am talking about specification. None of this is inconsistent.
posted by polymodus at 7:56 PM on April 27, 2012


Well first of all, as dozens have noted, this guy is pitching a solution and definitely has a personally-incentivized axe to grind.

That said, I've been in Softwareland long enough to see Ph.D's with groundbreaking (on paper) thesis be absolutely demolished in real world productivity by folks from two year schools.

The analogy I often use, if you want to work with databases, you don't need a CSci. degree any more than a doctor would need a biophysics degree. Medicine is applied biophysics, but day-to-day, it's much more about things like patient care and understanding protocols and bedside manner, vs. being able to sketch out binding curve energies, etc.

I am frequently involved in hiring decisions, for a big company. I place far more weight on 'What's something interesting you've built?' vs. 'Tell me about your research.' I'm sure for high-end-low-level stuff, the opposite is true.

Either way, I can personally attest that there's a huge mismatch between what I've seen C.Sci grads expecting their role to be vs. what it actually is. I don't think codelessons.net or whatever is the correct solution, however.
posted by mrdaneri at 8:36 PM on April 27, 2012


Your BS or BA in whatever is your societal pass.

Or, if you went to a school with a good program that you were engaged with, where you learned quite a bit of the fundamentals that make you a good professional. It's not all dismissible out of hand.

That said, I'm with mrdaneri on hiring, and I'm actually very wary of people that have spent a long time in academia, because I've had some... less than pleasant... experiences with them professionally.
posted by flaterik at 8:43 PM on April 27, 2012


TL;DR: I don't think any universities need to shut down any compsci programs. The core amount of academic material students need to learn can be taught at any school by anyone. It's important to remember that differences in quality of the students' academic, extracurricular, and social preparation lead them to seek institutions which are a good fit for them.

For example, think about the UChicago/MIT/CalTech vs Ivy/Stanford debate amongst elite, college-bound h/s students; both groups are smart and get SAT scores above 2100. Students who enjoy research, learning for the sake of learning, who aspire to acquire a theoretical framework to apply to novel problems and academia tend to pick the former whereas students who aspire to lead or control the researchers usually tend to end up at the latter. This makes sense because students at Ivies, Stanford, and maybe Duke/Northwestern are selected for their social and extracurricular competency in addition to their academics whereas those at nerdy, grade deflated, tough schools tend to be selected for their academic merit. Say you compare a student at Chicago with one from my school, Penn; the Chicago kid spends all of his time learning algorithms and cramming for lin alg exams whereas the Wharton kid studies enough to get a 3.7+ and spends the rest of his time expanding his internet startup. Follow up with both students ten years later, after they've graduated and I can guarantee the Penn guy will be outearning the Chicago guy ten or twenty fold because the latter lacked the social skills to succeed in a world run by Ivy/Stanford grads due to his middle class striver mentalities.

Outside of the top 30 or so schools, average SAT scores drop dramatically, students are generally dumber, and extracurricular abilities/interests are noticeably absent. The tier 2 state schools offer training to students who will occupy positions in middle management and the tier 3 schools/community colleges assist those at the very bottom of the socioeconomic ladder. This meritocracy is as it should be: students earn their college admission based on a combination of their work ethic, chutzpah, and social skills and the schools, in turn, react and adapt their curriculum based on the quality of their student body.

(Personal experience: I once attended a state school and I am now matriculated at an Ivy, so I know just how motivated a student has to be to prepare for real world, bureaucratic BS by running startups that are competitive with those of Ivy students.)

The long and short of it: motivated students can still prepare for real world, compsci bureaucracy by running their own startups, improving communication skills, and as an extracurricular activity to compete with students from peer schools...where it will be a long, difficult journey.
posted by lotusmish at 8:45 PM on April 27, 2012


Big O. MapReduce. Load testing. That kind of thing. Sure, there's math involved. But it ain't calculus (which I wasted 3 semesters on) or linear algebra (1 semester).

I'm not trying to "gotcha", but I honestly can't think of a more direct application of the theory of limits (i.e. the calculus) than Big O analysis. I think robertc has a good point when he suggests that you may have internalized more mathematics than you realize or give yourself credit for. But I do think you make some good points, if not about the relevance of maths, then at least about the pedagogy of math education.

For instance, the problem with linear algebra is that it has too many applications to be taught in a cohesive manner. As a pure subject, concepts from linear algebra (like a vector space) are absolutely fundamental to almost all modern mathematics (is there an area of math that doesn't use vector spaces?). As an applied subject, the machinery of linear algebra is fundamental to our ability to relate numbers to natural phenomena, and hides behind pretty much every quantitative analysis ever. The matrix may seem like an arbitrary object at first, until you realize that there is no other way to represent information, and all data is literally some kind of matrix (of course that includes any representation of information on a computer, which is why the CS department tries to get you to learn linear algebra).

But there is a danger of information overload when learning these kind of subjects. CS students should be taking courses explicitly entitled "Linear Algebra for CS", just like premed students take "Calculus for biologists" and business/finance students take "Calculus for business". Why linear algebra isn't split up the same way as calculus is beyond me. What happens instead is that math departments rightly identify linear algebra as the point at which to introduce math students to a higher level of abstraction (my linear algebra class could've been subtitled "an intro to proofs"). CS and other students suffer through unnecessary abstraction as a result, and the whole system gives linear algebra a bad name, which is a damn shame, because that shit is awesome.
posted by grog at 11:21 PM on April 27, 2012 [3 favorites]


why do top universities only let in the best and brightest — burnmp3s

students generally don't want to learn the concepts, they want to be handed recipes — Hippybear

Question, meet answer.
posted by erniepan at 3:27 AM on April 28, 2012 [1 favorite]


CS students should be taking courses explicitly entitled "Linear Algebra for CS", just like premed students take "Calculus for biologists" and business/finance students take "Calculus for business".

That's how the maths at my University was split up. It was unusual in the UK (so I was told, I only went to one University) in that all maths was taught by the Mathematics Dept., in other universities the Physics Dept. (for example) would teach their own maths. But there were three different maths courses in each of the first to years: A, B & C (IIRC, though it was a while back now!). The A maths courses were for people who were aiming to do a degree in Maths or Theoretical Physics, the C maths courses were for engineering and CS students. I can't remember what the B ones were, possibly statistics based. The only requirement for the CS based degrees was that you take a maths course in each of the first two years and pass it. The really clever folk could do advanced maths if they wanted, or you could do a more limited curriculum specifically for CS.
posted by robertc at 7:27 AM on April 28, 2012


One of the most pressing problems that humanity has today is obtaining clean drinking water. Yet no university has a Department of Water. Why is this?


Stanford has one of the best programs focused on bringing clean drinking water to the developing world. I don't think this guy knows much about things.
posted by chevyvan at 10:29 AM on April 28, 2012


More Trolls Should Shut Down Their Blogs
posted by speicus at 10:53 AM on April 28, 2012 [2 favorites]


wouldn’t it make more sense for UCLA and Cal State LA to have a single, combined computer science program?

The hate-on here for this concept makes less sense if you look at his example. He's not talking about Harvard and MIT being within walking distance; he's talking about two California public schools, one a university and the other a second tier state college.

It makes a lot more sense that the Cal State school probably doesn't need a CS program; students who want to study at that high level will be at the university.
posted by msalt at 10:42 PM on April 28, 2012


Cal State LA is part of the California State University system, which has many campuses, just like the UC system, and which offers a number of graduate degree programs, just like the UC system.
posted by rtha at 10:57 PM on April 28, 2012


Yes. Institutions always want to grow, that's their imperative. Colleges and hospitals never shrink, they take over their neighborhoods like a cancer. But that's not necessarily a good thing, and the fact that both have had double-digit inflation throughout a recession is not a coincidence.
posted by msalt at 2:48 AM on April 29, 2012



"Yeah, I'm sure a site that serves millions of hits daily doesn't care about things like algorithm efficiency at all."

I'm sure they care about those things quite a bit, but at the same time whether they need all of the folks working on interface stuff to care about it is another question. Not everybody is doing architecture work; for every person making a significant decision about algorithmic efficiency you're going to have plural people doing implementation or maintenance where that decision-making is less of an issue.


I have a strange relationship with computer scientists. On one hand I resent them a little because their degree seems to offer some kind of klout and I think I would have such a degree if the CS department at my university had been more supportive and less dog eat dog. Occasionally I feel like my self esteem would be immensely boosted if I got that degree, but the few classes in CS I took as an undergraduate were SO MISERABLE that I just can't imagine enduring it. I compare that to my experience with evolutionary biology, where my professors and other students have been very supportive and accommodating. In CS if you get behind, it's your fault because you are dumb and you just couldn't cut it and CS is for the elite and you don't belong here. In ev bio if you get behind it's just not a big deal and it's easy to get help without ridicule.

On the other hand, there are some complex engineering problems they do better at because of their intense mathematical education. And it's a total waste of time to have them fixing cross-browser CSS or writing documentation, so there is lots of room for people like me who might not have that sophisticated math, but who are perfectly capable as support staff.
posted by melissam at 5:12 AM on April 30, 2012


A bit late to the party, but --

Afroblanco: And linear algebra? Such a waste of time. Such a complete waste of time. I've never used any of it, never want to, never will.

Afroblanco: For example, if I'd had the option to take those 4 semesters of advanced math and, say, specialize in bioinformatics instead, that would have been a lot more interesting and useful.

I am a faculty member whose research and teaching is in the area of computational biology. I will tell you right now that you'd need to know linear algebra inside out for bioinformatics. It is impossible to meaningfully discuss bioinformatics algorithms without being conversant in linear algebra, and it would be impossible to teach a meaningful CS specialization in bioinformatics without it. Consider: even algorithms as old and basic as Smith-Waterman involve matrix manipulations; statistics -- which is utterly crucial to bioinformatics! -- relies heavily upon linear algebra; and you'd be hard-pressed to find any novel algorithms (eg, scan the articles in Bioinformatics) that do not require matrix algebra. grog makes a very good point about teaching linear algebra in a more targeted way, but attempting to provide a CS specialization in bioinformatics without any linear algebra whatsoever would be a profoundly ignorant disservice to the students, the program, and the field.
posted by Westringia F. at 9:39 AM on April 30, 2012 [1 favorite]


« Older Zerg Rush...  |  A trip through the microphone'... Newer »


This thread has been archived and is closed to new comments