Programming in C++
Labs, Friday 10:40–12:10, SU2, Malá Strana, 2025
Contact
- Office: Room S203, 2nd floor
-
Mattermost: ulita.ms.mff.cuni.cz/mattermost
- Channel:
2526/nprg041-cpp-faltin - DM:
@faltin.tomas
- Channel:
- Email: tomas.faltin@matfyz.cuni.cz
General Information
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 | — | — |
Do not leave this until the last minute! Iteration takes time.
Individual Labs
| Lab | Date | Slides | Goals | Code | Homework |
|---|---|---|---|---|---|
| 01 | 03.10. | Compilation, debugging, IDE, I/O redirection, cmd args, vector, string | — | by 09.10. 5:00: Calculator (+/-) | |
| 02 | 10.10. | Parameters, class, struct, const functions, vector | — | by 16.10. 5:00: 3D matrix | |
| 03 | 17.10. | Škoda | (Covered by J.Klepl) | — | — |
| 04 | 24.10. | 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. | Declaration, definition, sequence containers, iterators | summing_program.cpp | by 6.11. 5:00: Summing program (1p), N-in-row game (3p) | |
| 06 | 07.11. | 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. | Covering for J. Klepl |
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.
- Create a separate branch, e.g, hw1-solution for your homework:
git checkout -b hw1-solution - Add you solution and push your new branch to Gitlab
- 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
@faltintas Assignee, and click Create merge request
- Go to you Gitlab project in browser and click:
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.