PřF:F5698 The Ultimate Python Guide - Course Information
F5698 The Ultimate Python Developer's guide
Faculty of ScienceAutumn 2024
- Extent and Intensity
- 0/2/0. 2 credit(s). Type of Completion: z (credit).
- Teacher(s)
- Mgr. Kryštof Mrózek (seminar tutor)
Dr. Martin Topinka, PhD. (seminar tutor)
Mgr. Petr Zikán, Ph.D. (seminar tutor) - Guaranteed by
- Dr. Martin Topinka, PhD.
Department of Theoretical Physics and Astrophysics – Physics Section – Faculty of Science
Contact Person: Dr. Martin Topinka, PhD.
Supplier department: Department of Theoretical Physics and Astrophysics – Physics Section – Faculty of Science - Timetable
- Wed 16:00–17:50 Fcom,01034
- Prerequisites
- The course is a free continuation of F1420 Programming in Python and F4500 Python for physicists. Basic knowledge of Python language (basic syntax and data structures, functions, modules) is assumed.
- Course Enrolment Limitations
- The course is also offered to the students of the fields other than those the course is directly associated with.
- fields of study / plans the course is directly associated with
- Astrophysics (programme PřF, B-FY)
- Astrophysics (programme PřF, B-FYZ)
- Astrophysics (programme PřF, N-FYZ)
- Physics (programme PřF, B-FY)
- Physics (programme PřF, B-FYZ)
- Physics (programme PřF, M-FY)
- Course objectives
- We are approaching the fifth year of this development course. While the first year attempted to understand some concepts seemingly unnecessarily in detail, in the second year we used the cloud service GitPod and the ready-made structure of a Python package by Claudio Jolowicz (https://github.com/cjolowicz/cookiecutter-hypermodern-python). However, by doing so, we did not sufficiently explain and effectively skipped some important elements of modern development in Python. The fourth year was a fairly balanced combination of the second and third years.
It could perhaps be said that the course has "converged," but a new technology has appeared on the scene - large language models. As far as programming is concerned, this represents a paradigm shift, which we obviously do not want to and will not ignore in this course. In the fifth year, we will innovate again and use LLMs, specifically ChatGPT and Copilot, as much as possible - we will demonstrate the strengths of these technologies (code generation and algorithm design), as well as their weaknesses (errors and so-called hallucinations).
The objectives of the subject, however, remain the same:
* Understand version control systems and use GitHub for collaboration in code management.
* Effectively use integrated development environments (Visual Code + Copilot)
* Acquire skills in techniques for modeling software domains for effective representation of systems in the real world.
* Identify and utilize the core packages of the Python language for various application areas.
* Use design patterns to write sustainable, scalable, and reusable code in Python.
* Develop an understanding of software testing and documentation. - Learning outcomes
- During the course, students will learn (hopefully at least something) of the following:
* Version Control and Collaboration:
* * Understand version control systems and their importance in software development.
* * Utilize GitHub for collaborative code management, including branching, merging, and conflict resolution.
* Integrated Development Environments (IDEs):
* * Effectively use Visual Code as an integrated development environment for Python projects.
* * Explore the features and productive tools provided by IDEs for efficient programming.
* Software Domain Modeling:
Gain skills in modeling software domains for effective representation of real-world systems.
Learn object-oriented modeling concepts such as classes, objects, and inheritance.
* Essential Python Packages:
* * Identify and utilize fundamental Python packages for various application areas.
* * Understand the functionality and usage of these packages in practical scenarios.
* Design Patterns in Python:
* * Learn design patterns and their importance in writing sustainable and scalable code.
* * Study commonly used design patterns in Python, such as Singleton, Factory, and Observer.
* * Apply design patterns to solve practical problems and improve code architecture.
* Software Testing, Documentation, and Continuous Integration:
* * Develop an understanding of software testing in Python.
* * Learn best practices for documenting Python projects, including using tools like Sphinx.
* * Explore the concept of continuous integration and its role in automated testing and project development.
* Large language models:
* * ChatGPT and how it can help or harm with programming.
* * Copilot plugin in VSCode.
During the course, students will also work on practical projects and exercises to apply their knowledge in real-world scenarios. They will gain a comprehensive overview of modern development practices in Python, including infrastructure tools, best practices, and software design principles. - Syllabus
- Throughout the course, we will be working on a campus-wide project together, gradually developing and explaining the principles, concepts, and tools mentioned above.
- Literature
- recommended literature
- Scopatz, Anthony, and Kathryn D. Huff. Effective computation in physics: Field guide to research with python. " O'Reilly Media, Inc.", 2015.
- Bob Gregory. Architecture Patterns with Python. O'Reilly Media, Inc. 2020. https://www.cosmicpython.com/
- LUTZ, Mark. Learning Python. 4th ed. Beijing: O'Reilly, 2009, xlix, 1162. ISBN 9780596158064. info
- Teaching methods
- The teaching will take place in the form of seminars, where we will collaboratively develop the project using our collective efforts.
- Assessment methods
- The subject will be concluded based on the activities throughout the semester and a final colloquium.
- Language of instruction
- Czech
- Further comments (probably available only in Czech)
- Study Materials
The course can also be completed outside the examination period.
The course is taught annually. - Teacher's information
- It is advisable for the student to have their own computer during the lesson. Teaching will primarily use the Linux operating system, however, other operating systems (Windows, iOS) should not be an obstacle. It is possible that on the latter operating systems, the teacher will not be able to provide full support to the young developer.
- Enrolment Statistics (recent)
- Permalink: https://is.muni.cz/course/sci/autumn2024/F5698