Reaction for: Learning to Program by Danah

To all of you who zwrote me telling me that I would love this article... you win.

Do you know how much I hated the fact that math teachers constructed a proof in a linear fashion?? This must be why I loved my 10/11/12th grade teacher. He could never write anything on the board without messing it up (Lucas, he would have been in the trashcan ALL day!). It allowed us to work with him to proove everything because we had to go thru the process with him. What fun!

"Is learning to program a job skill or a way to acquire problem solving skills?" I think this debate in and of itself is a challenging one. The idea returns to whether colleges should be focused on industry or education or a balance of both. Certainly, industry is willing to hire any trained person because it saves them the effort. But! Industry also hires smart people who do not know programming because it should not be that difficult. If someone is trained in problem-solving techniques, how difficult is programming? With this in mind, is computer science about programming or about something deeper? Problem-solving is not inherently computer science.

Do skilled people really have a gut feeling for programming? Certainly not (discluding Steve Reisses of course)! Problem-solving is developed by trial and error. With the same thing in mind, chemists do not fall upon the next great chemical; they go thru the process slowly and unexpectedly until they find it. Thought goes into every transition and next step. The steps become less as one's mind becomes accustomed to the type of thought. [Call that learning.] Educators need never lose their beginners' mind or teaching becomes impossible. The only one who can teach is one who understsands the thought process of the students.

[break for discussion with jon]...

What separates design and implementation? I guess I always considered them to be equally challenging while Jon thought of design as tricky and implementation as easy. Brown CS does not teach techniques of implementation, probably one of the reasons that new programmers have such a difficult time until they learn by example. Implementation requires just as many techniques as design and that cannot be forgotten. For loops, if statements, etc. are often thought of as implementation details but they are more than details; they are an important aspect of learning to program and one needs to learn techniques to deal with them.


Reactions


Jon:

"Is learning to program a job skill or a way to acquire problem solving skills?" I believe the answer to that is yes. In and of itself, programming is a skill, or area of knowledge, which can have many practical uses (which in our society, can make you money.) But asking why you learn to program is a question that could have a different answer for each person you ask. For some, it may be purely utilitarian, and a way to make money. For others, it is a mental challenge they enjoy facing and overcoming. For others, it may be an expression of self, either in the code itself, or the program which the code becomes. I think all of these are valid reasons, and a student in computer science (or any area) should ask themselves why they are learning that material.

However, one other thing Danah mentioned was "Problem solving is not inherently computer science." I'm not sure exactly what she's saying there, but I believe that computer science is inherently problem solving. The computer exists as a tool for human beings. Computers (at least using the definition which we are usually talking about in CS courses) do not exist in nature. So CS is not studying a natural phenomenon. It is a science which revolves around problems and solutions, both in the "concrete" areas (coding a program, determining a fast graphics algorithm, improving networking), and the "theoretical" areas (order of magnitude of problems, decidability, proofs and reductions). Computer science is a field where we constly pose ourselves new problems, and search for answers to them. And personally, that is what makes it a fun area of study for me.


[BACK]