Scientific Calendar Event



Description

An ICTP Meeting in presence

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
  • 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
  • Management of open source scientific packages
  • Continuous integration & deployment
  • Visualisation as a development tool
  • Conversational development
Lecturers:
A. CORBETTA, Eindhoven University of Technology, The Netherlands
S. DI GIOIA, ICTP, Italy
A. FARNUDI, École Normale Supérieure de Lyon, France
L. GARRISON, University of Bergen, Norway
I. GIROTTO, ICTP, Trieste, Italy
D. GRELLSCHEID, University of Bergen, Norway
A. KOHLMEYER, Temple University, USA

Prerequisites: 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, 6 November 2023
    • 08:30 - 10:45 Workshop registration formalities
      REGISTRATION: Upon arrival, Visitors not staying in the ICTP Guest Houses, are kindly requested to complete registration formalities at the Adriatico Guesthouse, Registration Desk (Lower level) from 8.30 till 10.45.
    • 10:45 - 18:30
      • 10:45 Welcome remarks 15'
        Speaker: Ivan GIROTTO (ICTP, Italy)
      • 11:00 Get-to-know session 1h15'
        Speaker: David GRELLSCHEID (University of Bergen, Norway)
      • 12:30 Lunch break 1h30'
      • 14:00 Python Basic Review 2h0'
        Speaker: David GRELLSCHEID (University of Bergen, Norway)
      • 16:00 Coffee break 30'
      • 16:30 Git basics 2h0'
        Git status, add, commit, log
        Speaker: Ali FARNUDI (École normale supérieure de Lyon, France)
  • Tuesday, 7 November 2023
    • 09:30 - 18:30
      • 09:30 Writing Clean Codes 30'
        Clean code - good variables
        Speaker: Ali FARNUDI (École normale supérieure de Lyon, France)
      • 10:00 Intro to Object Oriented (OO) Programming 45'
        Speaker: David GRELLSCHEID (University of Bergen, Norway)
      • 10:45 Coffee break 30'
      • 11:15 Hands-on: OO design 1h15'
        Paper train station exercise
        Speaker: David GRELLSCHEID (University of Bergen, Norway)
      • 12:30 Lunch break 1h30'
      • 14:00 Data analysis and visualization in Python 2h0'
        Setting up virtual environment, python packages, objects in pandas
        Speaker: Laura GARRISON (University of Bergen, Norway)
      • 16:00 Coffee break 30'
      • 16:30 Data analysis and visualization in Python 2h0'
        Speaker: Laura GARRISON (University of Bergen, Norway)
  • Wednesday, 8 November 2023
    • 09:30 - 17:30
      • 09:30 Representations of data: integers, floats, text 30'
        Speaker: David GRELLSCHEID (University of Bergen, Norway)
      • 10:00 Computer Architectures: Focus on Efficient Memory Access 1h15'
        Speaker: Axel KOHLMEYER (Temple University, USA)
      • 11:15 Coffee break 15'
      • 11:30 Computer Architectures: Focus on Efficient Memory Access 1h15'
        Speaker: Axel KOHLMEYER (Temple University, USA)
      • 12:45 Lunch break 1h15'
      • 14:00 Numpy background 1h30'
        Numpy (compiled with openblas)
        Speaker: Serafina DI GIOIA (ICTP, Italy)
      • 15:30 Hands-on compile numpy 30'
        Compiled with openblas
        Speaker: Axel KOHLMEYER (Temple University, USA)
      • 16:00 Coffee break 30'
      • 16:30 Color in visualization 1h0'
        Speaker: Laura GARRISON (University of Bergen, Norway)
    • 18:30 - 20:15 Social dinner
  • Thursday, 9 November 2023
    • 09:30 - 18:30
      • 09:30 Debugging strategies 45'
        Speaker: Ali FARNUDI (École normale supérieure de Lyon, France)
      • 10:15 Compilied codes, connecting C and Python 45'
        Speaker: Axel KOHLMEYER (Temple University, USA)
      • 11:00 Coffee break 30'
      • 11:30 Giving and receiving feedback 45'
        Speaker: David GRELLSCHEID (University of Bergen, Norway)
      • 12:15 Lunch break 1h45'
      • 14:00 Code review 1h15'
        Speaker: Ali FARNUDI (École normale supérieure de Lyon, France), David GRELLSCHEID (University of Bergen, Norway)
      • 15:15 Git: branching, merging, conflicts, docstrings 1h0'
        Speaker: Ali FARNUDI (École normale supérieure de Lyon, France)
      • 16:15 Coffee break 15'
      • 16:30 Git: branching, merging, conflicts, docstrings 1h15'
        Speaker: Ali FARNUDI (École normale supérieure de Lyon, France)
      • 17:45 Git branching and merging exercises 45'
  • Friday, 10 November 2023
    • 09:30 - 18:30
      • 09:30 Code design choices, high level optimization 1h15'
        Speaker: David GRELLSCHEID (University of Bergen, Norway)
      • 10:45 Coffee break 30'
      • 11:15 Git for groups, conversational development 1h15'
        Speaker: Alessandro CORBETTA (Eindhoven University of Technology, The Netherlands)
      • 12:30 Lunch break 1h30'
      • 14:00 Animations 2h0'
        Speaker: Laura GARRISON (University of Bergen, Norway), David GRELLSCHEID (University of Bergen, Norway)
      • 16:00 Coffee break 30'
      • 16:30 Exercises to bring together concepts 2h0'
        Speaker: Ali FARNUDI (École normale supérieure de Lyon, France), Alessandro CORBETTA (Eindhoven University of Technology, The Netherlands), Laura GARRISON (University of Bergen, Norway), David GRELLSCHEID (University of Bergen, Norway)
  • Monday, 13 November 2023
    • 09:30 - 18:30
      • 09:30 Test suites and CI 45'
        Speaker: Alessandro CORBETTA (Eindhoven University of Technology, The Netherlands)
      • 10:15 Project choices 30'
        Speaker: David GRELLSCHEID (University of Bergen, Norway)
      • 10:45 Coffee break 30'
      • 11:15 Starting up the teams; project planning 1h15'
        Speaker: David GRELLSCHEID (University of Bergen, Norway)
      • 12:30 Lunch break 1h30'
      • 14:00 Work on projects 2h0'
      • 16:00 Coffee break 30'
      • 16:30 Work on projects 2h0'
  • Tuesday, 14 November 2023
    • 09:30 - 18:30
      • 09:30 Pybind11 45'
        Speaker: Serafina DI GIOIA (ICTP, Italy)
      • 10:15 Documentation tools 30'
      • 10:45 Coffee break 30'
      • 11:15 Tba 1h15'
      • 12:30 Lunch break 1h30'
      • 14:00 Work on projects 2h0'
      • 16:00 Coffee break 30'
      • 16:30 Work on projects 2h0'
  • Wednesday, 15 November 2023
    • 09:30 - 18:30
      • 09:30 Makefiles for workflows 1h15'
        Speaker: Ali FARNUDI (École normale supérieure de Lyon, France)
      • 10:45 Coffee break 30'
      • 11:15 Reproducible results 1h15'
        Speaker: Alessandro CORBETTA (Eindhoven University of Technology, The Netherlands)
      • 12:30 Lunch break 1h30'
      • 14:00 Work on projects 2h0'
      • 16:00 Coffee break 30'
      • 16:30 Work on projects 2h0'
  • Thursday, 16 November 2023
    • 09:30 - 18:30
      • 09:30 Short talks about lectrurers' own work 1h15'
        Speaker: Ivan GIROTTO (ICTP, Italy), Axel KOHLMEYER (Temple University, USA), Alessandro CORBETTA (Eindhoven University of Technology, The Netherlands)
      • 10:45 Coffee break 25'
      • 11:10 Group photo 5'
      • 11:15 Copyright and licensing 1h15'
        Speaker: David GRELLSCHEID (University of Bergen, Norway)
      • 12:30 Lunch break 1h30'
      • 14:00 Work on projects 2h0'
      • 16:00 Coffee break 30'
      • 16:30 Work on projects 2h0'
  • Friday, 17 November 2023
    • 09:30 - 12:30
      • 09:30 Prepare presentations 1h15'
      • 10:45 Coffee break 30'
      • 11:15 Present results 45'
      • 12:00 Closing remarks 30'