For-Credit SciNet Course: “Scientific Software Development”

October 17, 2011 in for_researchers, for_users

The first of SciNet’s for-credit courses (for Astronomy 3100 minicourse and Phys 2109 modular course credit) will start in November, and be held in SciNet’s conference room, at 256 McCaul street on the 2nd floor. Dates are Nov 4, 11, 18, and 25th, 9:30-11:30am on each Friday.

The goal of the first course is to have students learn the basics of best practice for writing maintainable, modular scientific programs. At the end of minicourse I, “Scientific Software Development”, students arriving with fairly modest scientific programming knowledge will leave being able to:

  • Do basic software development in a linux-like environment
  • Write a modular scientific program in C
  • Read and write Makefiles for building large pieces of software
  • Be able to install simple libraries on their systems
  • Use git for basic version control for software development (or paper writing)
  • Use Python for basic visualization and data manipulation
  • Debug C programs with gdb/ddd
  • Write simple C++ and Python programs
  • Use gprof or python profiling to find performance “hot spots”

The course will require 4-6 hours each week spent on reading and homework.

Each lecture will have a hands-on component; students are strongly encouraged to bring laptops. (Contact us if this will be a problem). Windows, Mac, or Linux laptops are all fine, but some software will have to be installed *before* the first lecture:

On windows laptops only, Cygwin will have to be installed ; ensure that development tools (gcc/g++/gfortran, gdb), git, and the X environment (Xorg) is installed.

On Mac laptops, ensure that the development tools (Xcode) is installed.

On Linux, ensure that packages for the gcc compiler suite (gcc/g++/gfortran), gdb, and git are installed

On all platforms, the Enthought python distribution must be installed.

Students who aren’t already comfortable with working in a shell / terminal environment should work through at least the first three 10-minute lectures at Software Carpentry .

Course outline:

Week 1 – Intro to software developemnt: basics of C, make, git.
– HW1: modular, multifile programming and make.

Week 2 – Simple parabolic PDEs; modular programming, refactoring, and testing. Simple visualization using python.
– HW2: Refactoring, testing, and debugging a simple PDE solver

Week 3 – Structures in C; simple ODE solvers and interpolation.
– HW3: tracer particle evolution

Week 4 – Going further with C++ and Python; profiling
– HW4: “porting” tracer particle evolution to C++ or python.

Evaluation will be based entirely on the four homeworks, with equal weighting given to each.