REFERENCE - SESSION - IN-DEPTH EXERCISE - PROJECT GUIDANCE

Why do we write software?

Some scenarios:

Is there anything special about research software? Yes!

Questions to answer (from class discussion):

  1. What problem will it solve?
  2. How beneficial will it be?
  3. What kinds of methods?
  4. Will it be efficient enough?
  5. What programming language?
  6. Is it sufficiently user-friendly?
  7. Is it a correct algorithm / is it guaranteed to be good enough?
  8. Is it an improvement over existing methods?

My list of questions to answer:

  1. What is the problem to solve?
  2. Who is the typical user?
  3. Use case(s)?
  4. Licensing?
  5. Background research to do?
  6. Data requirements?
  7. Language/framework?
  8. Hardware?
  9. Operating system?
  10. 3-5 milestones?
  11. Potential challenges?

Applying these ideas

For each of the following projects, take a few minutes to answer my list of questions.

The projects:

  1. command line tool that takes a URL and writes plain text to disk

  2. library that compares non-standard place names to a curated dictionary and does smart-matching

  3. real-time prediction of match outcomes

  4. battery tracker for smartphones that identifies events that affect battery life (like software updates, new apps, usage changes)

  5. predictive elephant movement simulator