Professor Questions Sink-Or-Swim Intro To CS Courses 606
theodp writes "After having taught introductory programming (CS 1) for the past six years,' writes GVSU's Zack Kurmas, 'and having watched many students struggle through this course and the subsequent course (CS 2), I have come to the conclusion that it is absurd to expect students who don't have any prior programming experience to be well prepared to study Computer Science after a single 15-week course (i.e., CS 1). I believe that expecting a student to learn to program well enough to study Computer Science in a single 15-week course is almost as absurd as expecting a student with no instrumental musical experience to be ready to join the university orchestra after 15 weeks.' Kurmas' frustrations are not unlike those voiced by Physics professor Dr. Yung Tae Kim, who argues the up-or-out, one-size-fits-all rigid pace approach to learning set by teachers and administrators is as absurd as telling a toddler, 'You have ten weeks to walk, and if you can't, you get an F and you're not allowed to try to walk anymore."
WHy are you majoring in CS... (Score:5, Insightful)
If you didnt already begin in a high school class, or at the very least on hobby projects?
Re:WHy are you majoring in CS... (Score:5, Insightful)
I know! Would you trust a doctor who, at the age of 15, wasn't operating on his pets?
Re:it's actually useful. (Score:5, Insightful)
OK, so because we've always done it that way, it must be a reasonable way. Nice appeal to tradition. Perhaps we should admit that it's unreasonable to expect that students taking an intro course to have experience. Call me naive, but I always assumed that introductory courses were intended for those without experience to gain some before getting into the more difficult coursework.
Expect it? (Score:5, Insightful)
We had a particular course module at uni, which after 3 weeks expected us to be experts enough in C (and in *NIX type systems) such that we could properly start the actual course which was about Systems Programming in *NIX.
I think it's expected especially in this vocational line that you have to pick up the pace and learn stuff quickly enough. If you're starting a new job and they use a technology which you never heard of - you need to pick it up.
So I disagree. The faster they get to the idea that you're going to be thrown into the deep end - the better they'll be in the end.
It's not the Curriculum!!! (Score:5, Insightful)
The problem isn't the program, the problem is the students. Essentially, they come to University ill prepared and pay the price (i.e. high-schools are no longer doing their job).
However, when it comes to CS, there is a specific issue that must be brought up. Namely, that students think that Computer Science equals computer programming. Anyone that has studied both can say that they aren't even remotely the same. So, it's no wonder the students fail. They think they'll be learning to be programmers, and then get nailed with an Applied Math.
The solution here isn't to change the curriculum. But, rather to inform students what they will learn at a University (Academia) v.s. Applied Colleges (they're called Colleges in Canada, not sure what they are called in the US) v.s. trade schools, etc. Then send them in their desired direction.
In other words, University professors, stop becoming part of the education problem, think and become part of the solution.
Re:WHy are you majoring in CS... (Score:3, Insightful)
Re:WHy are you majoring in CS... (Score:5, Insightful)
Would you trust a doctor who went to university never having taken biology at school? Well, maybe, if he managed to graduate, but I wouldn't expect him to pass. Pretty much any medical degree in the UK will require A-level biology (no idea what the US equivalent is). Unfortunately, most computer science courses have very few fixed prerequisites. A lot don't even require maths, because A-level maths is mostly calculus, which is irrelevant to 90% of computer science, and completely omit things like graph theory that are absolutely fundamental.
This is a real problem when trying to design a curriculum. You can't expect the students to have been taught programming, because most schools don't have anyone who's competent to teach it. Some will have taught themselves stuff (and probably picked up some bad habits along the way), some will not. The ones who are self taught will be bored for at least some of the first year, since everyone else will be catching up. Worse, they often assume that the fact that they already know some of the material means that they already know all of it, and get a nasty shock at exam time.
The real solution is for schools to employ people who are competent to teach programming, and for universities to make this a prerequisite, but I doubt that will happen.
Bah humbug. (Score:4, Insightful)
Programming is easy for people who will be good at programming. It requires being able to take a solution to a problem and arrange it into a set of instructions. If you can't do that by the time you get to college, and especially if you can't do that after 15 weeks of intro, you're not going to learn it in college, because the problem isn't that the student doesn't have CS experience; the problem is the student doesn't know how to solve problems and write down the solution.
That's not something that a HS grad who doesn't know it already is going to learn.
A Better Way to Look at That Angle (Score:5, Insightful)
If you didnt already begin in a high school class, or at the very least on hobby projects?
I think this is the wrong way to approach a defense of these practices. Computer Science (CS) gets made fun of a lot ... or at least it did when I was in it. "What's the matter, couldn't you handle an actual engineering major like Computer Engineering or Electrical Engineering?" And, you know, those course paths are tighter in the electives area (I should mention I went to school at the U of MN in case it's different elsewhere). Anyway, CS has many dimensions to it. The foundation is mathematics, statistics, algorithms and logic to name a few without getting into theory like automata. After all that, you have what I'll call the "cosmetics" (for lack of a better word) which are what the flavor of the year is for most popular language. Now it's either Java or Ruby but when I was in undergrad, it was C++ and Java. And there was PHP for web, MySQL for Databases, etc. And I think the reason we need to keep the weed-out course structure is that it was fun for me to learn Ruby on Rails on my own. It was an adventure I enjoyed (albeit a ridiculously easy adventure). And if you're going to be in CS, you need to have the attitude that the cosmetic stuff either comes naturally to you or is something you do in your free time. When I took my Java course, I had already worked through java.sun.com's tutorial "pathways" online and knew what all the keywords were in the language and why we use them ahead of the course. To learn recursion with this background was fairly trivial. Honestly, I don't remember learning much else in that course. And I think that's why it's important to keep that minor level of entry. Because people who have a passion don't want to have to go through course after course of learning a language or basic programming so that they can get to the good stuff.
... and I have no clue if that developer learned C in college and thinks they'll never need to know another language. A lot of my free time is spent experimenting with new languages that I'll often never use professionally and I think it makes me a better programmer. To try to identify an unwillingness to do this in 15 weeks might be saving a lot of people a lot of time and money. And maybe even protecting them from unemployment later in life.
And those languages are a dime a dozen and they could change at the drop of a hat. As time goes on, there's only more implementations to choose from. When I went through college, functional languages were almost dead. And now Ruby is more functional than object oriented and I use it daily. So I'm glad I got to the theory instead of ever being forced to take a course on how to code PHP or how to set up JDBC connectors. But in my later courses, they demanded that implicitly in order to fulfill understanding the functionality of a transactional RDBMS.
I think it's actually a very kind thing to say after 15 weeks: "Hey, if you don't play around with this stuff in your free time, what are you going to do when we teach you Java and five years later you need to sink-or-swim learn Ruby?" Because that's exactly what happened to me and sometimes I come across much older developers that say "Pshaw, Ruby, who the hell would want to code that? I can write the same thing in C and it's fifty times faster." And they're right but they fail to see that my manager doesn't care about speed, they care about maintainability (it's often running on top of a VM anyway)
When you're a CS major, your learning should never stop or you will be quickly unemployed. That might be true with other majors but I've heard people brag they haven't picked up a book since college. Did I find it wrong or unfair for my university to engage in these practices? Maybe when I was in college or maybe if I had only ever been in academia but now it doesn't seem so harsh.
When people tell me they want to code as a hobby I usually say: "T
Re:Is IT/CS/... not easy enough already? (Score:2, Insightful)
But, not everyone can be brilliant. Isn't one of the purposes of education to teach people, even so-so ones, a job ? To paraphrase my friend cap. Obvious, not all programmers can be above average.
Comment removed (Score:4, Insightful)
Re:WHy are you majoring in CS... (Score:5, Insightful)
WHy are you majoring in CS... If you didnt already begin in a high school class, or at the very least on hobby projects?
Not all high schools have computer science-y classes. And not all prospective students have the kind of resources necessary for hobby projects.
Re:Is IT/CS/... not easy enough already? (Score:5, Insightful)
Universities are there to preserve and advance the knowledge of humanity.
Re:WHy are you majoring in CS... (Score:4, Insightful)
Heck, when I took Comp Sci 101 my freshman year in college, it was 1983 and there were no high school programming classes. I did fine. And if I hadn't.... isn't flunking an intro class usually a reliable sign that it's not a good subject for you? If you really want to challenge yourself by studying something you don't understand easily, go ahead and retake it. But you'd probably be better off finding a field you'd be naturally good at instead.
Forget the trees, the forest is burning. (Score:5, Insightful)
Cramming 150 kids into a lecture hall with a "mathematician" who wasn't smart enough for the math department, who has never written software for a living and doesn't natively speak the language of most of his student body, and who disappears at the end of the class, shoving his students towards some grad students when they have questions... Where the "teaching" involves reading pages from a badly written $300 book, and then having exactly two interactions with the class: "Midterm" and "Final..." And where in many schools the dirty little secret is that the curve takes the average "D" or "F" up to a "C..."
Aside from a few top schools (who do their best filtering with the SAT, or heaven forbid, other parts of the application), this is the reality of undergrad CS (and these in particular are all true stories). I don't see why you'd waste time on the finer points.
The entire academy in the U.S. is collapsing. Yes, the pipelines for the few moneymaking careers left in society are still somewhat functional (finance, law... medicine, somewhat), but in many other places, the tornado of American societal collapse has passed through. More and more of the marginal schools and departments have essentially opted to become high-gloss degree mills rather than go gently into that good night. The scam is the educational equivalent of shitting where you sleep - only one generation of undergrads is going to get themselves bilked for $200k of student debt for the experience described above, let alone when most of their degrees "prepare" them for a future career lacking any hope of paying it back.
Computer science is still a white collar job in the West for a little longer, but it lacks a professional trade group giving licenses and setting educational benchmarks. And that leads us to the punch line. The C.S. degree isn't even needed for finding work. Anyone with good code to show from their own efforts, especially success in the open source world, will get a job today, and with a few resume lines no one is looking further down. And that, by the way, is because (aside from those top schools, and often even then), they know a degree is worthless as a predictor of quality.
I guess you can ignore all this and still decide philosophically whether you think CompSci is like medicine or even like plumbing, where there is some effort to make it difficult and filter out the riff-raff... or it'll stay just another joke degree.
Re:WHy are you majoring in CS... (Score:5, Insightful)
CS is not programming, CS is a field of math, so taking all the courses in math is wayyy more relevant than anything else.
Programming itself is just syntax, logic, and a good sense of structure and style. Which you can acquire in any engineering design course: there is more resemblance between a well-designed engine or structure and a programme than you'd believe.
Also, if you are doing CS with the goal of becoming a code monkey/senior designer/something in between you must understand that the knowledge around the code, the engineering, science, accounting, etc. is what will allow you to code the things which do what they are supposed to. The requirements will not be in terms of programme structure, but in terms of require functionality in the relevant domain.
Re:WHy are you majoring in CS... (Score:2, Insightful)
We were far from wealthy. As for the qbasic, all that required was access to a computer capable of running DOS. Even at the time that wasn't exactly a luxury.
Prove you weren't affluent. I don't know how many times I've seen on slashdot some guy saying they had their own DOS machine in the 80's and say they weren't affluent, and then mention their Dad was an engineer who got them a unix shell account on their workplace computer when they were 11 or something like that.
Re:Forget the trees, the forest is burning. (Score:5, Insightful)
"The C.S. degree isn't even needed for finding work." You are partly correct.
What you should have said was "A C.S. degree, unless it's from a fairly well regarded program, has nothing to do with you getting hired for a programming job." Any good shop will make you code as part of the interview, and most people from lower-end schools CS programs come out not being able to code at all.
I would say that it in fact hurts you in your attempt to get a job, but not because people see it and are repelled. The problem is that CS is a job degree. It's not science. It's like going to a technical school and studying wielding or diesel truck repair. It implies that
a. you were worried about getting a job after college, which implies a lack of self confidence in the first place, which is an indicator (though not a perfect indicator) that you were substandard in the first place.
b. you spent 4 years in a college or university, where you should have been learning to think and write and popping around subjects learning about the world, and instead you spent the bulk of your classes learning about something which comes easily to people who do well in the field. That wasn't very clever, and points back to item a, and means that in the interview, you're not a very interesting person.
CS is a white-collar job, and so it's important that the people who do it go to college. Instead, CS grad from lower-tier schools come out with "a college degree" which is only really a third of a college degree.
You're right that the forest is burning. The problem is that we're trying to turn colleges into vocational schools. They're not. They're supposed to tech you to be a Renaissance man, or at least to be smart and to think and write and know about a lot of things in the world. Vocational schools are different. Primary education is a vocational school. The fact that we're destroying our colleges and universities is directly related to the collapse of our primary education: we're expecting higher ed to pick up the slack, which means that it can't do what it's supposed to do.
Re:WHy are you majoring in CS... (Score:4, Insightful)
I do agree with you nowadays, but back when I was in school (late 80s) it was still unclear at a lot of universities what computer science was exactly. Some departments marketed themselves as programming factories, others as an adjunct to the math department, and still others got it right. As an uninformed high schooler back in the day it was easy to believe that programming == CS.
If I could do it all over again, I'd have gone to a school with a very strong MIS program and minored in computer science. I think this would work for a lot of business developers as you'd get enough about how the machine works along with domain specific knowledge. The major nowadays that rankles me is "Information Technology," which evidently (where I live) means "drag and drop shit into Visual Studio then connect it via ADO.Net to SQL Server". I view that program as basically the equivalent to a BS in "Data Processing" from the 70s.
Re:Is IT/CS/... not easy enough already? (Score:5, Insightful)
You can train nearly everything, but training does not make you good.
Errr... yes it does. Or were you always a good driver / writer / programmer? Training is exactly the process of making someone good at something!
Don't make IT/CS easier. Make it harder, please.
Ah, the predictable "pull the ladder up after you've climbed".
Re:Reading, counting to 100 and other difficult ta (Score:5, Insightful)
That is moronic. You deserve an F for not learning what the course aims to teach you in advance of taking the course? FUCK THAT. Why take the course then?
Re:It is GOOD they won't be ready. (Score:4, Insightful)
Funny, I thought the course was suppose to help you learn the material, not assume you'd already learnt it and fail you if you haven't. Silly me.
Re:WHy are you majoring in CS... (Score:5, Insightful)
Frankly, you're missing the point.
As a professional programmer, you will be learning throughout your entire career. You will be re-training yourself constantly and unendingly.
Those who teach themselves to program (ie: the majority of good programmers) are the ones schools need to focus on, and teach them to program *really well*.
If you haven't learned *any* programming because you say "There wasn't a class". Then you should probably forget about it. You're not going to make a good programmer, because you sound like the kind of person who only learns from classes. And that's likely to be a very major problem for you in your career.
Re:Forget the trees, the forest is burning. (Score:5, Insightful)
Re:Forget the trees, the forest is burning. (Score:5, Insightful)
Ah, the H1-B. Purpose-designed to destroy the US skilled labor market, by ending the centuries-old "give me your skilled, your intelligent, your yearning to be economically productive" liberal immigration policies that made this nation great, and replacing them with a regime that allows smart foreigners to come to the US for education and a few years of on the job experience, then forces many who would gladly stay in the West to return to their currency-debased homelands, where they compete more effectively for the same work, at pennies on the dollar.
You can thank the brass at IBM, Oracle, CA and a few other leading tech companies for this ingenious economic ass fucking. We used to brain drain the world. Now it's yet another group of American senior managers shitting where they sleep, since the only thing that makes the U.S. any different from a chillier northern region of Mexico is the economic and social policies they're happy to undermine for a decade or two of quick bucks.
Re:Forget the trees, the forest is burning. (Score:2, Insightful)
No, they just disagree with the suggestion that they aren't competent at parsing CSV files until they've got a couple years' experience at it (or the general notion HR has that a prospective employee can't do anything he hasn't already spent years doing).
Re:Forget the trees, the forest is burning. (Score:5, Insightful)
Indeed. It's exactly the same trick with using powerless illegal immigrants, except the H1-B visa is legal.
I'm nearing the opinion that we should create a constitutional amendment that says anyone under the jurisdiction of the US for more than six month becomes an American citizen. Period.
Because the entire scam is to keep those people powerless. White collar, blue collar, migrant workers, it doesn't matter, it's all the exact fucking scam to one end:
Keep the workers powerless. At least, keep them powerless in America.
If they need to physically be here, make sure they're here illegally, or make sure that their employer can send them home at a whim. If they don't been to physically be here, well, don't have them here, or just have them here for their education and then send them home.
And this, of course, doesn't just fuck over those people, it fucks over citizens, who have hypothetical 'political power', but no actual money.
Bullshit! (Score:5, Insightful)
How is CS, true CS, any less of a science than Biology, Chemistry, Anthropology, or any other "ogy" you want to throw out there? Yes, there are many who end up working in the private sector, working for financial services firms developing apps, but how is that any different from the chemist working on drug manufacturing?
Much ground-breaking research has come out of the CS community. What IS science by your definition? Do not be so dismissive of the "science" in CS.