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
- 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.
- 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.
- There is no midterm or final examination.
Date | Topics | Events |
---|---|---|
2010-09-07 | Introduction to course | Post single-paragraph professional biography to course web site |
2010-09-09 | Associative data structures: sets; dictionaries | Problem set #1 (sets & dictionaries) |
2010-09-14 | Tracking down bugs: visual debuggers; breakpoints; watchpoints; debugging strategies | |
2010-09-16 | Read text files: data processing patterns; incremental development | Problem set #2 (parsing); in-lab practical exam on debuggers and debugging |
2010-09-21 | Quality assurance: data processing patterns; incremental de | Problem set #3 (designing tests) |
2010-09-23 | Regular expressions: patterns; groups; operators; anchors; finite state machines | Problem set #4 (regular expressions) |
2010-09-28 | Iterative program design: choosing data structures; refactoring; tuning | In-lab "live design" exercise |
2010-09-30 | First-class functions: functions as objects; apply; map; reduce | Problem set #5 (functional programming) |
2010-10-05 | Coding style: cognitive concerns; style rules; refactoring revisited | Problem set #6 (code reviews); in-lab code review |
2010-10-07 | File systems programming: directories as files; permissions; properties | Problem set #7 (finding duplicate files) |
2010-10-12 | Version control: motivating problems; update/commit; merge | In-lab setup and practice with Subversion or Mercurial |
2010-09-14 | Image processing: image representation; operators; recursion | Problem set #8 (image transformations) |
2010-10-19 | Data parallelism: array operations; shape operations; masking | Problem set #9 (numerical linear algebra and cellular automata) |
2010-10-21 | Performance: algorithmic vs. actual efficiency; profiling; tuning | Problem set #10 (profiling and speeding up small programs) |
2010-10-26 | Task automation: dependencies; dependency graphs; rules | Problem set #11 (using Make/SCons for data provenance) |
2010-10-28 | Spreadsheets: data representation; unitary operations; aggregation; visualization | Problem set #12 (data analysis using Excel or Calc); in-lab discussion of data visualization |
2010-11-02 | Databases: simple queries; filtering; aggregation; sub-queries | Problem set #13 (data analysis using SQL) |
2010-11-04 | XML: elements vs. attributes; syntax; recursion | Problem set #14 (extracting information from XML documents) |
2010-11-09 | Object-oriented programming: classes vs. instances; defining methods; constructors; data hiding | |
2010-11-11 | Object-oriented programming (cont.): polymorphism; inheritance; operator overloading | Problem set #15 (rewriting previous examples using classes) |
2010-11-16 | Information architecture: data modeling; entity-relationship analysis; class diagrams | Problem set #16 (designing data representations); in-lab design of data representations for simple problems |
2010-11-18 | User interfaces: reactive programming; basic GUI components | In-lab demonstration of GUI toolkit |
2010-11-23 | User interfaces (cont.): model-view-controller; design guidelines | Problem set #17 (constructing GUI controllers for previous example programs) |
2010-11-25 | Web programming: HTTP request cycle; passing parameters; special characters; fetching data | Problem set #18 (downloading and analyzing data) |
2010-11-30 | Web programming (cont.): providing data; maintaining state; security concerns | Problem set #19 (a simple data server); in-lab guest lecture on information security |
2010-12-02 | Parallel programming: task and data decomposition; Amdahl's Law | |
2010-12-07 | Parallel programming (cont.): map/reduce | Problem set #20 (map/reduce parallelization of previous example) |
2010-12-09 | Teamwork: key empirical results in software engineering | |
2010-12-14 | Teamwork (cont.): SCRUM; teamware | In-lab demonstration of Trac and Google Code |
2010-12-16 | Review |