Prototyping

Introduction

It is of course possible for one to make a neat contribution to applied computational research without a single line of program code. However, it is rare.

Whatever analysis, processing, calculation, simulation or visualization we make for our work is already in itself a contribution. Building it into a clear, coherent, self-sufficient piece of software makes it easier for us ourselves to make edits and improvements, execute replicas, and to build upon our own work. Furthermore, if we share these codes with the community (which we will work on in a future module), science can take bigger and faster leaps as we avoid reinventing the wheel day in, day out. One the lowest learning-curve tools for this purpose in the present day is Python; it is widely known, accepted, and appreciated in the scientific community. In this module, we will prototype a bit in Python to get the ball rolling.

Learning outcomes

This module will help you do the following:

Readings

Any online resource for Python 3 is fine. The McGill Library contains various ebooks that may be helpful:

Tools

You can either install Python on your computer by downloading a software such as IDLE or use Python in Colab. Either option works just as well and the former does not require you to create any online accounts.

Assessment: prototyping

Submission deadline: by Session 8.

Submitted material: a single PDF file containing either the Python code as a syntax-highlighted printout or a URL of a publicly readable Colab sheet (the latter option is easier, but requires a third-party account, for which the use of Colab is optional), followed by the self/peer assessments in writing, if applicable.

Basic stage (up to 5 pts)

First draft of computational implementation. Remember to clearly indicate any parts of the code that are based on an existing source (start, end, source, what is modified). Reuse and modification of code is allowed but must be clearly documented.

Rubric

  1. Quality and functionality of code — amount, sophistication, originality; all on a scale of 0 (insufficent) or 1 (adequate)
  2. Self assessment: what is good and what is missing in your own prototype at present? (0 = none, 1 = actionable insight)
  3. Peer assessment: what is good and what is sorely missing in another participants (please identify clearly whose work you assess) prototype? (0 = none, 1 = actionable insight)

In-depth stage (up to 3 pts)

Include additional comments in your code that facilitate legibility and reproducibility. Each helpful (non-evident, yet clear) commented block of functionality gives one point, up to a maximum of three total.