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 http://www.software-carpentry.org/capstone.html. This version would start with specific problems, then backfill the tools and skills needed to solve them, but there are some big outstanding issues:
- 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.
- 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.
[...] posted a note on the Software Carpentry blog describing how I plan to rewrite the course, and asking for help with some outstanding issues. [...]
The Third Bit » Blog Archive » Help Wanted: New Version of Software Carpentry Course
2009/09/15 at 17:55
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:
try:
yield func(*a, **k)
except:
self.rollback()
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:
Stepper.add(func)
for markup in stepper.run():
body.append(markup)
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
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).
Lorin
2009/09/16 at 18:27
@Lorin Yes—see http://softwarecarpentry.wordpress.com/2009/08/21/the-big-picture/ is a start (echoed in part at http://software-carpentry.org/skills.html), and http://software-carpentry.org/users.html describes the people the course is trying to serve.
Greg Wilson
2009/09/16 at 18:34