Posts tagged ‘computing education’
William Wulf is the 2014 recipient of the ACM Karl V. Karlstrom Outstanding Educator Award
Wulf is recognized for contributions as a teacher, author, and national leader who focused attention and changed the national education agenda and in the process supported the needs of underserved and under-represented students. As Assistant Director of the National Science Foundation’s Directorate for Computer and Information Science & Engineering (CISE), he understood the role NSF played in supporting science and engineering in the US for both basic research and operation of several high performance computing centers and networks. As President of the US National Academy of Engineering, he advocated for advances in engineering education and technical literacy. Wulf is professor emeritus of Computer Science at the University of Virginia. An ACM Fellow, he received the 2011 ACM Distinguished Service Award.
I’m giving the keynote talk at the 2015 International Security Education Workshop at Georgia Tech today. I’ve never spoken on cyber security before, so the talk was challenging and fun to put together. I used some of the learning sciences research we’ve done in computing education to draw connections to cyber security education. The lessons I highlight are:
- Context matters. People only learn when they understand why the learning is useful.
- Identity matters. People who reject computer science (and that’s most people) will likely reject cyber security education, even if they need to know it. The cyber security learning that they need to know has to meet their identity and expectations. Don’t expect them to change who they are and what they think is important.
- Structure matters. Teaching something well, like using subgoal labeling, can dramatically improve learning.
(Click on the image below to get to the Slideshare site)
In the Preface to the new 4th ed book, I wrote a bit about what we know about how to teach computer science using Media Computation. These are probably useful in most CS classes, even without Media Computation:
Over the last 10 years, we have learned some of the approaches that work best for teaching Media Computation.
- Let the students be creative. The most successful Media Computation classes use open-ended assignments that let the students choose what media they use. For example, a collage assignment might specify the use of particular filters and com- positions, but allow for the student to choose exactly what pictures are used. These assignments often lead to the students putting in a lot more time to get just the look that they wanted, and that extra time can lead to improved learning.
- Let the students share what they produce. Students can produce some beautiful pictures, sounds, and movies using Media Computation. Those products are more motivating for the students when they get to share them with others. Some schools provide online spaces where students can post and share their products. Other schools have even printed student work and held an art gallery.
- Code live in front of the class. The best part of the teacher actually typing in code in front of the class is that nobody can code for long in front of an audience and not make a mistake. When the teacher makes a mistake and fixes it, the students see (a) that errors are expected and (b) there is a process for fixing them. Coding live when you are producing images and sounds is fun, and can lead to unexpected results and the opportunity to explore, “How did that happen?”
- Pair programming leads to better learning and retention. The research results on pair programming are tremendous. Classes that use pair programming have better retention results, and the students learn more.
- Peer instruction is great. Not only does peer instruction lead to better learning and retention outcomes, but it also gives the teacher better feedback on what the students are learning and what they are struggling with. We strongly encourage the use of peer instruction in computing classes.
- Worked examples help with learning creativity. Most computer science classes do not provide anywhere near enough worked-out examples for students to learn from. Students like to learn from examples. One of the benefits of Media Computation is that we provide a lot of examples (we’ve never tried to count the number of for and if statements in the book!), and it’s easy to produce more of them. In class, we do an activity where we hand out example programs, then show a particular effect. We ask pairs or groups of students to figure out which program generated that effect. The students talk about code, and study a bunch of examples.
My colleague, Amy Bruckman, wrote a blog post about the challenges that nonprofits face when trying to develop and maintain software. She concludes with an interesting argument for computing education that has nothing to do with learning programming that everyone needs. I think it relates to my question: What is the productivity cost of not understanding computing? (See post here.)
This is not a new phenomenon. Cliff Lampe found the same thing in a study of three nonprofits. At the root of the problem is two shortcomings in education. So that more small businesses and nonprofits don’t keep making this mistake, we need education about the software development process as part of the standard high-school curriculum. There is no part of the working world that is not touched by software, and people need to know how it is created and maintained. Even if they have no intention of becoming a developer, they need to know how to be an informed software customer. Second, for the people at web design firms who keep taking advantage of customers, there seems to be a lack of adequate professional ethics education. I teach students in my Computers, Society, and Professionalism class that software engineers have a special ethical responsibility because the client may not understand the problem domain and is relying on the knowledge and honesty of the developer. More people need to get that message.
My first thought when seeing this article was, “Well, I’m glad it’s not just CS.” (See my post about how recruiting teachers is our biggest challenge in CS10K.) And my second thought was, “WHERE are we going to get all the teachers we need, across subjects?!?” And how are we going to retain them?
Several big states have seen alarming drops in enrollment at teacher training programs. The numbers are grim among some of the nation’s largest producers of new teachers: In California, enrollment is down 53 percent over the past five years. It’s down sharply in New York and Texas as well.
In North Carolina, enrollment is down nearly 20 percent in three years.
“The erosion is steady. That’s a steady downward line on a graph. And there’s no sign that it’s being turned around,” says Bill McDiarmid, the dean of the University of North Carolina School of Education.
Why have the numbers fallen so far, so fast?
McDiarmid points to the strengthening U.S. economy and the erosion of teaching’s image as a stable career. There’s a growing sense, he says, that K-12 teachers simply have less control over their professional lives in an increasingly bitter, politicized environment.
Repeatability presumes evidence (which can be repeated). Computer scientists have not valued evidence and repeatability as much as we need to for rigor and scientific advancement — in education, too. One of my favorite papers by Michael Caspersen is his Mental models and programming aptitude ITICSE 2007 paper where he and his colleagues attempt to replicate the results of the famous and controversial Dehnadi and Bornat paper (see here). Michael and his colleagues are unable to replicate the result, and they propose a research method for understanding the differences. That’s good science — attempting to replicate another’s result, and then developing the next steps to understand the differences.
Science advances faster when we can build on existing results, and when new ideas can easily be measured against the state of the art. This is exceedingly difficult in an environment that does not reward the production of reusable software artifacts. Our goal is to get to the point where any published idea that has been evaluated, measured, or benchmarked is accompanied by the artifact that embodies it. Just as formal results are increasingly expected to come with mechanized proofs, empirical results should come with code.
If a paper makes, or implies, claims that require software, those claims must be backed up.
The comments from students in the article below from Duke are just like the ones I hear from my students when I ask them how our introductory class is going. “Way better than I expected” and “I thought it would be all geeky” and “I can see using this!” You’d think with all the press about computing education these days that we would wouldn’t still have to explain all of this, but yeah, we do.
“I thought I would be surrounded by tech geeks who sat alone at their computers all day,” Walker said. “But I came to realize that computer science lets you do things that are applicable to all sorts of fields.”
Now she’s using her new computational savvy to expand a nonprofit she founded in high school to raise money for an elephant sanctuary in Thailand.
“You wouldn’t think that running a nonprofit requires a lot of technical skills, but it does,” she said. “You get a problem and you think, ‘I could solve this on paper and it would take me 25 hours, or I can write one line of code and all of a sudden there’s my answer.’ The efficiency of it is super cool.”