This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

be5b33prg -- Programming Essentials

The course focuses on understanding and mastering basic design principles of algorithms. It develops data abstraction coupled with the essential programming patterns. The emphasis is on creating readable and reusable programs in Python.

( labs | tutorials | resources BE5B33PRG TIME SCHEDULE (EN))


Information announced during the semester will be put here

  • The oral part of exam 8.2. will take place from 12:15 at KN:E-128. See the approximate timeline.
  • Exam 8.2. starts at 8:30, 30 minutes earlier than originally announced
  • The oral part of exam 19.1. will take place from 11:45 at KN:E-128..
  • The final exam dates announced (19.1. and 8.2.), see KOS for details.


Where and when: KN:E-301 (Charles Square, building E), Friday 09:15-10:45

Teaching: Tomas Jenicek

PDF slides and other lecture materials will be made available during the semester. The lectures, however, will also include blackboard sessions as well as live coding demonstrations. Active participation in lectures is strongly recommended based on our experience from previous years. Two tests will be written during the lectures (Mid-term test and End-of-term test in the table below); attending those lectures is required.

week date topic materials
1. 23.09.2022 Introduction. Variables, expressions. Slides 1 , Notebook 1 , Demo 1 OCR , Demo 2 Face , Demo 3 Classification
2. 30.09.2022 Primitive data types, program flow Slides 2 , Revision 1 , Notebook 2
3. 07.10.2022 Program structure, functions Slides 3 , Revision 2 , Notebook 3
4. 14.10.2022 Sequence data types, traversals Slides 4 , Revision 3 , Notebook 4
5. 21.10.2022 Collections (sets, dictionaries), iterators Slides 5 , Revision 4 , Notebook 5
- 28.10.2022 Holidays
6. 04.11.2022 Modules, namespaces, conventions Slides 6 , Revision 5 , http_project.zip
7. 11.11.2022 Mid-term test
8. 18.11.2022 Filesystem, file reading and writing Slides 8 , storage_project.zip
9. 25.11.2022 Debugging, code testing, exceptions Slides 9 , password_project.zip
10. 02.12.2022 Objects, classes I Slides 10
11. 09.12.2022 Objects, classes II Slides 11 , euclidean.zip
12. 16.12.2022 End-of-term test
13. 13.01.2023 Revision for the exam, Advanced concepts Slides 13 , Slides 14

Individual Consultations

After agreement. Specific problems will be discussed hence come with open problems you are struggling with. You may consider studying one of the recommended online resources first.

Exams and Tests

There will be two tests during the semester (mid-term and end-of-term) and a final exam during the exam period. The format of both the exam and the mid-term/end-of-term tests will be specified during the semester. It is recommended that you go through pages Preparing Yourself for the Tests and Plagiarism.

The content of the exam / test will be based on the content of:

  1. Lectures before the date of the exam / test (not limited but including the slides released after each lecture)
  2. Exercises and home-works practiced before the date of the exam / test
  3. Relevant chapters of the Wentworth2012 book
  4. Collection of Python multiple-choice question to practice for the exam http://www.sanfoundry.com/1000-python-questions-answers/ related to the content of the lectures


You need to bring your laptop to the lecture, or let me know that you need access to a school computer in advance. The test will be a programming assignment which you will complete on your computer. You are allowed to use any materials, internet, and IDE (PyCharm). It is not allowed to communicate with anyone (sending information or receiving), or to generate code automatically (e.g. via ChatGPT or GitHub Copilot). See the assignment from the last years – midterm_2020.py , midterm_2021.py , midterm_2022.py .


The end-of-term test will have the same format with the same rules as midterm, see above. See the assignment from the last years – endofterm_2020.py , endofterm_2021.py , endofterm_2022.py .

Final exam

Once you pass the semester (obtain “zapocet” after the semester ends), use the Faculty information system KOS to enroll. The dates and rooms for each exam date are visible in KOS. You may take the exam 2 times (retake the exam 1 time), but only within the dates in KOS – no more exam dates will be announced.

The final exam will have two parts: programming part (2.5 hour in the morning, up to 25 points) and oral part (10-20 minutes in the afternoon, up to 10 points); you can get maximum 30 points in total. The programming part will be similar to the midterm and end-of-term tests, with the same rules but with more complex assignments. During the oral part, you will be asked questions about your solution and topics related to the assignment, in order to 1. refine your exam grading and 2. verify that the uploaded solution is your own original work. Failing to explain your work will result in failing the exam and disciplinary actions. The oral part is mandatory and must be taken the same day as the written part. During the oral part, no materials are allowed, except for an IDE on your computer. See the previous assignments – exam_1_2020.txt , exam_2_2020.txt , exam_3_2020.txt , and exam_1_2021.txt , exam_2_2021.txt , exam_3_2021.txt , exam_1_2022.txt , exam_2_2022.txt .


Points: 50 homework (mostly coding), 20 tests during the term (2 tests, 10 points each), 30 final exam.

At least 30 points (out of 70) and regular lab attendance are needed before going to the final exam (in order to obtain “zapocet”). At least 10 points (out of 30) are needed to pass the final exam. To pass the course and get a grade, “zapocet” must be obtained, exam passed and at least 51 points gained in total (see the table below). It is possible to get additional up to 20 points for extra activity during the semester, such as completing a bonus homework.

100-91 90-81 80-71 70-61 60-51 50-0

F means fail.

courses/be5b33prg/start.txt · Last modified: 2023/02/14 13:16 by jenicto2