DEV Community

Discussion on: What are the skills that a public school Computer Science teacher should possess?

Collapse
 
nyambol profile image
Michael Powe

I'll offer this.

A Scheme Story is one student's account of her experience in high school programming classes. It's old, and times have changed, but the core issues of how these classes are taught, remain.

And this:

Our design of this introductory computer-science subject reflects two major concerns. First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute. Second, we believe that the essential material to be addressed by a subject at this level [1st year university - mp] is not the syntax of particular programming-language constructs, nor clever algorithms for computing particular functions efficiently, nor even the mathematical analysis of algorithms and the foundations of computing, but rather the techniques used to control the intellectual complexity of large software systems.

-- from Structure and Interpretation of Computer Programs

And this.

Programming should be from the beginning a creative and literate endeavor. Our goal is to expose the reader to the exhilaration of reading and creating beautiful programs. These programs should be concise in their expression, general in their application, and easily understood. These goals are achieved through creative use of abstraction techniques that capture recurrent patterns of computation and allow them to be simply used.

-- from Scheme and the Art of Programming

Whatever programming language you choose to teach, if you're guided by the ideas of these great instructors, your students will leave your classroom enriched, glad they took your class, even if they don't take up careers in software development.

Collapse
 
perrydbucs profile image
Perry Donham

I'd just like to point out that Structure and Interpretation uses Lisp as its base language. It takes two or three passes just to parse the quoted paragraph, and I've never fully agreed with the notion that a program "is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute." Tell that to the poor devop who is working through the weekend trying to fix a bug in production.

Scheme and the Art implies that in order to program successfully we need to first understand the science behind the machine.

I mentioned it in an earlier reply and will rephrase it here. Programming is a trade, like plumbing. Computer science is a professional occupation. It's the difference between an architect and a builder. For some reason we've conflated CS and programming, and now when we tach a middle-schooler a handful of Scheme commands, the district declares that they are literate in computer science. If we'd just acknowledge that the two are different we could effectively teach programming the same way we teach wood shop (they still do that, right?).

Collapse
 
nyambol profile image
Michael Powe

It's a shame you didn't read the first article, as it completely demolishes your argument.

I suspect you don't know much about plumbing or carpentry, or you'd know that tradesmen are also craftsmen, and take pride in what they do. They know their materials, and how to select the best and avoid the worst. It's a way of thinking and seeing. I watched the guy tiling our shower carefully align each tile and grout it into place, so that at the end of the project, the grout lines were straight in every direction and you wouldn't have known that each tile had been individually put into place. That's pride in his work.

For you, perhaps, programming is nothing but pounding out classes, and picking up a check. "Learning to program" is just learning the syntax of whatever language gets you a job, or pays the best. But that's just your choice of approach. And that rather negative attitude toward programming is exactly what provoked Natasha Chen to write her article, because that's the kind of "programming" was taught in her high school. Boring, no fun, and useless.