Scientific Calendar Event



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.

Certificate to participant(s) at the end of the Workshop shalls be only upon successful contribution to the final development projects.

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.

All lectures' slides and course material is available on a public GitLab repository: https://gitlab.com/ictp-cssd-2019

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 Project planning; development methodologies 1h15'
        Speaker: Stefanie Holmgeirsdottir
      • 10:45 Coffee Break 30'
      • 11:15 Project planning; development methodologies 1h15'
        Speaker: Stefanie Holmgeirsdottir
      • 12:30 LUNCH BREAK 1h30'
      • 14:00 Git for groups of developers 1h0'
        Speaker: Alessandro Corbetta (Eindhoven University of Technology)
      • 15:00 Intro to projects 1h0'
      • 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'