Skip to content

Training Levels

Richard Darst edited this page Jan 22, 2018 · 15 revisions

This page lists a structured training program for computational scientists. The goals are:

  • Gamify learning. Provide some psycological rewards.
  • Make it clear what courses are at what level, and what levels are useful for each person. There should be less of "I might go to this, but it's too advanced/simple for me and thus irrelevant"
  • Provide more tangible benefits for education (e.g. group leader sees value in reaching a level)

We divide courses into for levels, A-D, to represent the progression of skills and the need for basic uses vs HPC users. Each level has some core program, and then other optional electives or tracks.

There are four core levels providing core skills which almost everyone should know (A-D, come up with better names). Then, there are "electives" which are at each level, which each person can need. Each level provides core requirements, and electives (short things, good things to know) and tracks (longer courses in a topic).

Most lessons come from existing material from other parties. We don't want to recreate everything ourselves.

The levels

Class A (basic local resources, 1 hour only)

  • A01: Intro to university resources
    • Example topics which Aalto would include: Aalto managed computer basics. Installing own packages. Basic data management and data storage locations. Remote access (shell & data). How to get support, where, etc.
  • A10: Set Windows/Mac for science
    • OS-specific 1 hour lesson, "how to set up your computer to do the basic work on Windows/Mac (since linux OK by default?). Goal is to make the OSs somewhat compatible on the command line.
    • A10W, A10M for windows and mac

Class B (using command line and/or Linux somewhat well, 1 day)

Core track:

  • B10: Shell use
    • Files, dirs, permissions, filesystems, swcarpentry shell-novice
    • Shell use (shells, tab completion, paths, programs, environment, etc) (shell-novice)
  • B14: Data Management
    • Data management
    • Basic security
  • B20: Shell scripting
    • Shell scripting (simple automation, perhaps bare minimum to understand Makefiles: e.g. pipes, ;, tests, ...) (shell-novice)
  • B21: Version control
    • Version control (simple git use: checking in, primarily using via gitlab or github and GUIs and archeology)(swcarpentry or coderefinery courses, maybe make a new simple course: git for normal people)
  • B22: SSH, SSH keys, remote access
    • ssh, ssh keys, remote access
  • B23: Text editors and IDEs.
    • Text editors and IDEs (short basics, but some hints to make it comfortable). (swcarpentry shell-novice section 3)

Electives:

Software dev track (up until this point, nothing is about programming):

  • Advanced git (B50 above)
  • B60: Modular code development
  • B61: Software testing
  • B62: Profiling
    • (Aalto course, Janne)
  • B63: Debugging
    • (Aalto course, Janne)
  • B02: Software licensing

Other tracks can be included here: Python track, R track, Matlab track, etc.

Class C (using HPC for research, ~1 day)

This is basically Science-IT summer kickstart. It will usually be done along with the SW dev track, and SW dev track can be considered somewhat of a prerequisite)

Core program:

  • C01: What is HPC?
    • (Aalto SCIP standard presentation)
  • C10: Slurm
    • (Aalto course)
  • C11: Modules and software
    • (Aalto course)
  • C12: Storage
    • (Aalto course)
  • C23: Using parallel computing
    • (Aalto course)
  • C24:
    • Advanced shell scripting (not too advanced, ensure everyone has the basics needed for slurm scripts etc.) (rest of swcarpentry shell-novice)

Electives:

  • C50: Examples of languages on HPC (Aalto courses)
  • C60: Deep learning software frameworks, special frameworks (Aalto special courses)
  • C51: Documentation ((coderefinery lesson)[https://coderefinery.github.io/documentation/])

Class D (advanced HPC use and development, assorted specialized courses)

Consists of only different tracks, no core program:

  • D60: GPU computing (former Aalto course)
  • D61: parallel programming (Aalto courses)
  • D50: Mixed Martial Arts: Interfacing Fortran, C, C++, and Python ((coderefinery lesson)[https://coderefinery.github.io/mma/])

Places from which we can take open source content

We prefer to just link directly to (and teach) a good course instead of making local modifications

  • Software Carpentry
  • CodeRefinery
  • CSC training courses