Skip to content

Training Levels

Richard Darst edited this page Dec 15, 2017 · 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 and irrevevant for me"
  • Provide more tangible benefits for education (e.g. group leader sees value in reaching a level)

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.

Class A (basic local resources, 1 hour only)

  • Example topics which Aalto would include:
    • Aalto managed computer basics. Installing own packages
    • Data storage locations and policies. Basic data management.
    • Remote access, remote data access
    • How to get support, where, etc.

Class B (using Linux somewhat well, ~1/2 day)

  • Files, dirs, permissions, filesystems, (same as below)
  • Shell use (shells, tab completion, paths, programs, environment, etc) swcarpentry shell-novice
  • Shell scripting (simple automation, perhaps bare minimium to understall Makefiles: e.g. pipes, ;, tests, ...) (same as above)
  • Makefiles (emphasis on simple automation and reproducibility, not compiling) first part of swcarpentry make-novice
  • 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)
  • ssh, ssh keys, remote access
  • Text editors and IDEs (short basics, but some hints to make it comfortable). (swcarpentry shell-novice section 3)

SW dev track (up until this point, ):

  • Modular code development (coderefinery lesson)
  • SW testing (coderefinery lesson)
  • More git (typical git courses, e.g. coderefinery git and collaboration, branch design)
  • Profiling (Aalto course)
  • Debugging (Aalto course)
  • Software licensing (coderefinery course, should be expanded to more than just software)

Electives:

Other tracks 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)

  • Slurm (Aalto course)
  • Modules and software (Aalto course)
  • Storage (Aalto course)
  • Using parallel computing (Aalto course)
  • Advanced shell scripting (not too advanced, ensure everyone has the basics needed for slurm scripts etc.) (rest of swcarpentry shell-novice)
  • Examples of languages on HPC (Aalto courses)

Electives:

  • Deep learning software frameworks, special frameworks (Aalto special courses)
  • Documentation (coderefinery lesson)

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

Consists of only electives.

  • GPU computing (former Aalto course)
  • parallel programming (Aalto courses)
  • Mixed Martial Arts: Interfacing Fortran, C, C++, and Python (coderefinery lesson)

Clone this wiki locally