Teaching basic lab skills
for research computing

What Else for Software Carpentry?

16 lectures are now in place (more or less), which means I have 8 more to do. The syllabus shows what I've covered already; my current plans include:

  • unit testing
  • XML
  • SQL
  • more SQL
  • small-team development process

What do you think the other three should cover (keeping in mind that this is supposed to be a course on basic software engineering, rather than scientific programming)? Options include:

  1. Basic web programming, with much-revised versions of:
    • http://www.third-bit.com/swc1/www/client.html
    • http://www.third-bit.com/swc1/www/server.html
    • http://www.third-bit.com/swc1/www/security.html
  2. Integration, including:
    • wrapping C code so that it can be called from Python
    • using popen() and its ilk to run external programs
    • (probably) something on refactoring to make code more testable (as per Feathers' excellent Working Effectively with Legacy Code
  3. Three lecture-length examples, building very simple versions of core tools that haven't been covered elsewhere:
    • data lineage
    • continuous integration
    • data consistency checking
  4. Give in, and do the scientific programming stuff anyway:
    • floating-point arithmetic
    • Python's Numeric package
    • data visualization
  5. Scrap the single lecture on development process, and put in four full lectures on the subject
    • XP
    • UML-based processes (probably ICONIX)
    • something else (not entirely sure what)
  6. Something else entirely — suggestions would be very welcome.

Please let me know what you think.

Dialogue & Discussion

You can review our commenting policy here.