Forgot your password?
Education Programming

Professor Questions Sink-Or-Swim Intro To CS Courses 606

Posted by Soulskill
from the trial-by-mountain-dew dept.
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."
This discussion has been archived. No new comments can be posted.

Professor Questions Sink-Or-Swim Intro To CS Courses

Comments Filter:
  • by kju (327) * on Sunday May 22, 2011 @08:19AM (#36207604)

    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.

  • The bozo filter (Score:2, Interesting)

    by AnotherScratchMonkey (592037) on Sunday May 22, 2011 @08:32AM (#36207676) Homepage

    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 rudiments needed to function in other engineering disciplines without having to devote one's life to CS arcana. This helped to take the pressure off the CS school.

  • An odd analogy (Score:5, Interesting)

    by Kijori (897770) <> on Sunday May 22, 2011 @08:38AM (#36207714)

    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.

  • by ThePromenader (878501) on Sunday May 22, 2011 @08:47AM (#36207796) Homepage Journal

    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.

  • This! (Score:5, Interesting)

    by DeadCatX2 (950953) on Sunday May 22, 2011 @09:19AM (#36207980) Journal


    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.

  • by PRMan (959735) on Sunday May 22, 2011 @10:53AM (#36208574)

    Worse than worthless. I was at a job where we routinely threw Masters and PhD CS resumes in the trash. The candidates are completely worthless at real-world tasks and are so arrogant as to believe that they don't need to know about CSV files or FTP, regardless of what the other side of the transaction wants.

    At my current job, it's almost to the point where advanced degrees are automatically 1 strike against you, for the same reasons.

  • by JAlexoi (1085785) on Sunday May 22, 2011 @12:33PM (#36209420) Homepage
    I experience* exactly the opposite. Colleges and universities create a curriculum of high academic standards and simply fail to explain why. As a result, none of the students end up interested in their field because they weren't "hooked". The ones that were "hooked", were "hooked" somewhere else.
    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
  • by billcopc (196330) <> on Sunday May 22, 2011 @01:08PM (#36209828) Homepage

    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 coder/sysadmin/hardware guy myself, who tried teaching for a few semesters way back, I can appreciate that it's often difficult to take what know and bastardize it for human consumption, especially when it draws upon multiple "layers" of other knowledge. I remember the first time I tried to explain variables to a friend (pre-teaching); to me, it was the simplest, most obvious concept, because I had learned it as a little kid fooling with 8-bit computers. To someone who either hasn't done much algebra, or had sucky math profs in high school, it's not always so trivial.

    It really takes someone who is good at picturing the student's perspective and what's going through their minds when all this foreign knowledge is being presented for the first time. I eventually got the hang of it, but man my first teaching class was brutal. I wished there had been some steps taken to prepare me for it, but no... the college just hired me on a whim, based on my technical qualifications. They asked me to produce a course outline by next week, and classes start the week after. It was all very slapdash and I can only assume the same thing happens in a lot of other colleges and universities. That's the business model...

  • Degree not needed? (Score:4, Interesting)

    by br00tus (528477) on Sunday May 22, 2011 @03:27PM (#36210888)
    I have looked at job listings over the years on, Hotjobs and Craigslist. Many have said "Bachelors in Computer Science" required. I applied for a nice position at Google once and the HR girl told me that almost all of the people working in that position at Google had a Masters, if not a Doctorate. Even on interviews for jobs that didn't say Bachelors required, Human Resources would ask me for my education background, how many credits at college I had, if and when I planned on graduating and so on - from their questions and reactions, it was clear they would have liked to see a Bachelors.

    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.

You can do more with a kind word and a gun than with just a kind word. - Al Capone