Programming formalisms for life scientists and bioinformaticians

Overview

 

This course aims to give scientist and bioinformaticians and others working with scientific software with some experience in programming and scripting an understanding of the underlying principles of development design and programming. The course aims to strengthen the understanding of more advanced programming concepts, ability to produce more reusable scripts through modular programming and to enable a better understanding of how to evaluate a script or programs performance.

 

The  course will cover an introduction to Algorithms and Data structures, Programming Paradigms especially structured and object oriented programming and to give a overview of other paradigms like functional programming. Modular development and (code) re-usability, testing and optimisation

The modules will cover theory with bridging practical examples and applications to enhance the theoretical understanding of the principles.

Changelog


 


  

Programming formalism for scientists and bioinformaticians

Github repository

24- 28  October 2022

Audience Course open to PhD students, postdocs, and other researchers. Note that priority is given to Swedish academia.

Fee This online training event has no fee.

By accepting to participate in the course, you will be agreeing to follow the NBIS Training Code of Conduct.

 

Covered topics


  • Algorithms and Data Structures
  • Programming Paradigms
  • Systematic Development
  • Modular Devlopment and Programming
  • Testing and Test driven development
  • Optimisation

 

Learning outcomes


  • The participants shall have an introductory understanding of formal algorithms and Algorithm design
  • The participants shall know some common data structures  and how to utilise it in our design
  • The participants shall be familiar with the object oriented paradigm
  • The participants shall have an overview of other design and development paradigms
  • The participants shall have a basic understanding of modular programming and modular design
  • The participant shall have an understanding of the software life cycle
  • The participants shall be familiar with common development practices and "best practices" of software development
  • The participants shall have an introductory understanding of Testing and test driven design
  • The participants shall have an introductory understanding of source control
  • The participants shall have an introduction to common concerns and practices in optimisation in development of software

Application


This is a national course. The course is open for PhD students, postdocs, group leaders and core facility staff. We do accept application from other countries, but give priority to applicants from Swedish universities prior to applicants from industry and academics from other countries.

Please note that NBIS training events do not provide any formal university credits. The training content is estimated to correspond to a certain number of credits, however the estimated credits are just guidelines. If formal credits are crucial, the student needs to confer with the home department before submitting a course application in order to establish whether the course is valid for formal credits or not.

Entry requirements
  • Basic knowledge in Python and command line (bash). are desirable to help following along with the later part of the course

 

Schedule

Monday:

 

Time Topic Teacher Assistant
09:00 - 09:15 Welcome Björn
09:15 - 10:00 Introduction
Björn
10:00 - 10:15 Coffee Break
10:15 - 11:00 Software development life cycle + planning
Björn

11:00 - 11:10

Short break
11:10 - 12:00 Git Björn
12:00 - 13:00 Lunch
13:00 - 13:55 GitHub/Reproducibility Björn
13:55 - 14:05 Short break
14:05 - 14:55 Sharing/Documentation Björn
14:55 - 15:10 Coffee Break
15:10 - 15:45 Exercise Björn
15:5 - 16:00 Recap Björn

Tuesday:

Time Topic Teacher Assistant
09:00 - 09:15 Welcome Marcus

09:15 - 12:00

Algorithms and Data Structures
Marcus
12:00 - 13:00 Lunch

13:00 - 16:00

Algorithms and Data Structures Marcus

Wednesday:

Time Topic Teacher Assistant
09:00 - 09:15 Welcome
09:15 - 10:00 Development paradigms and common practises
10:00 - 10:15 Coffee Break
10:15- 11:00 Development paradigms and common practises
11:00-11:20 UML Diagrams
11:20- 11:30 Exercise
11:30-12:00 Intro to Object Orientation and Modular Development
12:00 - 13:00 Lunch
13:00 - 13:30 Social coding
13:30 - 14:20 Code reviews
14:20 - 15:00 Exercises
15:00 - 15:20 Coffee Break
15:20 - 15:40 Intro to Object Orientation and Modular Development
15:40 - 16:00 Design Patterns

Thursday:

Time Topic Teacher Assistant
09:00 - 09:15 Welcome Lars
09:15 - 10:00 Modular Design and Development
Lars
10:00 - 12:00 Testing and TDD
Per and Matias
12:00 - 13:00 Lunch
13:00 - 16:00 Testing and TDD

Per and Matias

Friday:
Time Topic Teacher Assistant
09:00 - 09:15 Welcome Marcus
09:15 - 12:00 Optimisation
Marcus
12:00 - 13:00 Lunch
13:00-15:00 Optimisation
Marcus
15:00 - 16:00 Q/A  and Feedback session Multiple teachers Moderated by Lars

 

Precourse material

Please read carefully the Precourse material before the course start.

 

 

Course staff

Lars Eklund  - course leader (lars.eklund@scilifelab.se)
Björn Claremar - teacher (bjorn.claremar@uppmax.uu.se)
Marcus Lundberg - teacher (marcus.lundberg@uppmax.uu.se)
Matias Piqueras  - teacher (matias.piqueras@uppmax.uu.se)
Per Johnsson - teacher (per.johnsson@nbis.se)
Jon Ander Novella - teacher (jon.novella@nbis.se)

CC attribution share alike This course content is offered under a CC attribution share alike license. Content in this course can be considered under this license unless otherwise noted.