Computational Science needs CS Education
December 7, 2010 at 12:36 pm 8 comments
At the BPC Alliance PI’s meeting last week, there was discussion of a recent meeting in DC where the attendees were talking about the importance of computational science and engineering. The problems of CS education were presented (e.g., low enrollment, high failure rates), the response was, “But what does that have to do with computational science?” Does computational science need computer science education, or can they just go it alone?
To start with, this is a big question. Scaffidi, Shaw, and Myers did a detailed analysis of the size of the end-user programming community. They estimate that by 2012, there will be about 3 million professional software developers in the United States, and about 13 million people who program as part of their jobs but not as software developers. One way to think about it as a CS educator: For every one person in our classes, there are at least four more who will be using computer science — but may not have had any formal computing education. Not all of those 13 million will be computational scientists and engineers, but a great many will be.
Brian Dorn’s dissertation work explored what do end-users know (almost all self-taught), how do they know it, and importantly, what don’t they know. He interviewed them, assessed their knowledge, and watched them while they programmed. He found that they are seriously hindered because they don’t have fundamental computer science knowledge. They don’t know the terminology of CS, so they sometimes found documentation confusing. They didn’t know the ways that programmers read code. For example, he gave an end-user programmer some JavaScript code to read and modify. The user saw a variable (“foo”) then did a search based on that (googling “JavaScript foo”). End-user programmers don’t necessarily know which variables and functions should be found within the code, and which are likely to be part of an external API whose documentation might really help to understand what the program is doing. Once, one of Brian’s participants accidentally stumbled onto a Java page while he was searching for JavaScript information. The participant then wasted a half hour before figuring out the error. Brian’s dissertation explored how to provide CS education to professionals who don’t have a CS background. Could we do this better at the undergraduate level?
“Okay, so maybe scientists and engineers need some CS at the undergraduate level,” you might be thinking. “But why us? Let the physicists teach their own!” My experiences this last year suggest that that doesn’t work well.
- Matter and Interactions is a new Physics textbook series by Ruth Chabay and Bruce Sherwood, where students program in VPython as part of their labs. A three-body problem can’t be solved mathematically, but you can create a pretty good simulation that works well. We’re using M&I here at Georgia Tech, and one of the challenges of using it is finding teachers. I’ve talked to the folks involved in using it here. Physics professors want to teach Physics, not variables or for loops. There’s some talk around here about requiring GT students to take CS before Physics, so that the physicists can assume the CS knowledge already.
- I’ve visited a lot of schools this last year. At one college, I got to visit with non-CS faculty who teach in a computational science program and then with some of the students in that program. The non-CS faculty told me that they hated teaching CS — they recognized that they weren’t good at it, and it wasn’t of any interest or value for them to get better at it. The students agreed that the non-CS faculty were bad at it. “They just throw a program at us, and say, ‘Here, read this. Figure out how loops work.'”
Computer science professors may not be great at teaching CS (consider our failure rates in CS1), but we have much greater incentive to get better at it than a Physics or Biology professor. The SIGCSE Symposium draws around 1200 faculty each year. That’s a lot of people working at becoming better CS teachers. On average, a CS professor is going to be better at teaching computer science to future computational scientists and engineers than will the professors in science and engineering.
Computational science and engineering needs CS education to be healthy and growing. Decreasing interest in CS and rising failure rates in introductory CS classes is a problem for all of STEM, not just CS. All of STEM is going to rely on computing, and their students need some CS classes, not just learning on their own. Computer science professors are the best bet that they have for teaching CS well to STEM students.
Entry filed under: Uncategorized. Tags: computational science, computing education research, STEM, teachers.
1.
Greg Wilson | December 7, 2010 at 2:03 pm
We surveyed scientists online in the fall of 2008 (1972 respondents, results published in http://portal.acm.org/citation.cfm?id=1556928) to find out what they did and didn’t know. The results confirmed what I’ve seen over and over since I started working in HPC in the mid-1980s, and what others have reported elsewhere: the biggest bottleneck in computational science isn’t a lack of computing cycles, but a lack of basic software development skills. Most scientists have never been shown how to structure a large (or even small) piece of software, how to use version control to track and share changes, etc. — most are instead in the position of someone who’s had a few driving lessons in a family car, and is then handed the keys to an 18-wheeler and told to back it into a parking spot. Software Carpentry (http://software-carpentry.org) is our attempt to give scientists and engineers the foundation they need, in the time they have available (as Mark has observed, all decisions about education ultimately come down to economics — in this case, the currency is time).
It’s important to note, though, that mainstream CS courses usually don’t meet this group’s needs. Most CS departments don’t explicitly teach software development, or if they do, it’s segregated into one course on software engineering (I’ve never seen a graphics or database course spend time on testing, refactoring, etc.). Math & stats departments realized a long time ago that what they teach to biologists and mechanical engineers has to be different from what they their majors; I think the three-way split in the intro course at Georgia Tech is a good start, but it needs to be carried through into upper-year courses as well.
2. Computational Science needs CS Education: But Does It Need CS? | The Becker Blog | December 7, 2010 at 2:42 pm
[…] Computational Science needs CS Education « Computing Education Blog. Computer science professors may not be great at teaching CS (consider our failure rates in CS1), but we have much greater incentive to get better at it than a Physics or Biology professor. […]
3.
Mark Guzdial | December 7, 2010 at 2:55 pm
It’s a great point that you’re both making, Katrin and Greg. If we were going to be entrusted with preparing the computational abilities of the next generation of computational scientists and engineers, we would have to figure out what they need — we can’t just give them what we give our own majors, or simply what we think is most important. In a real sense, we need to engage in a requirements analysis or knowledge engineering practice.
4.
Owen Astrachan | December 7, 2010 at 8:39 pm
“On average, a CS professor is going to be better at teaching computer science to future computational scientists and engineers than will the professors in science and engineering.”
I’m not sure that statement is true, but it might be.
5.
Mike Lutz | December 10, 2010 at 10:44 am
Maybe the answer (or an answer) is to have the software engineering department (or the lonely software engineers in a CS department) create the courses for those who develop software in other disciplines. This is almost a reprise of the reasons we created a software engineering program at RIT; traditional CS faculty are, on the whole, uninterested in issues of design, construction, testing, version control, and a whole host of issues critical to developing robust, high-quality software.
6. Teaching computational thinking part 2 « Quantum Progress | December 10, 2010 at 8:45 pm
[…] Guzdial, a computer science professor at Georgia Tech, wrote this equally fascinating blog post, Computational Science needs CS Education‚ which explores a number of fascinating trends, including the statistic that for every 1 student […]
7.
Adding computational modeling in Python doesn’t lead to better Physics learning: Caballero thesis, part 1 « Computing Education Blog | July 29, 2011 at 7:49 am
[…] course. (This study has already been accepted for publication in a physics journal.) I’ve mentioned M&I before — it’s an approach that uses programming in VPython for some of the labs and homework. […]
8.
Let’s call It “Computer Science” AND “Programming”: The fat line where most people will be « Computing Education Blog | June 6, 2012 at 8:08 am
[…] sharp distinction is not how people work today. Chris Scaffidi, Mary Shaw, and Brad Myers explained this in 2007. For every software developer in the world, there are four more […]