UiB Blogg            

Collaborative scientific software development


This workshop is in collaboration with Digital Life Norway

Dates:  5 – 14 March 2019

Location: University of Bergen

Organisers: David Grellscheid

Registration: 3 February 2019

Credits: 3 ECTS

Registration: HERE

Lecturers:

Kim Brügger
David Grellscheid
Stefanie Holmgeirsdottir
Matus Kalas
Kidane Tekle

 

Description:

What comes next once you’re comfortable with the syntax of a programming language or two, and have written some small programs for yourself? Once a project grows to a certain size, factors beyond the immediate programming task take more and more time, and the social aspects of software development become more important.

The aim of this workshop is to give an introduction to topics that go beyond the initial knowledge of reading and writing code. How do you design programs that are modular and reusable by others? How can libraries in different languages be used together? What are tools that can help in documenting and testing code? How can development and releases be managed in group projects with multiple authors and multiple users?

 

In a mixture of talks and many hands-on sessions we’ll try to address this next step. In the second half of the workshop, you will work in small groups on designing and writing a new project from scratch, giving you direct experience of having to rely on other people’s code.

 

Topics:

Detailed programme to be confirmed by end of January

  • Effective collaborative development
  • Version control tools; Release cycles
  • Useful documentation for different audiences; User interactions
  • Testing and debugging; Continuous integration
  • Profiling and optimization
  • Mixing programming languages
  • Copyright and licensing

Prerequisites:

Participants are expected to have some experience in a programming language, this course is not suitable for beginners in programming.

 

The working language for the examples will be Python, but participants with other language backgrounds are very welcome and will be able to benefit from the course equally. Please familiarize yourself with Python basic syntax in that case.

 

Learning outcomes:

After this course the participants will be able to identify challenges related to developing software in a group. They will be able to use tools and techniques to make this process easier.

 

Evaluation:

Participants are expected to attend all 8 days. In the second half of the workshop, you will work in small groups on a project that you will present on the last day.

 
 
 
Time table:
 
09:00 (room open)
09:10 Morning session 1
10:30 coffee break
10:50 Morning session 2
12:10 lunch break
13:10 Afternoon session
around 15:00 flexible coffee break
around 17:00 close
 
On the first day, we start later to allow for arrival of the
participants.
 
On the last day, we aim to finish by 15:00.
 
 
Tuesday, 5 March:
=================
10:30 arrival
introduction to the course
Maintainable code
Warm-up coding exercises
 
Wednesday, 6 March:
===================
Life cycle of a project:
  best practices, useful tools, user interactions
 
Thursday, 7 March:
==================
Testing, Debugging, Packaging
Continuous integration and deployment
 
Friday, 8 March:
================
Python for science applications: numpy, scipy, matplotlib
Fundamentals of object oriented programming
 
 
Monday, 11 March:
=================
Documentation for users and developers
Git version control
Start the group projects
 
Tuesday, 12 March:
==================
Profiling, optimisation
Linking across languages
Group projects
 
Wednesday, 13 March:
====================
Containers
Copyright and licensing
Group projects
 
Thursday, 14 March:
===================
Handling large data sets
Group projects
Presentation of results
15:00 close