Description

Writing software has become central to research in many fields of science. This school aims to give early-career scientists an introduction to a variety of topics that help them to write efficient, clean, maintainable and long-lived code that is useful beyond solving an immediate problem. In a mixture of talks and many hands-on sessions, the focus lies on showing best practices and building fundamental skills in creating, extending and collaborating on modular and reusable software.

TOPICS:

●    Python / shell scripts as glue code
●    Mixing programming languages
●    Introduction to computer architectures and software optimization
●    Modular, reusable software design
●    Effective collaborative development with multiple co-authors
●    Version control and release cycles
●    Automated testing frameworks
●    Structured documentation
●    Systematic debugging
●    Management of open source scientific packages
●    Continuous integration & deployment
●    Conversational development
 
Participants are expected to have some experience in a programming language, this course is not suitable for beginners in programming.

Grants:  A limited number of grants are available to support the attendance of selected participants, with priority given to participants from developing countries.
There is no registration fee.

 

Go to day
  • Monday, 29 April 2019
    • 09:00 - 18:30 Python introduction
      Location: Adriatico Guest House - Giambiagi Lecture Hall
      • 09:00 REGISTRATION and administrative formalities 1h0' ( Adriatico Guest House - (Lower Level 1) )
      • 10:00 Workshop Overview 45'
        Speaker: Ivan Girotto (ICTP)
      • 10:45 Coffee Break 30'
      • 11:15 Python 1h15'
        Speaker: David Grellscheid (University of Bergen / ICTP)
      • 12:30 LUNCH BREAK 1h30'
      • 14:00 Documentation basics; Hands-on: Python 2h0'
        Speaker: Ali Farnudi (Sharif University of Technology)
      • 16:00 Coffee Break 30'
      • 16:30 Hands-on: Python 2h0'
  • Tuesday, 30 April 2019
    • 09:30 - 23:30 Compiled languages; Python for science
      Location: Adriatico Guest House - Giambiagi Lecture Hall
      • 09:30 Compiled languages 1h15'
        Speaker: Ivan Girotto (ICTP)
      • 10:45 Coffee Break 30'
      • 11:15 Python science packages 1h15'
        Speaker: Stefan Richter (DESY)
      • 12:30 LUNCH BREAK 1h30'
      • 14:00 Hands-on: Python data handling example 2h0'
      • 16:00 Coffee Break 30'
      • 16:30 Hands-on: Python data handling example 2h0'
  • Wednesday, 1 May 2019
    • 09:30 - 18:30 Object oriented programming
      Location: Adriatico Guest House - Giambiagi Lecture Hall
      • 09:30 OO programming concepts 1h15'
        Speaker: David Grellscheid (University of Bergen / ICTP)
      • 10:45 Coffee Break 30'
      • 11:15 Hands-on: OO design exercise 1h15'
      • 12:30 LUNCH BREAK 1h30'
      • 14:00 OO in Python 2h0'
        Speaker: Ali Farnudi (Sharif University of Technology)
      • 16:00 Coffee Break 30'
      • 16:30 Hands-on: Python OO example 2h0'
  • Thursday, 2 May 2019
    • 09:25 - 20:50 Code choices; Algorithms; Testing
      Location: Adriatico Guest House - Giambiagi Lecture Hall
      • 09:25 Algorithms and optimization 1h15'
        Speaker: David Grellscheid (University of Bergen / ICTP)
      • 10:40 Coffee Break 30'
      • 11:10 Unit testing 1h15'
        Speaker: Stefan Richter (DESY)
      • 12:25 LUNCH BREAK 1h30'
      • 13:55 Floating-point maths + hands-on 2h0'
        Speaker: Alessandro Corbetta (Eindhoven University of Technology)
      • 15:55 Coffee Break 30'
      • 16:25 Hands-on: testing libraries 2h0'
        Speaker: Stefan Richter (DESY)
      • 18:25 Evening chat on licensing and copyright 1h0'
        Speaker: David Grellscheid (University of Bergen / ICTP)
    • 20:00 - 22:00 Workshop dinner
  • Friday, 3 May 2019
    • 09:30 - 18:30 Git; Visualisation; Debugging
      Location: Adriatico Guest House - Giambiagi Lecture Hall
      • 09:30 Git for single users 1h15'
        Speaker: Stefan Richter (DESY)
      • 10:45 Coffee Break 30'
      • 11:15 Visualisation with matplotlib 1h15'
        Speaker: David Grellscheid (University of Bergen / ICTP)
      • 12:30 LUNCH BREAK 1h30'
      • 14:00 Hands-on: Visualisation 2h0'
      • 16:00 Coffee Break 30'
      • 16:30 Hands-on: Debugging and profiling 2h0'
        Speaker: Ali Farnudi (Sharif University of Technology)
  • Monday, 6 May 2019
    • 09:30 - 18:30 Project development
      Location: Adriatico Guest House - Giambiagi Lecture Hall
      • 09:30 Git for groups of developers 1h15'
        Speaker: Alessandro Corbetta (Eindhoven University of Technology)
      • 10:45 Coffee Break 30'
      • 11:15 Project planning; development methods 1h15'
      • 12:30 LUNCH BREAK 1h30'
      • 14:00 Intro to projects 2h0'
      • 16:00 Coffee Break 30'
      • 16:30 Hands-on: Work on group projects 2h0'
  • Tuesday, 7 May 2019
    • 09:30 - 18:30 Continuous integration; Documentation
      Location: Adriatico Guest House - Giambiagi Lecture Hall
      • 09:30 Test suites and continuous integration 1h15'
        Speaker: Alessandro Corbetta (Eindhoven University of Technology)
      • 10:45 Coffee Break 30'
      • 11:15 Documentation tools 1h15'
        Speaker: Ali Farnudi (Sharif University of Technology)
      • 12:30 LUNCH BREAK 1h30'
      • 14:00 Hands-on: Work on group projects 2h0'
      • 16:00 Coffee Break 30'
      • 16:30 Hands-on: Work on group projects 2h0'
  • Wednesday, 8 May 2019
    • 09:30 - 18:30 Packaging and deployment
      • 09:30 Python packaging 1h15' ( Adriatico Guest House - Giambiagi Lecture Hall )
        Speaker: David Grellscheid (University of Bergen / ICTP)
      • 10:45 Coffee Break 30'
      • 11:15 Introduction to containers 1h15'
        Speaker: Alessandro Corbetta (Eindhoven University of Technology)
      • 12:30 LUNCH BREAK 1h30'
      • 14:00 Common git issues 1h0'
      • 15:00 Hands-on: Work on group projects 1h0'
      • 16:00 Coffee Break 30'
      • 16:30 Hands-on: Work on group projects 2h0'
  • Thursday, 9 May 2019
    • 09:30 - 18:30 Real world usage examples, useful tools
      Location: Adriatico Guest House - Giambiagi Lecture Hall
      • 09:30 Embarassingly parallel processing 1h15'
        Speaker: Ivan Girotto (ICTP)
      • 10:45 Coffee Break 30'
      • 11:15 Real-life examples; useful tools 1h15'
        Speaker: all speakers
      • 12:30 LUNCH BREAK 1h30'
      • 14:00 Hands-on: Work on group projects 2h0'
      • 16:00 Coffee Break 30'
      • 16:30 Hands-on: Work on group projects 2h0'
  • Friday, 10 May 2019
    • 09:30 - 14:45 Project presentations
      Location: Adriatico Guest House - Giambiagi Lecture Hall
      • 09:30 Group project presentations 1h15'
      • 10:45 Coffee Break 30'
      • 11:15 Group project presentations 1h0'
      • 12:15 Closing session 30'
      • 12:45 LUNCH BREAK 2h0'