Software Carpentry

Helping scientists make better software since 1997

Partial Outline of New Version of Course

I have put a mostly-complete draft of my ideas for a rewrite of the course online at  This version would start with specific problems, then backfill the tools and skills needed to solve them, but there are some big outstanding issues:

  1. There still isn’t anything on the computational thinking skills that Jon Udell identified.  I don’t know how to tackle these without relying more than I want to on closed-source offerings like Yahoo! Pipes that could disappear at a moment’s notice.
  2. I just can’t see how to fit some topics—particularly object-oriented programming and web programming—into the available space (a maximum of two hours of lecture and four hours of lab for each). What are the minimum useful problem/lecture for each?

There are a few others as well (just search for ‘TODO’), but those are the big ones.  Any help you can give would be very welcome.

Written by Greg Wilson

2009/09/15 at 17:53

Posted in Version 4

4 Responses

Subscribe to comments with RSS.

  1. […] posted a note on the Software Carpentry blog describing how I plan to rewrite the course, and asking for help with some outstanding issues.  […]

  2. First class functions problem — this covers about half what you’re looking for: Stepper utility class for batch jobs.

    App takes list of file paths and generates HTML wrapping: .txt files are opened and contents wrapped in pre-tags. .html files are put in anchor tag. .jpg files are put in img tag.

    def handle_html(path): return ‘%s‘ %(path, path)

    ext2f = {‘html’: handle_html, …}

    class Stepper:
    def add(self, f, *a, **k):
    self.steps.append(f, a, k)
    def run(self):
    for func, a, k in self.steps:
    yield func(*a, **k)
    def main():
    stepper = Stepper()
    body = []
    for path in open(‘job_listing.txt’):
    ext = os.path.split(path.strip())[1]
    func = ext2f.get(ext)
    if func is not None:
    for markup in
    f = open(‘output.html’)
    f…etc. …

    Expand: use *args and **kw. Plugin system: ext2f extendable; Stepper maintainer doesn’t know what will be called. Alternately: make it a pipeline.

    Sam Penrose

    2009/09/15 at 22:39

  3. This is a little bit off-topic, but have you made explicit what the course objectives are? In particular, for the topic areas you’ve outlined:

    – Which topics are the ones that you are aiming for exposure/familiarity?
    – What tasks do you expect the students to be able to do coming out of the class?
    – What are the “big ideas” that should endure in the students’ minds even when they’ve forgotten everything else?

    (these categories come from “Backward Design” by Wiggins and McTighe).


    2009/09/16 at 18:27

  4. @Lorin Yes—see is a start (echoed in part at, and describes the people the course is trying to serve.

    Greg Wilson

    2009/09/16 at 18:34

Comments are closed.

%d bloggers like this: