Reaction for: Learning to Program by Amanda

This article brings up a question that I expect all of the articles to bring up...what is the best way to deal with novice programmers?

It mentions that there are two camps when thinking how important programming is to computer science. "Programming is merely a job skill, and that programming instruction should not be included in a general curriculum." The other camp apparently believes that programming is a subject where on can learn effective problem-solving skills. The auther states that there is litle empirical support for the latter camp.

It is clear to me that Brown is in the school of thought that supports the idea that programming is a useful tool for teaching problem solving skills. We certainly are not a school that is in the theoretical state of things, even though we have quite a few classes with that theory in mind.

But which is better? Bryan MacDonald, the former headTA for cs15 said that at his company, Trilogy, there are a lot of people who come into the industry with a largely theoretical background. They come from schools like MIT and such. But, he says that within a few weeks they can code just as well as him. Even when they just learned the language. He did not say that we were at a disadvantage at all...but neither were they. In fact, he came back to Brown recruiting and he said that Brown is considered one of the top schools.

But who is to say that he is right? Apparently the author of this article.

The author says "learning to program amounts to learning how to constuct mechanisms and how to construct explanations." The explanations part of that statement arises out of the fact that code is meant to be revised or implemented and other readers have to understand it. He says that learning the syntax does not teach the student theories behind the code.

And I think that I agree with him. But, in another way, I disagree. Coding allows you to put those problem solving skill you learn when being taught theory to practice. And this is where you learn the most. By making errors and understanding the different aspects of different designs you understand what you are coding better.

The author then goes on to discuss the merits of pseudocode, but he does not call it that. I like the idea of pseudocode, in fact I think it is amazing. It helps me soooo much. It is like a puzzle, and I can absolutely see that given any amount of pseudocode, how it could be tranformed into any language. This is why I understand the merits of theory based computer science education.

But would I rather go to a theory school? I don't think so, I like the fact that I am taught and can implement different languages effectively (although my ta's might beg to differ.) Still, I like the fact that I know that I can code a certain amount.

Hand simulation is one of the most important tools that he also discusses in his article. He talks of the merits of that. Which I absolutely see. However, I usually find myself doing it when I am about to construct a semi-complex algorithm or when I am debugging...not when I am trying to understand a concept.


Reactions


MY NAME: Matthew Amdur

MY COMMENTS: I would like to comment about what Brian said about students from theory backgrounds. It seems odd to me to assume that everyone who understands the theory behind CS can implement it without any problems. I might thoroughly understand the ideas behind an abstract chemistry problem, but I could never use my knowledge to actually do make the chemical. I think we must look at who these people are: most likely people near the top of their classes at some of the top CS schools in the country. I think there is a difference between what these people can do and what the average CS graduate can do.


Jon:

This is a comment in regards to what Brian said, and the question of how "theory people" can pick up programming. I think that both studying theory and programming give a person a lot of practice and experience with problem solving techniques, as well as modeling and abstraction. Once a person has those skills, implementing an idea with a programming language is just a matter of translating the ideas into a form which the computer can deal with. While the techniques differ somewhat between problems in theory and programming, if you are good in CS, it is because you have a mind which is good at solving problems, and can adapt without too much trouble to different types of problems. So, I think a CS curriculum should make sure it stresses this building of mental prowess and problem solving skills, so that any language or problem that is put in front of a person can be dealt with.


[BACK]