====== 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. ( [[courses:be5b33prg:labs:start|]] | [[courses:be5b33prg:tutorials:start|]] | [[resources]] [[http://www.fel.cvut.cz/en/education/rozvrhy-ng.B201/public/html/predmety/43/55/p4355706.html|BE5B33PRG TIME SCHEDULE (EN)]]) ===== News ===== * New exam date 9.2.2021 announced, see below * New exam date 28.1.2021 announced, see below * The format of the final exam announced, see below. * The format of the end-of-term test announced, see below. * The test preparation page created, see [[courses:be5b33prg:test_preparation|Preparing Yourself for the Tests]]. * The format of the midterm test announced, see below. * Due to the current epidemiological situation, both lectures and labs will be **[[/courses/be5b33prg/labs/week_00|taught online]]**. For more details, see [[https://www.fel.cvut.cz/en/covid/|FEE covid updates]]. ====== Lectures ====== **Where and when:** [[/courses/be5b33prg/labs/week_00|PRG Conference room]], Friday 09:15-10:45 **Teaching:** [[jenicto2@fel.cvut.cz|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 (06.11. and 11.12.); attending those lectures is required. ^ week ^ date ^ topic ^ materials ^ | 1. | 25.09.2020 | Introduction. Variables, expressions. | {{ :courses:be5b33prg:lec01-intro-tj_2020.pdf | Slides 1 }}, {{ https://colab.research.google.com/drive/10yX_dSAqiC3V3oQ8xh9Ru0aMU6zSyZvx?usp=sharing | Notebook 1 }}, {{ https://colab.research.google.com/drive/1S5VVfGs0bZhQYXKIjJ3OyPCYs1Hl0B-c?usp=sharing | Demo 1 OCR }}, {{ https://colab.research.google.com/drive/1_NgtWZyJ4B1mxTvEABKrrLxzTtFzHo3R?usp=sharing | Demo 2 Face }}, {{ https://colab.research.google.com/drive/1Lg7uHdH7bCBmo_88alNebmRIIe7ch8b8?usp=sharing | Demo 3 Classification }} | | 2. | 02.10.2020 | Primitive data types, program flow | {{ :courses:be5b33prg:lec02-flow-tj-2020.pdf | Slides 2 }}, {{ https://colab.research.google.com/drive/1UXZ7Tg5FJ3yta4SQ7jpXu-NIoM-Me7Rq?usp=sharing | Revision 1 }}, {{ https://colab.research.google.com/drive/1QInflbQ2yCzUsHAhq23wajA2yeQ5lH4B?usp=sharing | Notebook 2 }}, fixed lecture recording is in BRUTE | | 3. | 09.10.2020 | Program structure, functions | {{ :courses:be5b33prg:lec03-functions-tj-2020.pdf | Slides 3 }}, {{ https://colab.research.google.com/drive/1kHVFdj64DGWPNQRKc4iIFgx06_11YoVg?usp=sharing | Revision 2 }}, {{ https://colab.research.google.com/drive/1Bd2rXjNNKPBwA2TyWxMe8jSLlJIEIL-k?usp=sharing | Notebook 3 }} | | 4. | 16.10.2020 | Sequence data types, traversals | {{ :courses:be5b33prg:lec04-compound-types-tj-2020.pdf | Slides 4 }}, {{ https://colab.research.google.com/drive/1TBT2h5ndH3wdUtErgycIlza2LHtg5V0U?usp=sharing | Revision 3 }}, {{ https://colab.research.google.com/drive/1aFtcq1pC4NMrJ3WId8ue-1OXgoCyW8Oj?usp=sharing | Notebook 4 }} | | 5. | 23.10.2020 | Collections (sets, dictionaries), iterators | {{ :courses:be5b33prg:lec05-collections-tj-2020.pdf | Slides 5 }}, {{ https://colab.research.google.com/drive/1VIVUYRRFDZh2cbaNqYr1-SH4EX60WTc3?usp=sharing | Notebook 5 }} | | 6. | 30.10.2020 | Modules, namespaces, conventions | {{ :courses:be5b33prg:lec06-modules-tj-2020.pdf | Slides 6 }}, {{ :courses:be5b33prg:translation.py | translation.py }} | | 7. | 06.11.2020 | Mid-term test | {{ :courses:be5b33prg:midterm_2020.py | midterm_assignment.py }} | | 8. | 13.11.2020 | Filesystem, file reading and writing | {{ :courses:be5b33prg:lec08-files-tj-2020.pdf | Slides 8 }} | | 9. | 20.11.2020 | Debugging, code testing, exceptions | {{ :courses:be5b33prg:lec09-testing-exceptions-tj-2020.pdf | Slides 9 }} | | 10. | 27.11.2020 | Objects, classes I | {{ :courses:be5b33prg:lec10-classes-objects-tj-2020.pdf | Slides 10 }} | | 11. | 04.12.2020 | Objects, classes II | {{ :courses:be5b33prg:lec11-classes-objects-tj-2020.pdf | Slides 11 }}, {{ :courses:be5b33prg:linear_algebra.zip | linear_algebra.zip }} | | 12. | 11.12.2020 | End-of-term test | {{ :courses:be5b33prg:endofterm_2020.py | endofterm_assignment.py }} | | 13. | 18.12.2020 | Advanced concepts | {{ :courses:be5b33prg:lec13-advanced-tj-2020.pdf | Slides 13 }}, {{ :courses:be5b33prg:advanced_concepts.py | advanced_concepts.py }} | | 14. | 08.01.2020 | Revision for the exam | {{ :courses:be5b33prg:lec14-examples-tj-2020.pdf | Slides 14 }}, [[ courses:be5b33prg:test_preparation#complex_assignment_for_the_revision_lecture | Complex assignment ]], {{ :courses:be5b33prg:lecture14.zip | Complex solution }} | ===== 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 [[ courses:be5b33prg:test_preparation | Preparing Yourself for the Tests ]] and [[courses:be5b33prg:labs:start#plagiarism|Plagiarism]]. The content of the exam / test will be based on the content of: - Lectures before the date of the exam / test (not limited but including the slides released after each lecture) - Exercises and home-works practiced before the date of the exam / test - Relevant chapters of the [[http://openbookproject.net/thinkcs/python/english3e/|Wentworth2012]] book - 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 **Midterm 06.11.2020** You will complete this test on your computers and you are allowed to use any materials, internet and IDE (VS Code). It is not allowed to communicate with anyone (sending information or receiving). Similar skills as during the lecture exercises will be tested, in particular interpreting, correcting and creating code. The answers will not be limited to multiple-choice, you will be asked to submit code. See the assignment from 06.11. {{ :courses:be5b33prg:midterm_2020.py | midterm_assignment.py }}. **End-of-term 11.12.2020** The end-of-term test will have the same format with the same rules as midterm, see above. See the assignment from 11.12. {{ :courses:be5b33prg:endofterm_2020.py | endofterm_assignment.py }}. **Final exam 15.1.2021** Once you pass the semester (obtain "zapocet" after the semester ends), use the Faculty information system [[https://kos.cvut.cz|KOS]] to enroll. The exam will be taken remotely; you will need a microphone and a webcam to take the exam. The final exam will have two parts: programming part (9:00-11:30, up to 25 points) and oral part (12:30-18:00, 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 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 and your computer can be used only for communication. See the assignment from 15.1. {{ :courses:be5b33prg:exam_1_2020.txt | exam_1_assignment.txt }}. **Final exam 28.1.2021** The format and rules are identical to the final exam 15.1.2021. The programming part starts at 9:00, the oral part at 12:30. Make sure to enroll for the exam using [[https://kos.cvut.cz|KOS]]. See the assignment from 28.1. {{ :courses:be5b33prg:exam_2_2020.txt | exam_2_assignment.txt }}. **Final exam 9.2.2021** The format and rules are identical to the final exam 15.1.2021. The programming part starts at 9:00, the oral part at 12:30. Make sure to enroll for the exam using [[https://kos.cvut.cz|KOS]]. See the assignment from 9.2. {{ :courses:be5b33prg:exam_3_2020.txt | exam_3_assignment.txt }}. ===== Grading ===== 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. ^ A ^ B ^ C ^ D ^ E ^ F ^ | 100-91 | 90-81 | 80-71| 70-61 | 60-51 | 50-0 | **F** means fail.