BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//CERN//INDICO//EN
BEGIN:VEVENT
SUMMARY:[Online] Modern C++ Software Design
DTSTART:20261007T070000Z
DTEND:20261009T150000Z
DTSTAMP:20261010T223600Z
UID:indico-event-196@indico.ecap.work
DESCRIPTION:Modern C++ Software Design\n\nSchedule & Format\n\nDate: 2026\
 , October 7-9\nTimes:\n\nOct 7: 9:00 - 17:00 CE(S)T\nOct 8: 9:00 - 17:00 C
 E(S)T\nOct 9: 9:00 - 17:00 CE(S)T\n\n\nFormat: Three-day\nLocation: Online
  via Zoom\nLanguage: English\n\nRegistered participants will receive the v
 ideo conferencing link via email on the day before the course.\nInstructor
 \n\nKlaus Igelberger\n\nThis course is organized by Erlangen National High
  Performance Computing Center (NHR@FAU).\nCourse Description\nWriting corr
 ect C++ is one thing\; writing software that is maintainable\, extensible\
 , and efficient at scale is quite another. This advanced course goes beyon
 d syntax to focus on the principles\, idioms\, and design patterns that se
 parate professional C++ from code that merely compiles. It covers API desi
 gn and type safety\, advanced generic programming with templates and C++20
  concepts\, classic design patterns in their modern C++ idioms\, type eras
 ure as a value-semantic alternative to dynamic polymorphism\, and the fund
 amental distinction between value and reference semantics - giving experie
 nced developers a systematic toolkit for high-quality software architectur
 e.\nThis course requires substantial C++ experience in C++ programming (at
  least two to three years of practical experience). To start gathering exp
 erience\, consider taking the C++ for Beginners course.\nPrerequisites\nKn
 owledge\n\nAt least two to three years of practical C++ experience\, inclu
 ding solid knowledge of classes\, templates\, inheritance\, and the standa
 rd library (std::vector\, std::unique_ptr\, etc.)\nFamiliarity with the C+
 + compilation model (headers\, source files\, link step)\n\nTechnical\n\nA
  local C++ development environment with a compiler supporting C++17 or lat
 er (GCC\, Clang\, or MSVC) under Windows\, Linux\, or macOS\; a compatible
  editor or IDE such as VS Code\, CLion\, or similar\n\nCourse Structure\n\
 nDesign principles: SOLID and goal-oriented software design\nAPI design: f
 unction parameters\, return types\, constructor design\, strong types\, an
 d constexpr\nObject-oriented design: inheritance hierarchies\, virtual dis
 patch\, and interface-based programming\nAdvanced generic programming: tem
 plates\, type traits\, SFINAE\, forwarding references\, and C++20 concepts
 \nClassic design patterns in modern C++: Visitor\, Strategy\, Bridge\, and
  External Polymorphism\nType erasure: value-semantic abstractions without 
 inheritance\nValue semantics vs. reference semantics\n\nLearning Outcomes\
 nAfter completing this course\, you will be able to:\n\nApply established 
 design principles to produce maintainable and extensible C++ code\nDesign 
 clean APIs using appropriate function parameters\, return types\, and cons
 tructor strategies\nImprove type safety using strong types and constexpr\n
 Design class hierarchies using object-oriented techniques including polymo
 rphism and virtual dispatch\nWrite generic\, reusable components using tem
 plates\, type traits\, SFINAE\, forwarding references\, and C++20 concepts
 \nRecognize and implement classic design patterns (Visitor\, Strategy\, Br
 idge\, External Polymorphism) in modern C++ idioms\nApply type erasure to 
 achieve value-semantic abstractions without inheritance\nDistinguish value
  semantics from reference semantics and reason about their design and perf
 ormance implications\nCritically evaluate code for maintainability and per
 formance trade-offs\n\nRegistration\, Wait List and Withdrawal Policy\nReg
 istration\nPlease register at the bottom of this page. Registration is ope
 n until a few days before the course starts\, or until the course is fully
  booked.\nPrices and Eligibility\nThis course is open and free of charge f
 or participants affiliated with academic institutions in European Union (E
 U) member states and Horizon 2020-associated countries.\nWait List\nIf the
  course reaches its maximum capacity\, you can request to join the wait li
 st by sending an email to nhr-training@fau.de. Please include your name an
 d university affiliation in the message.\nWithdrawal Policy\nPlease only r
 egister if you are committed to attending the course. No-shows will be bla
 cklisted and excluded from future events.\nIf you need to withdraw your re
 gistration\, please either cancel it directly through the registration sys
 tem or send an email to nhr-training@fau.de.\nAdditional Courses\nYou can 
 find an up-to-date list of all courses offered by NHR@FAU at https://hpc.f
 au.de/teaching/tutorials-and-courses/.\n\nhttps://indico.ecap.work/event/1
 96/
LOCATION:Online
URL:https://indico.ecap.work/event/196/
END:VEVENT
END:VCALENDAR
