Skip to main content

Don't teach programming by asking students to program - What?

Saw this article in one of the ACM blogs that cited a recent study in an educational psychology journal on how teaching introductory Cs students to program by having them write code actually has a detrimental effect. More details here.

I absolutely disagree with the author that this study has implications in CS! First of all it cites a study done with teaching algebra so it is a different domain. I think that the problem is that there is too little programming going on rather than too much. I also wonder of anyone has considered that an introductory programming class probably has a mix of two very different types of students - one just exploring CS as one of many career options, the other the kind that took their dad's computer apart in the garage and started programming at age 8. The latter kind still have to take the introductory class because of degree requirements but now it gives you a class sample that's skewed and hard to make any conclusions about.

If everyone that took a introductory CS class were also required to have done some programming at middle school or high school level, that would make a huge difference. I have looked at some of the so called "introductory" CS classes in my school district's website - it has stuff like using word processing/spreadsheet programs. That is like saying learning to drive is "Introduction to automobile engineering". So no wonder these students get to their first CS class and feel lost..

Comments

  1. In school in India, in my first ever CS Programming subject, the teacher used to walk through a super simple example program and then give us a much more complex problem to program ourselves. Most of us couldn't figure it all out ourselves and so I thought this teaching process was really stupid. So if what the author is trying to say here is that a "go do all this coding and figure it out all yourself" won't really help - I agree with him.
    But that is not to say it should all be theory. Just that it should be a balanced mix, unlike how it was in my school. Also, like you point out, the effectiveness of the process very much depends on whether the introductory class is really introductory to all students in the class. I was a TA for a Java 101 course at ASU and my class had the whole range from CS geeks to students who took Java because they thought it was yet another spoken language like French or Spanish! So I totally relate to how much the teaching process should cater to the kinds of students in the class :).

    ReplyDelete
  2. I had the opposite experience in my school back in India. The teacher never deviated from whatever was already in the book (think it was Pascal) so I used to think - wow this stuff is so easy, till I got to a different class and it was like starting from scratch all over. :)

    ReplyDelete

Post a Comment

Popular posts from this blog

When two choices are enough

I came across the  power of two choices   theorem recently, it was referenced in a tech talk about schedulers. The central premise of the power of two choices is simple. Yet it is striking in its effectiveness in making decisions about routing requests. The following is my restatement of the premise: You have n options, and a score or rank associated with each of them. You also have an incoming queue of decisions to make about which option to pick. At each decision point, if you pick two options from the n at random, and then use the score to pick the best among those two, you will get exponentially better results (in terms of distributing load), than choosing a random option.  Going from best of two, to best of 3 or 4 or more, only improves the results by a constant factor.  Using power of two choices really starts to pay off when n is very large and examining all n options becomes prohibitively expensive.  The paper applies this to load balancing, whe...

What are your future plans? Why are you *still* a developer?

If I had a nickel for every time someone has asked me that question I'd have enough change for a year? Inspired by my friend's post here , I thought I'd write about how I ended up doing what I do now. Then I thought about it some more and decided to write about something else. Is it important to know where you are going in life? If you aren't moving forward in your career does it mean that you are doing something wrong? What does "moving up the ladder" even mean? I am going to attempt to answer these questions for myself. Its almost 5 years since I began my professional career. It has been great so far, lots of ups some downs as well. However, once in a while when I get the title question it still throws me off. It is usually my parents or well meaning relatives, sometimes friends that ask this. I have nothing much to say to them except "I enjoy what I am doing right now, haven't really thought about the future". But the truth is - I have thou...

My perspective of women in CS

For almost all of my professional life I have been very passionate about this topic. I am on the Anita Borg Institute  mailing list. I read various posts addressing this where they talk about why girls need more encouragement to get involved in CS from an early age and how gender stereotyping in schools is hurting their chances. Programs like  http://www.girlstart.org/  conduct camps and special events to encourage girls in STEM subjects, that I enthusiastically support. I got extremely worked up over this post ( http://techcrunch.com/2010/08/28/women-in-tech-stop-blaming-me/ ). Two years later it still makes me angry. There's no disputing the fact is that there are relatively very few women in this field, both entrepreneurs and working in the industry. There's also no disputing a facts like the last ten years of ACM programming champion teams are all men. Sure, there are stellar examples like Marissa Mayer, but what about all these women here who want to bre...