Katerina Michalickova


Course description

This class presents several tools indispensable for larger software project development.  While there are undoubtedly more tools that students are going to adopt during their studies, the following three are a good start towards a sound coding practice.

Git - a version control system

A version control system (VCS) is a file repository capable of tracking versions.  There are many benefits to using version control systems.  While they are indispensable for collaborative environment, they are more than recommended for individual users too.  The version system can track not just code but presentation, documents or manuscripts and their versions. Git can be used in client-server mode, that means that the file repository on a local computer can be uploaded onto a web server and serve as a shareable backup.

GCC - open source collection of compilers

The GCC collection includes, among others, compilers for C, C++ and Fortran. Regardless whether one uses compiled languages or not, they are likely to be faced with compiling and installing a third-party scientific software at some point during their research. We are going to look at the compilation command, at different kinds of files generated during compilation and at the basic options that can be changed during the process.

Make utility

Most scientific packages contain multiple code files and dependencies. Building such packages involves multiple steps of compilation and linking to libraries. These steps can be specified in a makefile that is read and executed by the utility. Ultimately, the whole build can be described as a set of operations or rules performed on input files. We are going to examine simple to slightly complicated makefiles during the class.


Part1: git introduction, git basic commands, web-based free git providers, hands-on exercise

Part2: GCC project, from source code to an executable, key options, hands-on exercise

Part3: make syntax and rules, from simple to not so simple example, hands-on exercise