NMBU, INF205: Resource-efficient programming (autumn 2022)
- Lecture: Wednesday, 14.00 - 16.00, TF1-102.
- Datalab: Thursday, 10.00 - 12.00, TF1-105 (group #1); Thursday, 12.00 - 14.00, TF1-105 (group #2).
Team: Martin Horsch (office: TF2-303A), Jorge Hermoso.
University resources:
Literature:
Stroustrup's "Tour of C++" is a compact book
presenting modern C++ to readers with a solid background in programming.
It is the main literature source for the module.
- B. Stroustrup, A Tour of C++, 2nd edn., Addison-Wesley (ISBN 978-0-134-99783-4), 2018.
Supporting literature and other books that could be of interest:
- R. Grimm, C++ Core Guidelines Explained: Best Practices for Modern C++, Addison-Wesley (ISBN 978-0-136-87567-3), 2022.
- P. Sanders et al., Sequential and Parallel Algorithms and Data Structures, Springer (ISBN 978-3-030-25209-0), 2019.
- B. Stroustrup, Programming: Principles and Practice Using C++, 2nd edn., Addison-Wesley (ISBN 978-0-321-99278-9), 2014.
- B. Stroustrup, H. Sutter (eds.), C++ Core Guidelines, 2015-2022.
Glossary:
The glossary document introduces and defines selected key concepts.
Structure:
- C++ basics
- Calendar week 36
- Calendar week 37
- Calendar week 38
- Calendar week 39
- Data structures
- Calendar week 40
- Lecture slides (5th October 2022)
- Tutorial worksheet (6th October 2022)
- Textbook: Stroustrup (2018) Sections 4.2, 9.2, 9.3, 10.5, 10.8, and Chapter 11
- Examples: String argument passing, I/O operator overloading, sequential data structures, STL map<string, int>, STL map<string, set<int>>
- Calendar week 41
- Calendar week 42
- Concurrency
- Calendar week 42
- Calendar week 43
- Calendar week 44
- Lecture slides (2nd November 2022)
- Project group status (mandatory); deadline: 7th November 2022
- Literature: R. Wiśniewski et al., "C-exact hypergraphs in concurrency and sequentiality analyses of cyber-physical systems specified by safe Petri nets," IEEE Access 7: 13510-13522, doi:10.1109/access.2019.2893284, 2019
- Documentation: Connecting to Orion (VPN access only), scheduler commands, ROS: Robot Operating System, implementing a ROS2 node, OpenMP reference card
- Software: PIPE Petri net simulator version 4 or version 5
- Examples: SLURM job script, ROS nodes, OpenMP-parallel counting of primes (and variant using "threadparallel" and padding), Petri nets: Intro example, Wiśniewski's scenario (XMLs for PIPE)
- Production
- Calendar week 45
- Calendar week 46
- Parallel data
- Calendar week 47
- Calendar week 48
- Lecture slides (30th November 2022)
- Literature:
- V. Bilsen et al., Study on Greening Cloud Computing and Electronic Communications Services and Networks, technical report, EU publications office, doi:10.2759/116715, 2022
- S. Seckler et al., "AutoPas in ls1 mardyn: Massively parallel particle simulations with node-level auto-tuning," J. Computat. Sci. 50: 101296, doi:10.1016/j.jocs.2020.101296, 2021
- S. Shudler et al., "
Understanding the scalability of molecular simulation using empirical performance modeling," in Proc. ESPT/VPA 2017/18, pp. 125-143, doi:10.1007/978-3-030-17872-7_8, Springer, 2019
- Project presentations
Programming project:
See more information here.
Projects should be done by groups of three participants jointly; groups of two are also possible.
Coding group work is carried out from week 43 to week 48.
Mandatory presentation and discussion are held in weeks 48, 49, and 50.
License:
The code examples from this module are released by NMBU REALTEK's Institutt for datavitenskap under the conditions of the Creative Commons BY-NC-SA 4.0 License (attribution, non-commercial, share-alike).
Index