F5698 The Ultimate Python Developer's guide

Faculty of Science
Autumn 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
there are 6 fields of study the course is directly associated with, display
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.
The course is also listed under the following terms autumn 2021, Autumn 2022, Autumn 2023.
  • Enrolment Statistics (recent)
  • Permalink: https://is.muni.cz/course/sci/autumn2024/F5698