Developing academic software#

Warning

This page is still being built!

TODO

Discuss getting computing equpiment (advisor’s responsibility, but also useful to know it’s something to ask for): laptop/dev workstation, monitors, peripherals, etc.

Understand HPC that’s available to you (university HPC, lab server, etc).

Then talk about programming languages. Could be research-specific, but generally good to know a systems language (C, C++, Rust) and a scripting language (Python, Perl). Understand parallelization in those languages. Also useful to know data analysis and visualization langauges or packages (R, numpy/scipy/matplotlib, etc.).

Documentation languages. Sphinx + RST, Markdown, GitHub pages, Hugo, etc.

Development environments (Linux/WSL/command line). Customization.

Managing Git repositories. Lab server, etc. Branching patterns.