Informationsteknik – Programmering i C++

Kurskod I340106
Studiepoäng 2
Goals

Efter avslutad kurs ska den studerande känna till viktiga delar i C++, samt kunna använda dessa modernt och effektivt.
För att uppfylla målet skall den studerande kunna
– redogöra för minnesmodellen i C++
– förklara begreppet RAII och hur det tillämpas i modern C++
– redogöra för de speciella medlemsfunktionerna
– förklara hur typdeduktion fungerar i C++
– implementera funktioner och klasser med templates
– använda C++ Standard Library containrar, iteratorer och parallella algoritmer på ett modernt och effektivt sätt
– förklara innebörden av const och constexpr, och använda dessa
– förklara och använda exceptions i C++ och noexcept
– implementera parallellprogrammering i C++, både med trådar/ mutexes och med async/ futures

After completed course, the student shall know important parts of C++, and be able to use them in a modern and efficient manner.

To achieve the goal, the student shall be able to
– describe the C++ memory model
– explain the RAII concept and how it is applied in modern C++
– describe the special member functions
– explain how type deduction works in C++
– implement functions and classes with templates
– use C++ Standard Library containers, iterators and parallel algoritms in a modern and efficient manner
– explain the meaning of const and constexpr, and use them
– explain and use exceptions in C++ and noexcept
– implement parallel programing in C++, with treads/ mutexes and with async/ futures

Contents

– Minneshantering i C++, stack/ heap.
– lvalue, rvalue och forwarding referenser, move, forward
– RAII, smarta pekare
– Speciella medlemsfunktioner i C++. Vikten av att känna till vilka konstruktorer och operatorer kompilatorn genererar automatiskt, fallgropar och best practice.
– templates
– const, constexpr, constexpr if
– C++ Standard Library containrar, iteratorer, parallella algoritmer, auto, lambda, string_view, optional, variant, any
– structured bindings
– Pimpl-idiomet
– exceptions, noexcept
– threads, mutexes, atomic
– futures, promises

– Memory management in C++, stack/ heap.
– lvalue, rvalue and forwarding referenser, move, forward
– RAII, smart pointers
– Special member functions in C++. The importance of knowing the constructors and operators the compiler generates automatically, pitfalls and best practice.
– templates
– const, constexpr, constexpr if
– C++ Standard Library containers, iterators, parallel algorithms, auto, lambda, string_view, optional, variant, any
– structured bindings
– the Pimpl-idiom
– exceptions, noexcept
– threads, mutexes, atomic
– futures, promises

Attendance

Obligatorisk närvaro vid laborationer samt vid genomgång av inlämningsuppgift.

Compulsory attendance at laborations and assignment review

Grading scale name

VG, G (för betygssättning)

Vocational education and training

Informationsteknik

Degree program

Utbildningsprogrammet för informationsteknik

Descriptive assessment

Godkända laborationer, inlämningsuppgift och tentamen.

Passed laboration, assignment and written exam.

Material

Meyers, S. (2014). Effective modern C++: 42 specific ways to improve your use of C++11 and C++14. Sebastopol, CA: O’Reilly Media. 315s.

En grundläggande bok i C++ rekommenderas som komplement, exempelvis
Lippman, S. B., Lajoie J. & Moo, B.E. (2013). C++ primer. 5. ed. Upper Sadle River, N.J.: Addison-Wesley. (938 s)
eller
Deitel, P.J. & Deitel, H.M. (2013). C++ how to Program. 9. ed. Upper Saddle River, N.J.: Prentice-Hall.1080 s.
Även äldre upplagor med C++98 fungerar i kombination med Meyers.

Meyers, S, (2014). Effective modern C++ :42 specific ways to improve your use of C++11 and C++14.Sebastopol,Calif.: O’Reilly Media.

A basic C++ book is recommended as a complement, for example
Lippman S. B., Lajoie J, Moo B.E., (2012). C++ Primer Fifth Edition: Addison Wesley. 938 s
or
Deitel H.M., Deitel P.J. (2016). C++ How to Program, Tenth Edition. Upper Saddle River, N.J.: Prentice-Hall. 1080 s
Older editions with C++98 also work in combination with Meyers.

Prerequisite

Programmering 2, Objektorienterad programmering och design 1 och 2.

Documentation

Godkänt vitsord noteras i studiekort. Vid validering används vitsordet Godkänd.

Passed grade will be noted in the study card

Teaching methods

Föreläsningar, laborationer och inlämningsuppgift.

Lectures, laborations and assignment.

Utskriven 27 oktober 2020 kl 19:55