PřF:F5698 The Ultimate Python Guide - Course Information
F5698 The Ultimate Python Developer's guide
Faculty of ScienceAutumn 2023
- Extent and Intensity
- 0/2/0. 2 credit(s). Type of Completion: z (credit).
- Teacher(s)
- Mgr. Andrej Roštek (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
- Mon 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
- there are 6 fields of study the course is directly associated with, display
- Course objectives
- We are approaching the third year of this course. While the first year attempted to understand certain concepts, perhaps unnecessarily in detail, in the second year, we utilized the cloud service GitPod and an already prepared structure of a Python package by Claudia Jolowicz (https://github.com/cjolowicz/cookiecutter-hypermodern-python). However, we did not sufficiently explain and practically skipped some important elements of modern Python development. This year, we will attempt to find a balance between the two approaches.
However, the objectives of the course remain the same:
* Understand version control systems and utilize GitHub for collaborative code management.
* Effectively use integrated development environments (Visual Code).
* Acquire skills in software domain modeling techniques for effective representation of real-world systems.
* Identify and utilize essential Python packages for various application domains.
* Apply design patterns to write sustainable, scalable, and reusable code in Python.
* Develop an understanding of software testing, documentation, and continuous integration (Continuous Integration).
For the new addition in the third year, we would add the following:
* Explore containerization concepts and employ Docker for creating reproducible environments.
It is clear that everything mentioned here cannot be covered in a single semester. Therefore, the specific focus of our attention will be the subject of collective discussion. - 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.
* Containerization with Docker:
* * Explore the concepts of containerization and its benefits in software development.
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 (Autumn 2023, recent)
- Permalink: https://is.muni.cz/course/sci/autumn2023/F5698