Programming in C++

Labs, Friday 10:40–12:10, SU2, Malá Strana, 2025


:email: Contact

  • Office: Room S203, 2nd floor
  • Mattermost: ulita.ms.mff.cuni.cz/mattermost
    • Channel: 2526/nprg041-cpp-faltin
    • DM: @faltin.tomas
  • Email: tomas.faltin@matfyz.cuni.cz

:information_source: General Information

:calendar: Important Dates

Date Milestone Details Submission
14.11.2025 Topic proposal DM on Mattermost
12.12.2025 Approved detailed description Written in Markdown Merge request
13.02.2026 First technology demo
22.05.2026 Final version

:bangbang: Do not leave this until the last minute! Iteration takes time.

:test_tube: Individual Labs

Lab Date Slides Goals Code Homework
01 03.10. pdf Compilation, debugging, IDE, I/O redirection, cmd args, vector, string by 09.10. 5:00: Calculator (+/-)
02 10.10. pdf Parameters, class, struct, const functions, vector by 16.10. 5:00: 3D matrix
03 17.10. Škoda (Covered by J.Klepl)
04 24.10. pdf using, const/constexpr, ownership, special methods implement_class_c.cpp, counting_class.cpp, verbose_class.cpp by 30.11. 5:00: Implement class C (1p), 3D matrix (2p)
05 31.10. pdf Declaration, definition, sequence containers, iterators summing_program.cpp by 6.11. 5:00: Summing program (1p), N-in-row game (3p)
06 07.11. pdf owners, observers, dynamic allocation, pointers, pointer arithmetic linked_list.hpp by 13.11. 5:00: linked-list (1p), vector<int> (2p)
07 14.11. pdf, feedback form      
08 21.11.        
09 28.11.        
10 05.11.        
11 12.11.        
12 19.11.        
13 09.01.        
01* 01.01. pdf Covering for J. Klepl    

:white_check_mark: Merge Requests in GitLab

For each homework, submit your solution through a Merge Request (MR). This allows me to review your code and provide comments.

  1. Create a separate branch, e.g, hw1-solution for your homework: git checkout -b hw1-solution
  2. Add you solution and push your new branch to Gitlab
  3. Open a Merge Request
    • Go to you Gitlab project in browser and click: Merge Requests/Create merge request.
    • Select Source branch: hw1-solution, Target Branch: master
    • Add a title, optional description, set @faltint as Assignee, and click Create merge request

:trophy: Credit Project

See Credit Information Page for details.

Framework for Finding a Project Idea

Understanding & Curiosity

  • What system or concept do you want to deeply understand?
    Examples: OS, compilers, networking, ML pipelines.
  • Is there a technology you’ve always wondered about internally?
    Examples: Blockchain, Docker, game engines.

Technology & Tools

  • What libraries or frameworks does your domain rely on?
    Examples: OpenMP, MPI, LLVM, TensorFlow.
  • Could you integrate multiple libraries for something new?

User-Centered Design

  • Ask peers: What tasks frustrate them?
  • Automate repetitive tasks or improve incomplete tools.

Innovation & Improvement

  • Combine two ideas into something new.
  • Implement a research algorithm practically.
  • Create interactive learning tools.

Scalability & Performance

  • Design for large data or parallel processing.
  • Optimize for speed, memory, or energy.

Social Impact & Accessibility

  • Improve accessibility for people with disabilities.
  • Make complex tools easier for beginners.