Scientific Software Development Course
Syllabus
The first of SciNet's for-credit courses (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.
Required Software
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 ( http://www.cygwin.com/) 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 ( http://www.enthought.com/products/edudownload.php ) 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 http://software-carpentry.org/4_0/shell/ .
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.