-
Notifications
You must be signed in to change notification settings - Fork 50
Training Levels
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.
- 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
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)
- Shell scripting (simple automation, perhaps bare minimum to understand Makefiles: e.g. pipes,
- 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:
- B30: Makefiles
- Makefiles (emphasis on simple automation and reproducibility, not compiling) first part of swcarpentry make-novice
- B50: Advanced git
- More git (typical git courses, e.g. coderefinery git and collaboration, branch design)
- B51: Jupyter notebooks
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
- (coderefinery course, should be expanded to more than just software)
Other tracks can be included here: Python track, R track, Matlab track, etc.
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/])
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/])
We prefer to just link directly to (and teach) a good course instead of making local modifications
- Software Carpentry
- CodeRefinery
- CSC training courses