Description Modern scientific research work involves using computers for simulation, modeling, data processing and visualization. The growing complexity of those calculations favors using software packages that provide an abstract interface to computations through scripting language interfaces, modular software design, and code reuse. Such design patterns also facilitate transparent optimizations for modern multi- core architectures or accelerators, and specialization of contributors to subsets of a package program. Software package developers therefore need to learn how to work effectively in a collaborative environment.

This Hands-on Workshop focuses on disseminating best practices and building fundamental skills in creating, extending and collaborating on modular and reusable software frameworks with a scripting language interface. The curriculum also covers using modern collaborative software management tools, testing frameworks, and embedding structured documentation into software packages.

*****

This activity includes a four day extension: "Deal.II Users and Developers Training". Application for the extended part of the activity is available with the on-line form.

Application for the "Deal.II Users and Developers Training" ONLY is a possible option but does not include the opportunity of financial support. More information are available within the activity poster.
Go to day
  • Monday, 7 March 2016
    • 08:00 - 08:30 Special note
      Directors acknowledge Dr. Axel Kohlmeyer with special thanks for his contribution to the realization of the programme as well as lectures material.
    • 08:30 - 18:30 Day 1
      • 08:30 Registration 1h0' ( AGH Lower level )
      • 09:30 Workshop Overview: Software Development Basics 1h15'
        Speaker: I. Girotto (ICTP, Trieste, Italy)
        Material: Lecture Notes
      • 10:45 Coffee break 30'
      • 11:15 Python: Concepts and Design 1h15'
        Speaker: D. Grellscheid (Durham Univ & ICTP)
        Material: Lecture Notes
      • 12:30 Lunch break 1h30' ( AGH Cafeteria )
      • 14:00 Hands-on: Python Programming 2h0'
        Speakers: D. Grellscheid (Durham Univ & ICTP), J. Aguilar (ICTP, Trieste, Italy)
        Material: Data Exercise
      • 16:00 Coffee break 30'
      • 16:30 Hands-on: Python Programming 2h0'
        Speakers: D. Grellscheid (Durham Univ & ICTP), J. Aguilar (ICTP, Trieste, Italy)
  • Tuesday, 8 March 2016
    • 09:30 - 21:30 Day 2
      • 09:30 Object Oriented Programming Concepts in Python 1h15'
        Speaker: D. Grellscheid (Durham Univ & ICTP)
        Material: Lecture Notes
      • 10:45 Coffee break 30'
      • 11:15 Python for Scientific Computing 1h15'
        Speaker: D. Grellscheid (Durham Univ & ICTP)
        Material: Lecture Notes
      • 12:30 Lunch break 1h30' ( AGH Cafeteria )
      • 14:00 Hands-on: OO Python Programming 2h0'
        Speakers: I. Girotto (ICTP, Trieste, Italy), F.K. Nobrega (FURG, Brazil)
        Material: Lab material
      • 16:00 Coffee break 30'
      • 16:30 Hands-on: Python for Scientific Computing 2h0'
        Speaker: D. Grellscheid (Durham Univ & ICTP)
      • 19:30 Reception 2h0' ( Pizzeria Raffaele )
  • Wednesday, 9 March 2016
    • 09:30 - 18:30 Day 3
      • 09:30 Compiling and Linking Mixed Languages 1h15'
        Speaker: I. Girotto (ICTP, Trieste, Italy)
        Material: Lecture Notes
      • 10:45 Coffee break 30'
      • 11:15 C++, basics of OO 1h15'
        Speaker: G. Brandino (MHPC)
        Material: Lecture Notes
      • 12:30 Lunch break 1h30' ( AGH Cafeteria )
      • 14:00 Hands-on: ctypes 2h0'
        Speaker: G. Brandino (MHPC) / J. Aguilar (ICTP, Trieste, Italy)
        Material: Slides
      • 16:00 Coffee break 30'
      • 16:30 Hands-on: practicing with C++ 2h0'
        Speaker: G. Brandino (MHPC) / J. Aguilar (ICTP, Trieste, Italy)
        Material: Lab material
  • Thursday, 10 March 2016
    • 09:30 - 18:30 Day 4
      • 09:30 Floating-Point Math 1h0'
        Speaker: L. Heltai (SISSA, Trieste, Italy)
        Material: Leture Notes
      • 10:30 Coffee break 45'
      • 11:15 Tools for Debugging and Profiling 1h15'
        Speaker: I. Girotto (ICTP, Trieste)
        Material: Lecture Notes
      • 12:30 Lunch break 1h30' ( AGH Cafeteria )
      • 14:00 Hands-on: Floating-Point Math and Accuracy 2h0'
        Speaker: L. Heltai (SISSA, Trieste, Italy) / Nicola Cavallini (MHPC)
        Material: Lab Material - https://github.com/nicolacavallini/floating point/
      • 16:00 Coffee break 30'
      • 16:30 Hands-on: Python for Scientific Computing, a performance aspect 2h0'
        Speakers: I. Girotto (ICTP, Trieste, Italy), F. K. Nobrega (FURG, Brazil)
        Material: Lab material
  • Friday, 11 March 2016
    • 09:30 - 19:45 Day 5
      • 09:30 Optimization: Algorithms 1h15'
        Speaker: D. Grellscheid (Durham Univ & ICTP)
        Material: Lecture Notes
      • 10:45 Coffee break 30'
      • 11:15 Optimization: Modern Hardware Architectures 1h15'
        Speaker: I. Girotto (ICTP, Trieste, Italy)
        Material: Lecture Notes
      • 12:30 Lunch break 1h30' ( AGH Cafeteria )
      • 14:00 Hands-on: ctypes 2h0'
        Speakers: G. Brandino (MHPC), J. AGUILAR (ICTP, Trieste, Italy)
        Material: Lab Material Lecture Notes
      • 16:00 Coffee break 30'
      • 16:30 Hands-on: Memory Hierarchy 2h0'
        Speaker: I. Girotto (ICTP, Trieste, Italy)
        Material: Lab material
  • Monday, 14 March 2016
    • 09:30 - 18:30 Day 7
      • 09:30 Source Code Management 1h45'
        Speaker: D. Grellscheid (Durham Univ & ICTP)
        Material: Lecture Notes Slides
      • 11:15 Coffee break 30'
      • 11:45 Group Projects Presentation 45'
        Speakers: I. Girotto (ICTP, Trieste, Italy), G. Brandino (MHPC), J. Aguilar (ICTP, Trieste, Italy), F.K. Nobrega (FURG, Brazil), (Durham Univ & ICTP) D. Grellscheid
      • 12:30 Lunch break 1h30' ( AGH Cafeteria )
      • 14:00 Hands-on: Work on Group Projects 2h0'
      • 16:00 Coffee break 30'
      • 16:30 Hands-on: Work on Group Projects 2h0'
  • Tuesday, 15 March 2016
    • 09:30 - 18:30 Day 10
      • 09:30 Writing Helpful Documentation for Users and Developers 1h15'
        Speaker: D. Grellscheid (Durham Univ & ICTP)
        Material: Lecture Notes
      • 10:45 Coffee break 30'
      • 11:15 Best Practise: Managing a Scientific Software Project 1h15'
        Speaker: T. Heister (Clemson Univ, USA)
        Material: Lecture Notes
      • 12:30 Lunch break 1h30' ( AGH Cafeteria )
      • 14:00 Hands-on: Work on Group Projects 2h0'
      • 16:00 Coffee break 30'
      • 16:30 Hands-on: Work on Group Projects 2h0'
  • Wednesday, 16 March 2016
    • 09:30 - 18:30 Day 9
      • 09:30 Task Farming For Embarrassingly Parallel Processing 1h15'
        Speaker: I. Girotto (ICTP, Trieste, Italy)
        Material: Lecture Notes Slides
      • 10:45 Coffee break 30'
      • 11:15 Reusing Software / Discussion on Licensing 1h15'
        Speaker: D. Grellscheid (Durham Univ & ICTP)
      • 12:30 Lunch break 1h30' ( AGH Cafeteria )
      • 14:00 Hands-on: Work on Group Projects 2h0'
      • 16:00 Coffee break 30'
      • 16:30 Hands-on: Work on Group Projects 2h0'
  • Thursday, 17 March 2016
    • 09:30 - 11:15 Day 10
      • 09:30 Test Suites and Continuous Integration 1h15'
        Speaker: F. Spiga (Univ Cambridge, UK)
        Material: Slides
      • 10:45 Coffee break 30'
    • 11:15 - 14:00 Day 10: Real-world Uses of Scientific Programming
      • 11:15 Herwig 20'
        Speaker: D. GRELLSCHEID (Durham Univ & ICTP)
        Material: Slides
      • 11:35 Calculating geodesics for arbitrary metrics 20'
        Speaker: Guillermo Oliva (University of Costa Rica)
        Material: Slides
      • 11:55 DAQ implementation using various open source packages for Plasma Heating system 20'
        Speaker: Rameshkumar Joshi (Institute for Plasma Research, India)
        Material: Slides
      • 12:15 ASPECT: Advanced Solver for Problems in Earth's ConvecTion 15'
        Speaker: T. Heister (Clemson University, USA)
      • 12:30 Lunch break 1h30' ( AGH Cafeteria )
    • 14:00 - 18:30 Day 10: Day 10 cont
      • 14:00 Hands-on: Work on Group Projects 2h0'
      • 16:00 Coffee break 30'
      • 16:30 Hands-on: Work on Group Projects 2h0'
  • Friday, 18 March 2016
    • 09:30 - 12:30 Day 11
      • 09:30 Project presentations 1h15'
      • 10:45 Coffee break 30'
      • 11:15 Programming Project Presentations, Handing out of Certificates 1h15'