What do scientists and engineers need to know about supercomputing?

July 25, 2010 at 10:57 am 8 comments

“Anyone looking to do relevant computational work today in the sciences and engineering must have these skills,” said Urick.

To address this fundamental need, the Texas Advanced Computing Center (TACC) created a unique curriculum of courses for undergraduate and graduate students at The University of Texas at Austin. Offered through the College of Natural Sciences Division of Statistics and Scientific Computation, undergraduate students can complete coursework to earn a Certificate of Scientific Computation, while graduate students finish a Portfolio in Scientific Computation.

via Texas Advanced Computing Center: Building skills that count

It’s an interesting question. Given the importance of computational science, what do all scientists and engineers need to know about high-performance computing? That’s not the same as what everyone needs to know about computing. In some sense, the argument is that this is closer to vocational training, so it’s easier to sell.

Entry filed under: Uncategorized. Tags: , .

Cynical view: How do we get more college graduates? More evidence for aptitude-treatment interactions

8 Comments Add your own

  • 1. bonankz  |  July 26, 2010 at 5:46 am

    very interesting. computing has become a wide study subject now.

  • 2. Greg Wilson  |  July 26, 2010 at 9:46 pm

    I started thinking about “what…all scientists and engineers need to know about high-performance computing” in the early 1990s, and realized that the question is premature: we should first ask, “What do all scientists and engineers need to know about computing?” Asking someone who has a first-year course in C or Java and to do leading-edge science on massively-parallel hardware is about as fair as asking someone who has learned how to differentiate polynomials to solve problems in tensor calculus; if you hang around supercomputing centers long enough, you’ll realize it has roughly the same success rate.

    I’ve been trying to construct a better answer for the past thirteen years; Software Carpentry (http://software-carpentry.org/blog/) is what I’ve arrived at. It’s the 10% of software engineering (with a very small ‘e’) that scientists and engineers need to know *before* they tackle GPUs, clusters, and other fashionable Everests. Like sanitation and vaccination, the basic skills it teaches are cheap and effective; unfortunately, the other characteristic they share is that they’re not really what photo ops are made of. We’ve also found a lot of resistance based on survivor bias: all too often, senior scientists who *have* managed to get something to work on a supercomputer say, “Well, I didn’t need version control or unit testing or any of that guff, so why should my students waste their time on it?”

    I’d be very interested in hearing from other people about two aspects of the course (which we’re translating from static notes to online video):

    1. Is this the right content?

    2. How could/should we evaluate its success?

    The rules for the first are simple: if you want to suggest a topic that should be added, you have to identify one that’s less important. Most scientists (rightly) regard computing as a tax they have to pay in order to get results; they’re willing to give us the equivalent of a one-term course (25 lecture hours and 150 lab hours, plus or minus), but no more, so we can’t take a kitchen sink approach.

    The second question is proving much harder. We aren’t primarily interested in whether people who use this course material become better programmers (though it would be nice to know that as well). What we really want to know is, are they better scientists? Do improvements in their computing skills translate into more and/or better science, and if so, why and how? Follow-up surveys in which they self-report are easy to do, but (a) there’s no way to calibrate them, and (b) there’s a strong survivor bias in the results. What would readers of this blog do instead? What would they/you accept as evidence, of what, and why?

  • 3. Charles Xie  |  July 27, 2010 at 1:00 pm

    I personally think the idea is difficult to sell outside the high-performance circle, if “supercomputing” only means dealing with monster machines such as the Blue Waters.

    I don’t know why multicore computing–a cousin of supercomputing–keeps being ignored in this kind of conservation. For me, it is much more realistic to argue that students need to learn parallel computing because from now on all computers will have 2*n cores and vectorization is a must if software computers want to be competitive.

    One can say this may be more related to job training for programmers. In my own programming experience, however, I found multicore/multithread programming very hard to learn. It needs a deep conceptual understanding about parallel computing, which I didn’t receive enough from my own schooling and professional training.

    • 4. gasstationwithoutpumps  |  July 27, 2010 at 9:09 pm

      What about starting students in multi-thread programming from their first intro to programming, as Scratch does (scratch.mit.edu)?

      • 5. Greg Wilson  |  July 28, 2010 at 12:44 pm

        You mean, why not include what is essentially still an open problem in computer science (concurrency) in their introduction to programming? 🙂

      • 6. gasstationwithoutpumps  |  July 28, 2010 at 1:46 pm

        Greg asked You mean, why not include what is essentially still an open problem in computer science (concurrency) in their introduction to programming?

        Yes, exactly. Make concurrency seem as natural as iteration, and get students thinking about race conditions early. It’s more likely to be productive than telling everyone that it is too hard to think about.

      • 7. Greg Wilson  |  July 28, 2010 at 4:20 pm

        Make concurrency seem as natural as iteration

        Sure—and let’s make the Halting Problem solvable at the same time 🙂

  • […] Guzdial, a leading researcher in computing education, blogged a few days ago about the Texas Advanced Computing Center’s training program for computational […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,184 other subscribers


Recent Posts

Blog Stats

  • 2,053,486 hits
July 2010

CS Teaching Tips

%d bloggers like this: