I got word earlier this week that The MathWorks (makers of MATLAB) had approved my request for funding to spruce up the Software Carpentry notes, and find out how scientists are actually using computers. I faxed a signed copy of the paperwork down to them today---with luck, work will start in a couple of weeks, and I'm very excited to have a chance to work with the NRC's Janice Singer on the survey. And since students (graduate and undergraduate alike) occasionally ask about how academic funding works, the text of the proposal is below the cut. It isn't quite the same as programming, but in the end it might be more useful...
In 200 words or less, describe your proposed project.
Software Carpentry is a widely-used open source introduction to basic software engineering skills for computational scientists. Originally developed for Los Alamos National Laboratory, it has been used by universities, companies, and government labs on four continents, and its site (http://swc.scipy.org) has had over 160,000 distinct visitors since August 2006. This project will (a) translate the code examples from Python to MATLAB to make them more accessible; (b) transform the course site into a wiki to encourage community contribution; and (c) survey professional MATLAB users to determine what development processes and tools they currently use so that the course materials can more directly address their needs. All material will be released under a Creative Commons license and/or published in peer-reviewed venues. The bulk of the project will be completed with six months of receipt of funding (ideally, before the end of 2008); follow-up work to assess the impact of the work will complete six months later.
What is the primary goal of your project and what educational problem or opportunity does your project address?
The problem that Software Carpentry addresses is that most scientific programmers don't know how to develop medium-to-large applications efficiently, primarily because they have never been introduced to modern development tools and techniques in a systematic way. We have repeatedly seen the existing course increase productivity by 20-25%, but there are still significant barriers to entry. One of the most important is the use of Python as an example language: while it is easier to learn than many alternatives, it is yet another learning curve for the course's audience to climb. Surveys indicate that 50-75% of the course's target audience are already familiar with MATLAB; translating the examples in the course material will therefore make it more accessible, which in turn should help computational scientists and engineers accomplish more with less pain.
What is your step-by-step plan to accomplish the goal outlined above?
Familiarization with the latest version of MATLAB (so that examples will not use deprecated or out-of-date features).
Updates to course content management tools to support parallel examples.
Translation of existing examples to static text.
Conversion of course content from static text to MediaWiki or Markdown wiki format.
(In parallel) Interview intermediate and expert MATLAB users to determine the scope and structure of the survey.
Prepare the survey, disseminate it through public forums and mailing lists, then collate and analyze the results.
Publish and disseminate the results, and feed them into further revisions or extensions of the course.
Track uptake and impact of the course material via activity on the web site, discussion in existing MATLAB user forums, etc., over a six-month period.
How will you use MathWorks products in your project?
All examples will be run and checked using the latest release of MATLAB. More importantly for this project, we will need to consult with trainers and educators, and to distribute notice of a survey through to current users through mailing lists and other forums.