Giter Club home page Giter Club logo

sustainable_development_course's Introduction

Block course: Scientific Software Development

Scientific Software Center, Heidelberg University, Dr. Inga Ulusoy
01/2021

In this course, you will learn how to develop scientific software in a way that enables reproducible research and sustainable software. Sustainable scientific software leaves room for further, subsequent implementations and method development, and saves time and effort in the long run; additionally, a sustainable approach follows good scientific practice through making results reproducible. This course is aimed at researchers, doctoral and master students who develop scientific software to carry out their research. The course is held online and consist of both an asynchronous and a synchronous part.

Learning outcome: At the end of the course, the students will be able to develop their own scientific software sustainably and generate reproducible results, in accordance with best scientific practices.
Total effort: Approximately 30 hours.
Date/Duration: Sessions will take place on six days during two weeks in March 2023: Specifically, on 28/2/23, 1/3/23, 2/3/23, 7/3/22, 8/3/22, 9/3/22, from 10:00 AM to 1:00 PM. Please note that there is also an asynchronous part to the course, which you can work on at a time of your choice, but which should be completed before the first/before the subsequent session for a better learning experience.
Course certificate: You will be able to obtain a certificate of participation.
Course requirements: Basic prior programming knowledge, where the emphasis lies on basic; ideally in Python as the examples will be based on Python. A laptop/PC with camera, microphone and speakers is required so that you can interact with the instructor and your teammates.

Content of each unit

  • An introduction to new topics and concepts (1h)
  • Individual work on the new concepts (1h)
  • A coding demonstration (1h)
  • Tasks to be solved as teams of 2-3 developers (2h)

Units

1. Introduction to git: Using git and GitHub

Go to unit 1

  1. Git basics
  2. GitHub basics
  3. Creating a new repository: git
  4. Creating a new repository: GitHub
  5. Creating and merging branches
  6. Jupyter Notebooks
  7. Pre-commit hooks

In this unit, we will work with Jupyter notebooks in our own repositories on GitHub.

2. Clean coding as a team: Adhere to guidelines and common coding principles

Go to unit 2

  1. Technical debt and clean coding
  2. Style guides
  3. Working with an IDE
  4. Linting and performance of code
  5. More on git: “Clean” repositories
  6. Pull requests
  7. Code review and merging

You will work with your team in your team's repository and agree on a set of common standards and coding principles.

3. Think before you code: Planning your programming project

Go to unit 3

  1. The programming paradigm
  2. Planning a piece of software: Do's and don'ts
  3. Planning a piece of software: Demonstrations

You and your team will plan your software and start implementing the design.

4. Documentation

Go to unit 4

  1. A good documentation
  2. Documentation style guides
  3. Set up your documentation with sphinx (doxygen)
  4. Publish your documentation on readthedocs
  5. Publish your documentation on GitHub pages

The documentation tools for your software will be set up and structured.

5. Testing, testing, testing ...

Go to unit 5

  1. Types of tests
  2. Unittest and pytest
  3. Test-driven development
  4. Writing unit tests using pytest fixtures
  5. Pytest: Demonstrations

We will continue our work on the programming project.

6. Continuous integration: GitHub actions

Go to unit 6

  1. GitHub actions basics
  2. Run your tests and linter automatically through GitHub actions
  3. Build and publish your documentation through GitHub actions
  4. Considerations when publishing your research and your software
  5. Optional: Publish your python module as a package

We will set up GitHub actions and you will learn how to publish your software.

Software requirements

You will need Python3, git, and numpy/seaborn/pandas/jupyter for the course.

sustainable_development_course's People

Contributors

iulusoy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.