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
- 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:
- Basic web programming, with much-revised versions of client, server, and security
- 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
- Three lecture-length examples, building very simple versions of core tools that haven't been covered elsewhere:
- data lineage
- continuous integration
- data consistency checking
- Give in, and do the scientific programming stuff anyway:
- floating-point arithmetic
- Python's Numeric package
- data visualization
- Scrap the single lecture on development process, and put in four full lectures on the subject
- UML-based processes (probably ICONIX)
- something else (not entirely sure what)
- Something else entirely --- suggestions would be very welcome.
Please let me know what you think.