Programming Formalisms

Course leaders

Lars Eklund, Björn Claremar, Richèl Bilderbeek

Description

This course aims to give life scientists, bioinformaticians, and other scientists with some experience in programming and scripting an understanding of the underlying principles of software 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.

Topics covered

We 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) reusability, testing and optimisation.

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

Learning outcomes

Give scientists with some experience in programming and scripting an understanding of formal principles of software development.

Teach evidence-based or expert-recommended best practices on how to:

  • write design documents for a project
  • work as a team
  • share code
  • develop code
  • test code
  • optimize code
  • write reusable code
  • deploy code

Understand and do formal software development practices:

  • understand, use and create a UML class diagram
  • understand and use a formal git branching model
  • understand and use a formal GitHub workflow
  • understand and practice social coding, such as pair programming and code reviews
  • understand and use a run-time speed profiler

Pre-requisites

Recommended knowledge of Git and programming in Python, or equivalent, of either NBIS/ELIXIR-SE Tools for Reproducible research or https://coderefinery.github.io/2023-09-19-workshop/ (material still available). We assume familiarity with python at least equivalent of the python part of the UPPMAX introductory course or Python programming with applications to bioinformatics https://uppsala.instructure.com/courses/85913.

Please view this page about recommended setups.

Level

beginner

Upcoming courses

CourseDateLocationApply by
No courses available

Previous courses

CourseDateLocationApply by
Programming Formalisms2024-11-18 - 2024-11-222024-11-15
Programming Formalisms2024-04-22 - 2024-04-262024-04-18
Programming Formalisms2023-11-27 - 2023-12-012023-11-24
Programming Formalisms2022-10-24 - 2022-10-28