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: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.
Re: (Score:3, Informative)
for universities to make this a prerequisite
You want universities to not accept CS students because they didn't take a programming course in high school?
Well id be fucked because my high school didn't offer any programming besides "Web Programming".
So if a student comes from a school that cant afford a real programming course then they just aren't good enough for you? Fuck you. Prick.
Re:WHy are you majoring in CS... (Score:5, Funny)
Re: (Score:3, Informative)
Translation: "I'm justifying all my time spent (and think I should've spent instead of partying) and show how I'm expert of my field. I assume everybody will have put the same (specific) effort into acquiring these obscurities that I pride myself with. Look at the size of my intellectual reproductional org
Re: (Score:3)
Ofcourse, this depends on which level and with what sort of clients you work and which sticks well. But I can imagine you'll lose your pitch if you're aiming for a contract where money, timing and experience are a large factor. You wont convey your client you have the weight and expertise to pull it if you are talking about "gooey" things in your meetings.
A key component to clear communication (especially from a contractor's perspective) is adjusting your language to suit your target audience and, as you say, to help convey whatever image you are trying to project. If the client organization uses terms like "gooey", then use "gooey". And to your point above, if your client uses really technical jargon then you should use it too. At the very least it lets the client feel hip and/or smart for having used the appropriate terminology.
Neither the formal or inf
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: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.
+1 (Score:3)
I'd say that was perfectly put. I can add nothing.
Re:Forget the trees, the forest is burning. (Score:5, Insightful)
Re:Forget the trees, the forest is burning. (Score:4, Interesting)
So in the end you get students that didn't get enough practical experience and sure weren't interested enough to go deeper into the academic part. And as a result, academia looses a lot of potential geniuses to transform the industry and businesses bitch about how those same people are not prepared to work in the field.
Basically universities are failing at CS all over the world, the fact that it's a global problem is seen widely in India. Because in India people don't really have a choice of career after graduating with BSc in CS.
* - I have lead summertime recruitment drives a.k.a programming and systems engineering contests
Re: (Score:3)
A computer science degree has had it's day and is long overdue for a revamp. Really computer programming , computer systems administration and computer security should all be separate degrees. That lump sum approach barely covers what are becoming far more important and complex parts of computer systems infrastructure.
Computer science degrees are struggling for relevancy because they are just too general, too out of date (changes in computer systems are hard to keep up with) and barely touch on far more
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.
Degree not needed? (Score:4, Interesting)
I just took a list at Craigslist, and a number of adds said "BSCS required" and the like, go look yourself. What does that mean? It means when if things get shaky at your company and the economy gets shaky and you're applying for jobs, that's a job you can't apply for. Well you can apply, but they've said up front they don't want you.
You're right that there are bad schools and bad professors and bad textbooks - so go to a good school. Find out which professors are good via ratemyprofessors, internal school rankings and the grapevine.
I also think there is an inherent worth to four (or more) years study of computer science that four years of reading books on C++ is not going to get you. You lay the foundation with a study of discrete and continuous mathematics, then you study computation and complexity, as well as other topics. By the time you get to practical applications, you have a full, rich understanding of everything going on, are familiar with algorithms, data structures, machines etc. in a more complete way and so forth. You can do this study independently, but why not go to a good local public school - some of your professors will know a lot, and working with other students is helpful and you'll get a degree out of it to boot.
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: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.
Re:Forget the trees, the forest is burning. (Score:4)
Your arrogance illustrates a lot of what is wrong with the state of CS in the U.S. today. A bunch of arrogant, uneducated, "self-taught" "web developers" running around creating one crappy useless tech after another. You will go away like the "VB programmers" of the 90s, so enjoy it while it lasts.
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: (Score:3, Interesting)
Please reread the parent, he said "employ people who are competent to teach programming", and THAT should be a prerequisite [to employment].
It is an all-too-common occurrence for some teachers to merely be "going through the motions", following a pre-written course guide that isn't in their field of expertise. I've seen used car salesmen teaching operating system fundamentals. I've seen accountants teaching SQL. I've seen a disbarred attorney teaching NT driver programming (not fucking kidding!).
As a cod
Re: (Score:3)
Here in Sweden a lot of the engineering and "hard science" programs used to require pretty much the same across the board (don't know what it's like now, been a few years) which was equally bad. Rather than not requiring enough things they all required you to have taken the advanced HS math courses, advanced HS physics and of course HS chemistry, many also required other courses which were highly irrelevant for the program at hand but taught in a specific HS-level program geared at preparing students for co
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: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: (Score:3)
I expected to be taught something that I would actually USE in my career. I haven't used Calculus or Physics since college. What a waste of time that could have been spent helping me learn to write a debugger, syntax highlighter, custom language grammar and parser, device drivers, robots, speech recognition, video recognition, OCR, simple OS, emulators, etc., etc., etc. You know PROGRAMMING stuff. All the stuff I had to learn on my own because CS is so out of touch with reality.
CS as it is taught today
Re: (Score:3, Informative)
I haven't used Calculus or Physics since college. What a waste of time that could have been spent helping me learn to write... robots, speech recognition, video recognition, OCR... You know PROGRAMMING stuff.
So, um, how do you think we write computer programs that deal with the uncertainty involved in robotics, speech recognition, video processing, and OCR? The most successful approaches involve optimizing various objective functions with respect to (possibly labeled) data, which almost always involves either climbing (or descending) a gradient to some optimum, or (in Bayesian approaches) integrating out certain parameters. How are you going to do these things without calculus? Your professors were trying to gi
Re: (Score:3)
Actually, I think you're a bit off.
Programmers are the equivalent of both architects and construction workers.
CS is trying to teach engineering. Engineers are the people who try to figuring out how to translate physical science into usable designs to tell architects what to do, some of which will eventually get incorporating into architectural design taught to everyone.
Likewise, CS is trying to figure out how to translate computer science in to usable designs to tell programmers what to do, some of whic
Re: (Score:2)
I couldn't care less what my doctor's interests were before he became a doctor. I'm quite skeptical of people in general who can't separate work from life.
Re: (Score:3, Insightful)
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: (Score:3)
I like your comment about Ruby. I'm an "older programmer", and yes, I can make a C or C++ version that's 50 times faster. But oh my god is Ruby so much easier to program in. People like to use Perl for parsing stuff; I learned Ruby instead, but the principle is the same. The amount of coding (and thinking) requires is a tiny fraction of what's necessary to do this stuff using STL. So, when I'm doing scientific computing, and something's going to run for days, yeah, use C... or even Fortran. But when i
Wht do a CS degree? (Score:2)
Re: (Score:3)
I'd be willing to bet they are channeled into college by their parents and advisers so they can have a 'better life'. The myth is still out there that IT is a high paying white collar job. In some cases that is true, you get professional pay and professional respect. In a lot of cases though, you are a salary exempt pager slave. Those patches aren't going to install themself, son.
Ironically, good plumbers can earn $70k, go into business for themselves with a few $k in tools and a pickup truck. All of w
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: (Score:2)
I started at age 11, mom sent me to local community college to learn pascal. Also wrote a lot of qbasic programs on my own before/after.
Where there's a will...
Re: (Score:2)
I started at age 11, mom sent me to local community college to learn pascal. Also wrote a lot of qbasic programs on my own before/after.
Where there's a will...
So, you're saying that you had the necessary resources. You had the money necessary to attend a local community college to learn pascal. And you had the time necessary to write a lot of qbasic programs on your own before and after.
What if you hadn't had the money to attend a community college? What if you hadn't had the time to write those qbasic programs?
Not everybody is as lucky as you were.
Re: (Score:3)
You're stuck in the wrong decade old geezer. All the kids in college and highschool these days were born in the 90s and grow up in the 90s/00's. Computers have been so prevalent their entire lives that they could literally jump onto a bus, head down to the local Salvation Army, and pick up a computer. All for about the price of one or two cheese pizzas.
I would know: my previous computer, the one that I had since I was a child, cost me $50. Because I was feeling like Mr Moneybags at the time.
Anybody curr
Re: (Score:3)
Re: (Score:3)
not all prospective students have the kind of resources necessary for hobby projects
For the first couple of years of my programming life I didn't have a computer; I'd spend hours each evening writing code on paper, then head to the IT rooms during lunch to type it in - I think the habit of thinking before typing has served me well too :P
Granted, the student could be unable to afford pen & paper, or the school might not have a computer, but I think in those cases there are bigger things to worry about...
Re: (Score:2)
Re: (Score:2)
Totally disagree. High school will not be a benefit to the vast majority of people. Either you were born thinking like a computer scientist, or you will never 'get it' at uni; there are very few people who are in between, who can learn how to think in that manner.
Third year CS student here, I had never even thought about majoring in CS until about two weeks before applying to university –I was planning on doing Physics. I had never done anything remotely CS related at school. I'm one of the top studen
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.
Re: (Score:2)
Most people don't figure out what they like or what they are good at until later in life. I should be a graphic or web designer, but by the time I laid eyes on desktop publishing software and Photoshop, I was one semester from graduation (1992).
My wife went back to college after getting a Masters and working in the real world for a decade. She's majoring in CS for the job prospects.
Why would you go out of your way to question why somebody else would study a particular field in college, is the more pertinent
Re: (Score:2)
If you didnt already begin in a high school class, or at the very least on hobby projects?
Because we don't expect that of any other subject? You don't ask someone on a maths / physics / chemistry / psychology to have done it at home outside of a formal education system? And it's very easy to not have the chance to do it in school, I know that I didn't.
Also, how many times do we hear professors claiming that they prefer their students not to know any programming so they haven't picked up any bad habits? Can't have it both ways...
Re: (Score:3)
Most of the obsessive "i've been coding for 10 years on my own" students bring bad habits and attitudes to class and don't succeed. The clean slate students, if they an think like a CS major, can be easier to train because they have no such bad habits. When I was in the Army, I fired the best at the range, because I was the one guy who had never fired a rifle before, and therefore had to pay attention to learn how to do it correctly, where as all my backwoods buddies were already set in their (incorrect)
Is IT/CS/... not easy enough already? (Score:5, Interesting)
I can speak only for Germany but during my studies I noticed quite a number of students which had no background (beside having played computer games all day in earlier days), had absolutely no talent (everyone can learn how to program, but most people won't become good at it), no clue and struggled a lot. Yet most of them made it through the finals, have now a B.Sc. and compete with people who really know the shit on the job market, negatively influencing hourly rates and reputation of IT. In my professional life so far I had to work with many many idiots who nethertheless had a degree.
So I believe I disagree with this professor. Yes, not everyone might be willing to achieve the results in that time frame. But I honestly believe that most people who don't deserve to be there in the first place. Either you have what it takes or you don't. As said: You can train nearly everything, but training does not make you good. Programming is very often a task which included creativity (figuring out how to solve a problem in the best way) and if you don't have that ability, you will produce bad results. It's as simple as that.
Don't make IT/CS easier. Make it harder, please.
Re: (Score:2)
^ This. Yes, please do make it harder.
Re: (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.
Re: (Score:2)
Isn't one of the purposes of education to teach people, even so-so ones, a job?
That's the purpose of vocational education, not university education.
Re: (Score:3)
That's the purpose of vocational education, not university education.
If that were actually believed to be the case, every public university in the country would have to close its doors for lack of funding. The only reason why public universities get non-grant related funding is because they are believed to improve the economic prospects of the students and the community.
Actually, there's a competing view that the purpose of education is to give you a broad background and teach you to think critically - and that those can do as much - or more - for the individual and the public than mere job training can.
Sure, companies want universities to teach people vocational skills, so that it can be done on someone else's dime.
But I read somewhere within the past few months (maybe here?) that some of the highest-paid non-managerial people in business and industry are people with degr
Re: (Score:3)
No.
That might be the purpose of a degree in information technology or MIS or something like that. And perfectly respectable four year public universities have those.
This is computer science. It isn't supposed to be as tightly coupled to a real world job. It's about learning the theory and mathematics of computers. Do you learn some programming skills along the way? Sure. But it isn't supposed to be the focus.
Re:Is IT/CS/... not easy enough already? (Score:5, Insightful)
Universities are there to preserve and advance the knowledge of humanity.
Re: (Score:2)
Re: (Score:2)
But, not everyone can be brilliant. Isn't one of the purposes of education to teach people, even so-so ones, a job ?
Sure, here you go for your education: http://www.aboutmcdonalds.com/mcd/careers/hamburger_university.html [aboutmcdonalds.com]
Think I'm joking? Maybe, but think also about this: compared to "programming jobs" a McD manager/burger flipper job isn't going to be outsourced to India so easily for the same cost.
Yes, you don't have to be brilliant to be a programmer. Most of those Indian programmers are FAR from brilliant (after all most programmers are far from brilliant). BUT the big difference is if you're not better than them, ar
Re: (Score:2)
Actually, no, it isn't. Well, it's an half truth: let's say that as far as higher education is concerned, you are wrong. It's better that untalented or disinterested people go immediately to work on less-qualified jobs (clerks, factory workers, etc.) because: a) we need someone to do also that, and b) it will make life easier for the rest and c) we don't have the money to pay everyone as if it
Re:Is IT/CS/... not easy enough already? (Score:4, Interesting)
After having RTFA, I can understand that the author has no solution for the problem, but because many topics covered in CS2 should be part of CS1 - or in other words, students should be introduced to the ~context~ of programming before being thrown into the code itself.
Coming from both a creative and academic background, I can say that programming (that I learned on my own) is a mindset completely different from any other course or trade I have learned - it is a trade of ~method~ more than anything, but classes today are putting the language before the method. Yes, I know I'm repeating myself.
The best way to learn programming is to ask a student "what do you want to do - what is the goal of the program you would like to make?". Only after he is able to draw a logical schema of what he wants to do, and identify the types of input/data that he would like to treat in his program, can he fully understand the purpose and syntax of the language he is going to be programming in. Better still, a student using this method will more quickly understand the capabilities and limitations of the language he is programming in, and this will allow him to think constructively, if not creatively, about the task he has at hand. What's more, once he has the 'goal, step and method' logical mindset down pat, learning yet another language will be much easier for him.
Re: (Score:3)
CS is too easy, but it is also way too time consuming. With my other classes I do not have 50+ (I have had 90+) hours to work on your insanely time consuming assignment.
So yes make it harder, but also make it shorter and less time consuming so I have time to site back and think.
If you want us to produce big interesting programs then supply half the code.
This! (Score:5, Interesting)
Thisthisthisthis!
I tutored programming when I was an undergrad. They call those "weed out courses" for a reason. Some folks are just not capable of CS. I had to tutor one kid who could not understand arguments and function calls. I spent over an hour trying to explain it to him with five different analogies and sketches on a chalk board and lots of emphatic hand-gestures, and yet he had absolutely no clue how to read
int multiply(int x, int y)
{
return x * y;
}
Some people just don't cut it, even as code monkeys. And universities shouldn't be flooding the job market by giving idiots a degree.
Re: (Score:3)
Interestingly, it's possible that this individual may have been a perfect fit with functional programming -- something I've only read about, but seems confusing to me (despite all my years of mathematics courses).
analogies (Score:3)
I don't know what analogies you used and what your tutoring abilities are, but I knew a number of people, who excessively used analogies in every day lives, always trying to describe the most mundane things with these analogies, which most of the time were terrible, and by using analogies they made things worse, not better.
--
Anyway, if somebody asked me to explain that piece of code (a function takes in 2 parameters, returns a value equal to the multiple of the two, has no effect on scope of global variable
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".
I beg to differ (Score:3)
> Training is exactly the process of making someone good at something!
Well, this is a typical manager attitude - this does not make it any more true, though: Training is the process of systematically (as opposed to implicitly as e.g. by learning on the job) turning talent into skill.
If the talent is there, then training will indeed make you good or better at something. If it lacks, no amount of training will make you "good" in any reasonable sense; basically, you will be reduced to "faking it" with huge
Re: (Score:3)
A person who compl
Re: (Score:2)
I honestly believe that much of what I said applies to CS as well, only with different topics and terms.
Reading, counting to 100 and other difficult tasks (Score:3)
Computer science isn't a vocation education... You're there to learn the theory and techniques of programming, amongst other things. If you haven't taught yourself the basics of programming by the time you enroll then you deserve that F.
Re: (Score:2)
There's a difference between somebody flunking out of a potential major in a computer related area because they don't know how to work a computer and flunking out because they haven't been adequately prepared by the intro course.
Re: (Score:2)
What next, CS students get slack for not knowing how to read and write, addition and multiplication, and all the other skills you're expected to have when entering a high-level field of study?
Good example. If someone came to university without being able to read or write, then they'd fail quickly. There would then be two questions asked:
The second question is more relevant. You wouldn't expect someone to undergo 13 years of education and not be able to read or write. It is, however, entirely possible for pupils to avoid ever being taught to program in this time. So easy, in fac
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?
I'm inclined to disagree (Score:2)
I can understand his concern, but really, the university level should not be your first exposure to your area of study. And if you can't cut the mustard in a particular discipline, would you rather find out during the first semester, or after pissing away several years, and all the tuition and other expenses along with them? So, my opinion is that hitting the ground running - or at least at a brisk jog - is definitely the proper approach for a university level science/math discipline.
(GVSU alumnus myself. T
Re: (Score:2)
university level should not be your first exposure to your area of study
So how would that work for doctors? Personally I would any REQUIRE pre-med school student to never have tried to diagnose or operate on people before they get into a well-supervised hospital environment. (And playing "doctor" as a child doesn't count.)
Re: (Score:2)
It's not necessary for doctors. To be a successful programmer you need a certain way of algorithmic thinking that takes a certain talent to master. It's about truly understanding something, and applying it in new situations.
To be a successful doctor, you need to be able to memorize lots of things, but there's nothing to 'understand'.
Re: (Score:2)
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.
Re: (Score:2)
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.
Three weeks? That's just asking for pointer mis-use and memory leaks. I would expect no less than a full semester as a prerequisite to teach students all of the things they shouldn't do with C (and *NIX systems).
Re: (Score:2)
That module was widely considered to be the hardest thing we ever got. It also included two rather difficult assignments.
But still most people got through the experience without too much permanent damage. Its the sort of 'learn this really quickly' thing we learnt to expect.
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: (Score:3)
Except that Kurmas was talking specifically about the intro programming course. Having taught intro programming dozens of times myself, I sympathize deeply - sometimes a student with no prior background ends up doing great, but in this day and age it usually means they are people who have actively avoided learning anything about how computers work. Given how readily available computers are, if an incoming student hasn't shown enough interest to read up on and play around with VB or a scripting language I
Seems like the more you know (Score:2)
The less competent everyone around you becomes. Are you sure you're not just getting too smart to teach CS 1?
The bozo filter (Score:2, Interesting)
I went to MIT in the early 80's, when interest in CS was exploding and the CS department was heavily oversubscribed. The introductory class taught LISP and Algol and was used to weed the applicants for a CS major down to something the department might have some hope of coping with. Additionally, if you switched majors, this was the only department that didn't allow you to switch back.
Towards the end of my stay there other departments started operating their own basic CS class so that one could learn the rud
Frankly I agree (Score:2)
In the UK we had a Java exam module that you had to pass to continue to the next stage. Apparently a third failed.
I doubt these people actually practiced programming, after lectures and at home. In many subjects you don't have to practice a skill constantly, you cram facts. Computer science is not one of those subjects, it takes practice. That's why it was quite easy if you have coded as a hobby. I still think it's unfair to undergraduates to be expected to code well in 15 weeks. You go to university to lea
Re: (Score:2)
In truth, with today's academic programs at most university's, anyone wanting to specialize in a technical field (and this might apply to many other fields as well), should probably try, during their junior high and high school years to get "early exposure" to that field. If you already know basic programming in two or three languages, know some basic data structures and algorithms, etc. You will be far, far more prepared after that 15 week course.
It has become common in a lot of high schools to offer 'elec
An odd analogy (Score:5, Interesting)
I'm not sure that I really agree with the Professor's foundational analogy between studying programming and playing orchestral music. I'll explain why.
The students who played in the university orchestra back when I was at university were phenomenally good. Many of them played professionally or intended to. That is where the analogy with computer programming becomes strained. There is no room, in professional music, for someone who is not very good, or just learning, or who lacks experience. The musicians who play in orchestras at anything approaching a high level have a degree of musical ability that I find absolutely astounding; the difference between a very good hobbyist musician and a professional or semi-professional is like night and day. That ability is normally the result of spending 30 hours or more a week, every week, practising or learning under the tuition of an excellent player for 15 or more years. And the competition is such that that is effectively the minimum level of ability required to play in a good orchestra. Many of the musicians will be far better and far more experienced than that.
In contrast, programming is a career in which a person can grow on-the-job not only from "excellent" to "phenomenal" but from "not particularly good, but promising", to "good", and then on to "excellent" and "phenomenal" after another 10 or 20 years. There are plenty of roles for people who can code slowly but proficiently, especially if they have the potential to get better. Comparing those students to others in a far more competitive area just is not helpful - one could equally compare computer science students with lawyers being sponsored through college by White-Shoe firms. Of course the computer scientists will, on average, be less developed, less well-rounded, even less competent. But it's not a useful comparison.
I don't know what approach the Professor's university takes but I did not, when I was studying, encounter a sink-or-swim approach to computer science coding. That approach, it seems to me, crops up when the expectation is that computer scientists, on completing the course, will have a level of competence beyond what is reasonable - an expectation that is encouraged by making unreasonable comparisons. On the other hand there were, as the Professor notes, a good number of people dropping out or changing course. I would ascribe that, rather than to a course that makes unreasonable demands, to a factor that he notes - computer science is not taught at schools. It is one of a number of courses that students choose without really knowing what it will involve. I suspect that in all those subjects there is a high initial drop-out rate as students realise that the course is not what they had expected, or is not for them, or simply that a particular aspect is more interesting and that they would prefer to specialise in, for example, mathematics.
Re: (Score:3)
I'm sure you're right regarding the level of ability needed to get in to Google or the like being exceedingly high - I remember having a look at one of their tests once and not having a clue how to even begin to understand it, let alone solve it. But my point is that the vast majority of programmers don't work at Google, or anywhere nearly so demanding - if they did then I would absolutely accept your point. The difficulty, I think, with the analogy the author tries to draw between college-level or college-
Comment removed (Score:4, Insightful)
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.
Hearkens back to when kids were prepared (Score:2)
Just like Math, Literature ... (Score:2)
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.'
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 arithmetic experience to be ready to earn a Fields Medal after 15 weeks.
All the guy is really saying is the intro work MUST be done before university. Just like you cannot expect to graduate on-time with a degree in math if you enter uni not knowing how to count to 5 (athletic scholarship, have enough money, etc) then you cannot expect to
What part of higher academic education is straight (Score:2)
My anecdote disagrees (Score:2)
My wife is a non-traditional CS major (she has a Masters degree already, has real-world experience, children, and in her 40s). She is a CS major and had never typed one character of code before this past semester. She was the best student in the class. Sink or Swim is an efficient way to weed out those who don't have the discipline to come to class, or the capacity to grasp computer logic (I'm in that group).
as almost as absurd as expecting a student with no instrumental musical experience to be ready to join the university orchestra after 15 weeks.
There is no such expectations at the University of Texas from its CS majors. My wife was expected
Yes, it is absurd Prof. Kurmas, and here is why (Score:2)
I simply do not have a good answer. I really don’t see what we can do (practically) at the college level to make Computer Science more accessible to the majority of students who don’t already have either programming experience or a strong aptitude.
To Prof. Kurmas: The problem is that most universities only have CS1 and CS2 before sending students down to Analysis of Algorithms and the like. From personal experience, my first two years were not in a 4-year college, but in a community college (Miami-Dade College in 1991 to be precise.) This is what I went through:
100x-level courses: Introduction to Micro-Computers, BASIC (that included a discussion to Bohn-Jacopini's Structured Program Theory right of the bat), Introduction to Turbo Pascal (with dis
Weed out courses are necessary. (Score:2)
I don't agree with this. First, anyone interested in CS has probably at least had some rudimentary exposure to programming. Either they taught themselves, or had high school courses that touched on it. The weed-out course serves as a first-pass filter to make sure those who really don't belong in CS don't waste their time on more courses and switch to something more suited for them. It's also a "last-chance" for those who didn't have any prior experience but may be talented to try this field out.
I'm on the
A Better Analogy (Score:3)
Having been a music major, a film/television major, and someone who hangs around with computer-oriented people most of his life, I think a better comparison would be film and television students. Some of them come into programs with experience in photography and video, some have even done some work that has been on the air, but most have never been near a video camera and can barely press record. The first television production course I took had 50 kids. It was all about hardware and a lot of people were totally lost. It was designed to weed out. The next had 20, and the last had 15. Since I had been taking stills for years, I had a basic understanding of exposure and composition. I also had a fairly strong background in electronics so that helped too. But there were other kids who had no background in either who were able to tough it out and get through it, one I remember was an excellent videographer even though he'd never done it before. Some of us would hang out in the studio and work on each other's projects. Some would attend class and disappear. But I'd say we all were competent enough to get an internship when we graduated (or some other entry level job).
Music, on the other hand, is much more about honing your skills. The system just isn't at all about teaching the basics of your instrument. You have to audition to even be accepted. But there's already an infrastructure in place to accommodate that. I'd been playing since the 4th grade, all though high school I'd been in various bands, orchestras, chorus and choirs, and small ensembles. I'd also been in private lessons all through high school. How many comp-sci majors can say they have similar training?
I'm sure this professor would like to see more students like Linus Torvalds and WOZ (who designed computers over summer vacation), but it isn't going to happen. I'm sure the instructors in the film department would like to see more Steven Spielbergs too (he had been making films since he was 10 before attending USC). The fact is, the field isn't set up that way.
I'm really fascinated by what has happened to video in the past 5 years or so. Now that high quality cameras are cheap, desktop video editors are free, and anyone can publish short pieces easily, we should see a general improvement in the craft. It is going to take time, after all the first round of high school filmmakers is just now entering film school, but I would think we will see some amazing stuff on the horizon. The only thing that I see missing is the one-on-one instruction at the high school level.
The same thing could be happening in comp-sci. If you subscribe to the idea that it take 10,000 hours (sort of the point of this post), the highschoolers today need to have programing tutors. There are a few, but not nearly enough to get kids beyond the "hey that's cool, I'd like to try that" through the tough stuff where most will give up.
Not as easy as it looks (Score:3)
We hear all the time that "any trade school code monkey could write that software" or "my nephew could program that" or "it's a small matter of programming". Yet here we have a prime example that it's not that easy, is it? I think people (both individually and in aggregate) *still* don't really understand software. It's understandable, because it really is different. Name another product where the design /is/ the product.
As for "dumbing down" courses, or not expecting people to learn to program in X weeks, maybe we should just admit that most people cannot learn to program, no matter how long you take trying to teach them [codinghorror.com]. Maybe sometimes some children *should* be left behind, or better yet, directed to things they can actually learn to do.
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.
Re: (Score:2)
It's not really elitist - (almost) anyone in the developed world can learn to program if they want to. I did years before I had a computer at home.
It can be said that not everyone has the same motivation to learn to program, but you need motivation to pass a CS course too.
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.
Re: (Score:2)
the problem is the student doesn't know how to solve problems and write down the solution
Any ideas what to do with those people, other than let them flunk out of "intro to Java"? I'm not looking for micro solutions but much larger scale...
Its not a programming problem. The same ailment affects some wannabe draftsmen, wannabe machinists, wannabe construction trades, wannabe car mechanics, etc. I hang with some of those people, and they have almost exactly the same reaction toward the failing noobs as the CS people, although obviously expressed much more illiterately due to their cultural requ
Re: (Score:2)
No, it's not absolutely necessary to have those years of experience before attempting CS/IT. It helps however.
But it is absolutely necessary to be capable of learning new stuff in a very short time period AND be able to do something good with that knowledge. As others pointed out IT more than many professions requires life-long learning.
If you are not willing or able to absorb new technology in next to no time, you will never be a good or competent IT person. Thats the simple truth and therefore it is good
Re: (Score:2)
Programming languages come and go, but what a CS major learns should enable them to make the right choices when learning/using languages.
While I do agree with you to a certain point, programming isn't just about turning ideas into code.
It also gives you a particular mindset which will greatly help your understanding (and appreciation) of the topic. I was talking to a person the other time who was in a CS course without any programming experience and couldn't understand why they were being taught data structures. You only get that sort of appreciation once you've messed around with their use a bit.
Re: (Score:2)
CS students don't need to know that a stack is implemented differently in C++, Pascal or Java.
what a CS major learns should enable them to make the right choices when learning/using languages
Please select one side of the argument or the other.
If I had what was inherently a stack-problem, I would not select Pascal, and intelligently selecting C++ or Java has a lot more to do with scalability than implementation.
In an IT curriculum it doesn't matter, you'll simply be trained on what the hiring managers are hiring for this year, doesn't matter how it works or how well it works. Knowing how to use it is apparently somewhat optional in the industry today, also.
Re: (Score:3)