Source: NY Times.
Jeff Swensen for The New York Times
READING, writing and — refactoring code?
Colleges are taking widely different paths to teaching general concepts underlying computer programming language. Tom Cortina, offers a course in “Principles of Computation” at Carnegie Mellon in Pittsburgh.
Many professors of computer science say college graduates in every major should understand software fundamentals. They don’t argue that everyone needs to be a skilled programmer. Rather, they seek to teach “computational thinking” — the general concepts programming languages employ.
In 2006, Jeannette M. Wing, head of the computer science department at Carnegie Mellon University, wrote a manifesto arguing that basic literacy should be redefined to include understanding of computer processes. “Computational thinking is a fundamental skill for everyone, not just for computer scientists,” she wrote. “To reading, writing and arithmetic, we should add computational thinking to every child’s analytical ability.”
There is little agreement within the field, however, about what exactly are the core elements of computational thinking. Nor is there agreement about how much programming students must do, if any, in order to understand it.
Most important, the need for teaching computational thinking to all students remains vague.
At the college level, computer science courses intended for non-majors run a gamut. In some classes, students start coding right away with a mainstream language. Others exclude programming and examine social and ethical issues related to computer use.
At Carnegie Mellon, students who are not computer science majors are invited to try “Principles of Computation.” It starts with a history of computation, but in Week 2, students start learning the programming language Ruby. Then the course covers iteration, recursion, random number generators and other topics.
Tom Cortina, who teaches the course, says that some students perceive the programming as challenging, especially those who aren’t majoring in a field of science, technology, engineering or mathematics and are not accustomed to “the preciseness required.”
At Wheaton College in Norton, Mass., Mark D. LeBlanc, a professor of computer science, teaches “Computing for Poets.” The only prerequisite, according to the course syllabus, is “a love of the written (and digital) word.”
Professor LeBlanc has his students learn the basics of Python, another modern language used in the software industry. But this course is tied to two courses offered by the English department on J.R.R. Tolkien and Anglo-Saxon literature. Students in the computing course put concepts to immediate use by analyzing large bodies of text. The syllabus is more like what one would find for a humanities course.
“In the class, we take on big problems,” Professor LeBlanc says. “The majority of the students are overwhelmed — ‘Where do we start?’ ” This provides opportunities to illustrate the concept of decomposition, which he describes as “breaking a large problem into small manageable problems.”
Professor LeBlanc estimates that just 5 percent of students who enroll each semester find it “worse than a foreign language” and drop the course. He believes that most graduates of Wheaton, a liberal arts college, will work in fields where they must learn how to program. The liberal arts college offers “a safe place to be a novice,” he says.
At many other campuses, computer science departments introduce computational thinking by sparing students from learning an industrial-strength programming language in order to try applying the general concepts. Instead, students learn visual scripting languages that produce interactive animation. Scratch, which was developed for elementary and middle-school students, is one such language.
Marie desJardins, a computer science professor at the University of Maryland, Baltimore County, says her department uses Scratch in its “Introduction to Computers and Programming” course, in which students can try a few basic concepts. About 25 percent of the semester is spent on programming.
Explaining why Scratch is used at the college level, she says that all students arrive on campus having taken high school classes in English, math, biology and so on, but that many have not taken a computer science class.
Michael Littman, who leads the computer science department at Rutgers University, agrees. “Computational thinking should have been covered in middle school, and it isn’t,” he says. “So we in the C.S. department must offer the equivalent of a remedial course.”
At Grinnell College in Iowa, students can take “The Digital Age,” which covers the “great ideas in the field of computer science, focusing on underlying algorithmic principles and social implications.” But it does not entail learning a programming language.
“ ‘Literacy’ implies reading and writing, so ‘computer literacy’ suggests that writing programs is a required skill for activity under this name,” says Henry M. Walker, a computer science professor at Grinnell. “However, general citizens may or may not have to write programs to function effectively in this technological age.” He prefers to promote “computer fluency,” attainable without assignments in programming.
Someday, the understanding of computational processes may be indispensable for people in all occupations. But it’s not yet clear when we’ll cross that bridge from nice-to-know to must-know.