Computer science

Learning to think like a computer

Where nontechies can get with the programming

When the Georgetown University Law Center offered computer programming last year, it was an experiment, a single class for about 20 students. It was filled almost instantly, and the wait list swelled to 130. This semester, the law school has five programming classes, and the waitlist still overflowed.

“They aren’t going to become programmers, but they realize these are skills that will make them better lawyers,” said Paul Ohm, the Georgetown law professor who teaches the course. His students, for example, learn to write short, tailored programs that can identify clusters of words and concepts in Supreme Court rulings more accurately than a Google search or standard legal software.

It’s the same in every field, from marketing to manufacturing to medicine. Code, it seems, is the lingua franca of the modern economy.

So you have no plans to become a computer engineer, no dreams of being code wizard at Google or Facebook. But you’ve decided it’s time to pick up practical technology knowledge and skills, including writing some code. There are options aplenty, in college classes, online courses and boot camps. The offerings range widely in terms of time required, skills mastered and price tag, from free to more than $20,000 for some six-month programs.

In college

Enrollment in computer science courses has exploded in recent years, with both majors and nonmajors fueling the surge — so much so that many schools now restrict enrollment by nonmajors.

One recent institutional adaptation is the creation of CS+X initiatives at schools like Stanford, Northwestern and the University of Illinois. These programs are hybrid majors that combine computing with other disciplines, including anthropology, comparative literature and history — a nod to the reality that software skills can advance research in nearly every field.

But the main on-ramp to computing for nontechies is an introductory computer science class. Today, at many universities, at least half of the student population takes the intro courses. At Stanford, it’s 90 percent.

At boot camp

At the nation’s coding boot camps, the pitch has nothing to do with a liberal arts education. This thriving niche of the for-profit education business tightly links courses to the job market.

Jim Deters, chief executive of Galvanize, which operates eight coding campuses, compares boot camps to accelerated graduate programs. “Except when you graduate here, you get a job, not a piece of paper,” he said. Galvanize, whose six-month web development course costs $21,000, says that 91 percent of its graduates land jobs using their newly acquired skills within six months. According to Course Report, which tracks coding camps, the industry average is 73 percent; median post-camp salary is $65,000.

Today, there are 91 coding campuses across the country, producing 18,000 graduates last year, up from fewer than 2,200 in 2013, Course Report says. Programs vary, but the average length is 13 weeks and average cost $11,500.

Online

Coursera, edX and Udacity, three major providers of MOOCs, or massive open online courses, have evolved into hubs for teaching computing skills. Their most popular courses are nearly all programming and technical. On edX, the lone nonprofit, the course taken by more people than any other is the online version of Harvard’s introduction to computer science, CS50. The course is free, but for $90 students get a certificate of completion.

— New York Times News Service

In “The Beauty and Joy of Computing,” the course he helped conceive for nonmajors at the University of California, Berkeley, Daniel Garcia explains an all-important concept in computer science — abstraction — in terms of milkshakes.

“There is a reason when you go to the ‘Joy of Cooking’ and you want to make a strawberry milkshake, you don’t look under ‘strawberry milkshake,’” he said. Rather, there is a recipe for milkshakes that instructs you to add ice cream, milk and fruit of your choice. While earlier cookbooks may have had separate recipes for strawberry milkshakes, raspberry milkshakes and boysenberry milkshakes, eventually, he imagines, someone said, “Why don’t we collapse that into one milkshake recipe?”

“The idea of abstraction,” he said, “is to hide the details.” It requires recognizing patterns and distilling complexity into a precise, clear summary. It’s like the countdown to a space launch that runs through a checklist — life support, fuel, payload — in which each check represents perhaps 100 checks that have been performed.

Concealing layers of information makes it possible to get at the intersections of things, improving aspects of a complicated system without understanding and grappling with each part. Abstraction allows advances without redesigning from scratch.

It is a cool and useful idea that, along with other cool and useful computer science ideas, has people itching to know more. It’s obvious computers have become indispensable problem-solving partners, not to mention personal companions. But it’s suddenly not enough to be a fluent user of software interfaces. Understanding what lies behind the computer’s seeming magic now seems crucial. In particular, “computational thinking” is captivating educators, from kindergarten teachers to college professors, offering a new language and orientation to tackle problems in other areas of life.

This promise — as well as a job market hungry for coding — has fed enrollments in classes like the one at Berkeley, taken by 500 students a year. Since 2011, the number of computer science majors has more than doubled, according to the Computing Research Association. At Stanford, Princeton and Tufts, computer science is now the most popular major. More striking, though, is the appeal among nonmajors. Between 2005 and 2015, enrollment of nonmajors in introductory, mid- and upper-level computer science courses grew by 177 percent, 251 percent and 143 percent, respectively.

In the fall, the College Board introduced a new Advanced Placement course, Computer Science Principles, focused not on learning to code but on using code to solve problems. And WGBH, the PBS station in Boston, is using National Science Foundation money to help develop a program for 3- to 5-year-olds in which four cartoon monkeys get into scrapes and then “get out of the messes by applying computational thinking,” said Marisa Wolsky, executive producer of children’s media. “We see it as a groundbreaking curriculum that is not being done yet.”

Computational thinking is not new. Seymour Papert, a pioneer in artificial intelligence and an MIT professor, used the term in 1980 to envision how children could use computers to learn. But Jeannette Wing, in charge of basic research at Microsoft and former professor at Carnegie Mellon, gets credit for making it fashionable. In 2006, on the heels of the dot-com bust and plunging computer science enrollments, Wing wrote a trade journal piece, “Computational Thinking.” It was intended as a salve for a struggling field.

“Things were so bad that some universities were thinking of closing down computer science departments,” she recalled. Some now consider her article a manifesto for embracing a computing mindset.

Like any big idea, there is disagreement about computational thinking — its broad usefulness as well as what fits in the circle. Skills typically include recognizing patterns and sequences, creating algorithms, devising tests for finding and fixing errors, reducing the general to the precise and expanding the precise to the general.

It requires reframing research, said Shriram Krishnamurthi, a computer science professor at Brown, so that “instead of formulating a question to a human being, I formulate a question to a data set.” For example, instead of asking if the media is biased toward liberals, pose the question as: Are liberals identified as liberal in major newspapers more often or less often than conservatives are identified as conservative?

Krishnamurthi helped create “Introduction to Computation for the Humanities and Social Sciences” more than a decade ago because he wanted students “early in their undergrad careers to learn a new mode of thinking that they could take back to their discipline.” Capped at 20 students, the course now has a waitlist of more than 100.

Just as Charles Darwin’s theory of evolution is drafted to explain politics and business, Wing argued for broad use of computer ideas. And not just for work. Applying computational thinking, “we can improve the efficiencies of our daily lives,” she said in an interview, “and make ourselves a little less stressed out.”

Sequencing

Computing practices like reformulating tough problems into ones we know how to solve, seeing trade-offs between time and space, and pipelining (allowing the next action in line to begin before the first completes the sequence) have many applications, she said.

Consider the buffet line. “When you go to a lunch buffet, you see the forks and knives are the first station,” she said. “I find that very annoying. They should be last. You shouldn’t have to balance your plate while you have your fork and knife.” Wing, who equates a child filling her backpack to caching (how computers retrieve and store information needed later), sees the buffet’s inefficiency as a failure to apply logical thinking and sequencing.

Computational thinking, she said, can aid a basic task like planning a trip — breaking it into booking flights, hotels, car rental — or be used “for something as complicated as health care or policy decision-making.” Identifying subproblems and describing their relationship to the larger problem allows for targeted work. “Once you have well-defined interfaces,” she said, “you can ignore the complexity of the rest of the problem.”

Can computational thinking make us better at work and life? Krishnamurthi is sometimes seduced. “Before I go grocery shopping, I sort my list by aisles in the store,” he said. Sharing the list on the app Trello, his family can “bucket sort” items by aisle (pasta and oils, canned goods, then baking and spices), optimizing their path through Whole Foods. It limits backtracking and reduces spontaneous, “i.e., junk,” purchases, he said.

Despite his chosen field, Krishnamurthi worries about the current cultural tendency to view computer science knowledge as supreme, better than that gained in other fields. Right now, he said, “we are just overly intoxicated with computer science.”

It is certainly worth wondering if some applications of computational thinking are trivial, unnecessary or a Stepford Wife-like abdication of devilishly random judgment.

Alexander Torres, a senior majoring in English at Stanford, has noted how the campus’s proximity to Google has lured all but the rare student to computer science courses. He’s a holdout. But “I don’t see myself as having skills missing,” he said. In earning his degree he has practiced critical thinking, problem solving, analysis and making logical arguments. “When you are analyzing a Dickinson or Whitman or Melville, you have to unpack that language and synthesize it back.”

There is no reliable research showing that computing makes one more creative or more able to problem-solve. It won’t make you better at something unless that something is explicitly taught, said Mark Guzdial, a professor in the School of Interactive Computing at Georgia Tech University who studies computing in education. “You can’t prove a negative,” he said, but in decades of research no one has found that skills automatically transfer.

Still, he added, for the same reasons people should understand biology, chemistry or physics, “it makes a lot of sense to understand computing in our lives.” Increasing numbers of people must program in their jobs, even if it’s just Microsoft Excel. “Solving problems with computers happens to all of us every day,” he said. How to make the skills available broadly is “an interesting challenge.”

“It’s like being a diplomat and learning Spanish; I feel like it’s essential,” said Greer Brigham, a Brown freshman who plans to major in political science. He’s taking the course designed by Krishnamurthi, which this term is being taught by Stephen Brawner, a graduate student in robotics.

Building a solution

Mili Mitra, a junior majoring in public policy and economics who sat with a MacBook on her lap, would not have considered this class a year ago. But seeing group research projects always being handed off to someone with computing knowledge, she decided that she “didn’t want to keep passing them along.” She has learned to write basic code and fetch data sets through the internet to analyze things she’s interested in, such as how geographic proximity shapes voting patterns in the U.N. General Assembly.

Despite finding interactions with a computer much like “explaining things to a toddler,” Mitra credits the class for instilling the habit of “going step by step and building a solution.” She admits to being an impatient learner: “I jump ahead. In C.S. you don’t have a choice. If you miss a step, you mess up everything.”

Just as children are drilled on the scientific method — turn observations into a hypothesis, design a control group, do an experiment to test your theory — the basics of working with computers is being cast as a teachable blueprint. One thing making this possible is that communicating with computers has become easier.

“Block” programming languages like Scratch, released by the MIT Media Lab a decade ago, hide text strings that look like computer keys run amok. That makes coding look less scary. Instead of keyboard letters and symbols, you might select from a menu and drag a color-coded block that says “say ( ) for ( ) secs” or “play note ( ) for ( ) beats.” The colors and shapes correspond to categories like “sound” or “motion”; the blocks can be fit together like stacked puzzle pieces to order instructions. Students use this to, say, design a game.

‘Computer Science for All’

President Barack Obama’s “Computer Science for All” initiative, officially launched last year, resulted in educators, lawmakers and computer science advocates spreading the gospel of coding. It also nudged more states to count computer science toward high school graduation requirements. Thirty-two states and the District of Columbia now do, up from 12 in 2013, according to Code.org. It’s what Wing had hoped for when she advocated in her 2006 article that, along with reading, writing and arithmetic “we should add computational thinking to every child’s analytical ability.”

In an airy kindergarten classroom at Eliot-Pearson Children’s School, in the Tufts University Department of Child Study and Human Development, children program with actual blocks. Marina Umaschi Bers, a child development and computer science professor, created wooden blocks that bear bar codes with instructions such as “forward,” “spin” and “shake” that are used to program robots — small, wheeled carts with built-in scanners — by sequencing the blocks, then scanning them. Each “program” starts with a green “begin” block and finishes with a red “end.”

Coding for the youngest students has become the trendy pedagogy, with plentiful toys and apps like Bers’ blocks. Bers, who with MIT collaborators developed the block language ScratchJr, is evangelical about coding. Learning the language of machines, she said, is as basic as writing is to being proficient in a foreign language.

It may be a leap to think of talking to machines as child’s play. But when Bers chats with students as they sequence blocks, they hardly notice they are coding. “They say, ‘Well, I’m not programming,'” she said.

Consciously or not, this next generation may be effortlessly absorbing the computational thinking skills so many covet, and in the process refining what we mean by digital native.

— Laura Pappano is author of “Inside School Turnarounds: Urgent Hopes, Unfolding Stories.”

16948034
This image is copyrighted.