1. Homepage of Dr. Zoltán Porkoláb
    1. Home
    2. Archive
  2. Teaching
    1. Timetable
    2. Bolyai College
    3. C++ (for mathematicians)
    4. Imperative programming (BSc)
    5. Multiparadigm programming (MSc)
    6. Programming (MSc Aut. Sys.)
    7. Programming languages (PhD)
    8. Software technology lab
    9. Theses proposals (BSc and MSc)
  3. Research
    1. Sustrainability
    2. CodeChecker
    3. CodeCompass
    4. Templight
    5. Projects
    6. Conferences
    7. Publications
    8. PhD students
  4. Affiliations
    1. Dept. of Programming Languages and Compilers
    2. Ericsson Hungary Ltd

Programming Language C++ (for mathematicians)

This course in this semester is only in Hungarian language

alt text

code:
cppmatm22va
cpp_pr1x0_m17va
im1c3pn4

Grading policy

During the semester students will work on a small C++ project which consists from 3 major milestones. At each milestone students should implement some part of the project according what they learn by that time. Each milestone is evaluated separately. At the end of the semester students should write a C++ program as an exam. For this events you can use all notes, books or internet resources except any human help.

The final grade is based on the following factors:

  • The submissions of the student task and the canvas examples: 50%.
  • Writing an exam program in the exam period: 50%

Activity on practices has a positive effect.

Student project

During the semester the students will (individually) working on a larger project. Submit the solutions on Canvas copying only the source of the solution as a text.

This year the task will be the step by step implementation of a simple binary search tree class.

  1. Task 1 Write a pretty-print function to print the content of the tree. Deadline: March 24, Sunday, 23:59. The solution is available now.

  2. Task 2 Re-write the Task1 using pointers re-implementing the printBinTree and implementing the insertBinTree function. Deadline: April 14, Sunday, 23:59.
    The solution is available now.

  3. Task 3 Write a BinTree class based on the Task2. Define constructor from a (possible empty) vector. Define destructor to clean up the dynamic memory. No copy or move operations are defined. Define insert() and contains() public member functions and the output operator. Separate your solution into a header file and a source file. Deadline: May 5, Sunday, 23:59.

Schedule 2024 Spring

Lecture

Time Where Lecturer Contact
Wednesday 10:00-12:00 LD 0-817 Dudich Porkoláb Zoltán gsd@inf.elte.hu

Practices

Time Where Lecturer Contact
Friday 10:00-12:00 LD 0-411 Umann Kristóf dkszelethus@gmail.com
Friday 14:00-16:00 LD 0-411 Umann Kristóf dkszelethus@gmail.com

Slides

1 2 3 4 5 6 7 8 9

Planned schedule:

Lecture
1. Fundamentals
2. Static typing
3. Program structure
4. The preprocessor
5. Expressions
6. Expression evaluation, Statements
7. Scope
8. Life
9. Common errors regarding scope and life
10. Declarations
11. Functions
12. Parameters of main
13. Classes
14. Operators
15. POD and non-POD
16. Templates
17. The Standard Template Library
18. STL reference
19. STL example
20. Inheritance
21. Polymorphism
22. Exam preparation

Further reading

alt text

Bjarne Stroustrup: The C++ Programming Language, 4th Edition.

Addison-Wesley (May 2013) ISBN 978-0321563842.

alt text

Bjarne Stroustrup: Programming, 2nd. Edition. (2013). ISBN-13: 978-0321992789.

alt text

Scott Meyers: Effective Modern C++, 42 Specific Ways to Improve Your Use of C++11 and C++14.

O’Reilly Media (November 2014).

Earlier

Videos on 2022 lectures

Lecture Video
1. Fundamentals CppMat-2022-ea-01.mp4
2. Static typing CppMat-2022-ea-02.mp4
3. Program structure CppMat-2022-ea-02.mp4 from 53’
4. The preprocessor CppMat-2022-ea-03.mp4
5. Expressions CppMat-2022-ea-03.mp4 from 36’
6. Expression evaluation, Statements CppMat-2022-ea-04.mp4
7. Scope CppMat-2022-ea-06.mp4
8. Life CppMat-2022-ea-06.mp4 from 55’
9. Common errors regarding scope and life CppMat-2022-ea-06.mp4 from 1h:30’
10. Declarations CppMat-ea-07.mp4
11. Functions CppMat-ea-07.mp4 from 64’
12. Parameters of main CppMat-ea-07.mp4 from 1h:20’
13. Classes CppMat-2022-ea-07.mp4
14. Operators CppMat-2022-ea-08.mp4
15. POD and non-POD CppMat-2022-ea-09.mp4
16. Templates CppMat-2022-ea-10.mp4
17. The Standard Template Library  
18. STL reference  
19. STL example  
20. Inheritance CppMat-2022-ea-11.mp4
21. Polymorphism CppMat-2022-ea-11.mp4
22. Exam preparation  

Some practices in 2022

Practice Video
2022.02.14. CppMat-22-gyak-0215-12h.mp4
2022.02.28. CppMat-22-gyak-0228-10h.mp4
2022.03.07. CppMat-22-gyak-0307-10h.mp4
2022.03.21. CppMat-22-gyak-0321-10h.mp4

Videos on 2021 lectures

Lecture Video
1. Fundamentals CppMat-ea-01.mp4
2. Static typing CppMat-ea-02.mp4
3. Program structure CppMat-ea-03.mp4
4. The preprocessor CppMat-ea-03.mp4 (from 43’)
5. Expressions CppMat-ea-04.mp4
6. Statements CppMat-ea-05.mp4
7. Scope CppMat-ea-05.mp4 (from 43’)
8. Life CppMat-ea-06.mp4
9. Common errors regarding scope and life CppMat-ea-06.mp4 (from 60’)
10. Declarations CppMat-ea-07.mp4
11. Functions CppMat-ea-07.mp4 (from 64’)
12. Parameters of main  
13. Classes  
14. Operators CppMat-ea-08.mp4
15. POD and non-POD CppMat-ea-08.mp4 (from 59’)
16. Templates CppMat-ea-09.mp4
17. The Standard Template Library CppMat-ea-09.mp4 (from 58’)
18. STL reference  
19. STL example  
20. Inheritance CppMat-ea-10.mp4
21. Polymorphism  
22. Exam preparation CppMat-ea-10.mp4

Videos on 2021 practices

Practice Tuesday 12:15h Tuesday 16:00h
2021.02.09 Video Video
2021.02.16 Video Video
2021.02.23 Video Video
2021.03.02 Video Video
2021.03.09 Video Video
2021.03.16 Video Video
2021.03.23 Video Video
2021.03.30 Video Video
2021.04.13 Video Video
2021.04.20 Video Video
2021.04.27 Video Video
2021.05.04 Video Video
2021.05.11 Video Video

Student project in 2021

During the semester the students will (individually) working on a larger project. They will step by step create a Polynom class and its test environment. For every time you have to create a small additional task built on the previous results. We publish the solution after the deadline with some delay.

Submit the solutions on Canvas as one single C++ source file containing the main() function given in the task.

  1. Task 1 Create a pretty printer for polynoms.
  2. Task 2 Evaluate a polynom.
  3. Task 3 Create a polynom class.
  4. Task 4 Create a template version of the polynom class with some operators.

Videos from 2020

Practice 4 | Practice 7 | Practice 8 | Practice 10 | Practice 12 | Practice 17 | Practice 20