Home> Blog> That's, Uh, Pretty Ambitious

That's, Uh, Pretty Ambitious

This post originally appeared on the Software Carpentry website.

The title of this post is taken from the reaction of the first person I showed this course schedule to. If we're really going to teach Software Carpentry in one university term (12-13 weeks), this is the pace we'll have to move at. What do you think? Is it crazy, or just nuts? And what, if anything, can be done about it?

Notes

  1. This course is designed for graduate students in science and engineering and their professional peers, which allows a faster pace than would otherwise be possible.
  2. All problem sets are due one week after being assigned; their due dates aren't marked to avoid cluttering the table. Based on past experience, each problem set is 4-6 hours of work.
  3. There is no midterm or final examination.
DateTopicsEvents
2010-09-07Introduction to coursePost single-paragraph professional biography to course web site
2010-09-09Associative data structures: sets; dictionariesProblem set #1 (sets & dictionaries)
2010-09-14Tracking down bugs: visual debuggers; breakpoints; watchpoints; debugging strategies
2010-09-16Read text files: data processing patterns; incremental developmentProblem set #2 (parsing); in-lab practical exam on debuggers and debugging
2010-09-21Quality assurance: data processing patterns; incremental deProblem set #3 (designing tests)
2010-09-23Regular expressions: patterns; groups; operators; anchors; finite state machinesProblem set #4 (regular expressions)
2010-09-28Iterative program design: choosing data structures; refactoring; tuningIn-lab "live design" exercise
2010-09-30First-class functions: functions as objects; apply; map; reduceProblem set #5 (functional programming)
2010-10-05Coding style: cognitive concerns; style rules; refactoring revisitedProblem set #6 (code reviews); in-lab code review
2010-10-07File systems programming: directories as files; permissions; propertiesProblem set #7 (finding duplicate files)
2010-10-12Version control: motivating problems; update/commit; mergeIn-lab setup and practice with Subversion or Mercurial
2010-09-14Image processing: image representation; operators; recursionProblem set #8 (image transformations)
2010-10-19Data parallelism: array operations; shape operations; maskingProblem set #9 (numerical linear algebra and cellular automata)
2010-10-21Performance: algorithmic vs. actual efficiency; profiling; tuningProblem set #10 (profiling and speeding up small programs)
2010-10-26Task automation: dependencies; dependency graphs; rulesProblem set #11 (using Make/SCons for data provenance)
2010-10-28Spreadsheets: data representation; unitary operations; aggregation; visualizationProblem set #12 (data analysis using Excel or Calc); in-lab discussion of data visualization
2010-11-02Databases: simple queries; filtering; aggregation; sub-queriesProblem set #13 (data analysis using SQL)
2010-11-04XML: elements vs. attributes; syntax; recursionProblem set #14 (extracting information from XML documents)
2010-11-09Object-oriented programming: classes vs. instances; defining methods; constructors; data hiding
2010-11-11Object-oriented programming (cont.): polymorphism; inheritance; operator overloadingProblem set #15 (rewriting previous examples using classes)
2010-11-16Information architecture: data modeling; entity-relationship analysis; class diagramsProblem set #16 (designing data representations); in-lab design of data representations for simple problems
2010-11-18User interfaces: reactive programming; basic GUI componentsIn-lab demonstration of GUI toolkit
2010-11-23User interfaces (cont.): model-view-controller; design guidelinesProblem set #17 (constructing GUI controllers for previous example programs)
2010-11-25Web programming: HTTP request cycle; passing parameters; special characters; fetching dataProblem set #18 (downloading and analyzing data)
2010-11-30Web programming (cont.): providing data; maintaining state; security concernsProblem set #19 (a simple data server); in-lab guest lecture on information security
2010-12-02Parallel programming: task and data decomposition; Amdahl's Law
2010-12-07Parallel programming (cont.): map/reduceProblem set #20 (map/reduce parallelization of previous example)
2010-12-09Teamwork: key empirical results in software engineering
2010-12-14Teamwork (cont.): SCRUM; teamwareIn-lab demonstration of Trac and Google Code
2010-12-16Review