Physics / Theoretical Physics (faster route) BSc/MSci
Physics 2T: Programming Under Linux PHYS2003
- Academic Session: 2025-26
- School: School of Physics and Astronomy
- Credits: 10
- Level: Level 2 (SCQF level 8)
- Typically Offered: Semester 2
- Available to Visiting Students: Yes
- Collaborative Online International Learning: No
- Curriculum For Life: No
Short Description
The aims of the course are to provide students with a solid grounding in Python programming, including good research software development practices, together with an understanding of the use of the Linux operating system and the tools available within it.
Timetable
The lectures will be on Tuesdays and Thursdays at 14:00 during Semester 2. During enrolment, students will need to register for one of the supervised laboratory sessions that are offered on Monday, Wednesday, and Friday afternoons.
The laboratory will also be available to students at other times during weekdays provided the PCs are not in use by another timetabled class.
Excluded Courses
None
Assessment
Practical work 25%, Programming test 25%, Degree examination 50%
Main Assessment In: April/May
Course Aims
The aims of the course are to provide students with a solid grounding in Python programming, including good research software development practices, together with an understanding of the use of the Linux operating system and the tools available within it.
Intended Learning Outcomes of Course
By the end of the course, students should be able to:
1) Compose multi-file Python programs to solve moderately complex tasks, in good modern Python programming style.
2) Understand how high-level Python code interacts with lower-level concepts in the operating system (data types, memory, files etc) and the implications of this for performance and resource management.
3) Analyse Python programs written by others, determining both the intent of the program and its components, and bugs and flaws in its implementation.
4) Be aware of useful Python functions and modules for computational physics, including those for data processing and image processing (amongst others). Know how to find and read documentation to understand library function usage and behaviour.
5) Apply knowledge of the Bash shell to complete tasks in the Linux operating system; locating, accessing and manipulating files.
6) Compose single-file Bash programs to solve simple tasks, in a procedural paradigm, with good style.
7) Understand the Linux model for processes, applying this to manipulate processes' inputs and outputs to compose them into functional chains (including those incorporating Python scripts).
8) Apply tools and techniques for planning, editing, testing, debugging, packaging and version control of research software projects
Minimum Requirement for Award of Credits
A minimum of 50% of the laboratory projects must be submitted. The practical test and written exam must be taken.