Language C++ (FSI-SCP)

Academic year 2020/2021
Supervisor: Ing. Pavla Sehnalová, Ph.D.  
Supervising institute: ÚM all courses guaranted by this institute
Teaching language: Czech
Aims of the course unit:
The aim of this course is to get up-to-date on modern programming techniques, up to and including C++17. There is a wealth of numerical libraries for scientific computing in C++. Students will be able to develop modern scientific applications.
Learning outcomes and competences:
Students will obtain the basic skills and experiences of program writing and debugging using programming language C++.
Prerequisites:
The basic knowledge and experience with programming language (C#, Java ) are expected.
Course contents:
C++ is a modern programming language, with a focus on high performance. It is widely being used in very different contexts and has excellent support in both tools and libraries. The language received a huge overhaul in 2011 with C++11, lifting it into the 21st century.
Teaching methods and criteria:
The course is taught through lectures explaining the basic principles and theory of the discipline. Exercises are focused on practical topics presented in lectures.
Assesment methods and criteria linked to learning outcomes:
Graded course-unit credit is awarded on the following conditions: 30% on weekly programming assignments, 70% on the individual project. Participation in the lessons may be reflected in the final mark.
Controlled participation in lessons:
Attendance at lectures is recommended, attendance at seminars is required. Lessons are planned according to the week schedules. Absence from lessons may be compensated by the agreement with the teacher supervising the seminars.
Type of course unit:
    Lecture  13 × 1 hrs. optionally                  
    Computer-assisted exercise  13 × 2 hrs. compulsory                  
Course curriculum:
    Lecture 1. Basic parts of modern C++
2. Fundamental types of data
3. Arrays and Loops
4. Pointers and References
5. Defining Functions
6. Function Templates
7. Preprocessing directives
8. Classes and object-oriented Programming
9. Operator Overloading
10. Inheritance, polymorphism
11. Class templates
12. STL containers and algorithms
13. Scientific computing libraries
    Computer-assisted exercise 1. Visual studio 2019
2. MSBuild, CMake, vcpkg
3. -8. Small projects
9. C++/CLI
10. Interoperability (Matlab, .NET)
11. Armadillo, Eigen, MKL
12. Boost.Numeric.Odeint
13. Accreditation
Literature - fundamental:
1. Ivor Horton, Peter Van Weert Beginning C++17: From Novice to Professional Apress 2018 ISBN 1484233658
2. Bjarne Stroustrup A Tour of C++ [2nd ed.] C++ In-Depth Series Addison-Wesley 2018 ISBN 978-0-13-499783-4
3. George Em Karniadakis and Robert M. Kirby II Parallel Scientific Computing in C++ and MPI Cambridge University Press 2003 ISBN 9780511812583
4. Yair Shapira Mathematical Objects in C++: Computational Tools in A Unified Object-Oriented Approach Chapman & Hall 2009 ISBN 9781439811474
5. Miroslav Virius Programování v C++ od základů k profesionálnímu použití GRADA 2018 ISBN 978-80-271-0502-1
6. Jacek Galowicz C++17 STL Cookbook Packt Publishing 2017 ISBN 978-1-78712-049-5
7. William H. Press Numerical Recipes 3rd Edition: The Art of Scientific Computing Cambridge University Press 2007 ISBN10: 0521880688
Literature - recommended:
1. Joe Pitt-Francis, Jonathan Whiteley Guide to Scientific Computing in C++ (2nd edition) Springer 2017 ISBN 978-3-319-73132-2
2. Mikael Olsson C++17 Quick Syntax Reference Apress 2018 ISBN 978-1-4842-3599-7
3. Miroslav Virius Programovací jazyk C++ (1.-3. díl) ČVUT 2016 ISBN 9788001059616
The study programmes with the given course:
Programme Study form Branch Spec. Final classification   Course-unit credits     Obligation     Level     Year     Semester  
B3A-P full-time study B-MAI Mathematical Engineering -- GCr 3 Compulsory 1 3 S