Software Carpentry

Helping scientists make better software since 1997

What a Proposal Looks Like

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.

Advertisements

Written by Greg Wilson

2008/06/13 at 14:18

Posted in MathWorks

6 Responses

Subscribe to comments with RSS.

  1. Congratulations! Glad to hear that your rejection streak is over.

    It’ll be interesting to see how the matlab examples correspond to the existing python code.

    Jeff Balogh

    2008/06/13 at 15:10

  2. Great document! Thanks for posting it… while I am not writing up anything like this in any observable time 🙂 , it definitely has a great educational value.

    Serguei

    2008/06/13 at 16:35

  3. I think it is great that you are posting the proposal Greg! Proposal writing is one of the things that many graduate students do not get exposed to during school and few good resources are available, so a successful example is hugely useful.

    BUT you have to qualify this example with a note on the fact that this is one type of proposal, very focused on a very specific experiment. Sometimes we are asked to submit more general open-ended proposals and some times we are asked to developed longer-term applied-research proposals. Both these styles would be quite different than this one. And of course there are even more styles – just a look at NSERC’s program will convince anyone.

    Good luck with the study!
    eleni

    Eleni Stroulia

    2008/06/13 at 16:44

  4. “translate them from Python to Matlab to make them more accessible”

    free open-source language —> expensive for-profit platform is “more accessible”??

    Kris

    2008/06/13 at 19:31

  5. Congratulations Greg! I have recommended Software Carpentry to a few people and they have found it to be very useful. It is a great endeavor, I wish you all the best with the project!

    Olivier

    2008/06/13 at 21:11

  6. @Kris: yes — as the proposal says, half to three quarters of students already speak MATLAB, so providing examples in that language as well as Python should lower barriers to entry. People who don’t have/can’t afford MATLAB, or want to learn Python for its own sake, will still have everything they need.

    Greg Wilson

    2008/06/14 at 05:52


Comments are closed.

%d bloggers like this: