Undergraduate study

Undergraduate 

Physics / Theoretical Physics (faster route) BSc/MSci

Physics 2T: Programming Under Linux PHYS2003

  • Academic Session: 2026-27
  • 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.

 

The course assumes students have already had exposure to basic Python programming: through the Physics 2 Python workshop, equivalent CS modules, or other prior learning. If in any doubt, contact the class head to discuss suitability.

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.

Excluded Courses

None

Assessment

Practical work 10%, Programming tests 15% and 25%, Degree examination 50%

Main Assessment In: April/May

Are reassessment opportunities available for all summative assessments? No

It is the default expectation that all courses will offer opportunities for reassessment or deferred assessment. Where it is not possible to offer this in some assessment components, the grade achieved at the first attempt will be counted towards the final course grade, and any exceptions for this course are described below.

 

It is not feasible to offer reassessment for the summative lab assessments (10% weighting) since this involves a large number of closely-supervised lab hours. Note that the latest university regulations permit a module grade to be returned even if EC is returned for the 10% lab component.

 

Reassessment opportunities in the August resit diet will be available for the practical tests (15%+25%) as well as the exam (50%).

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

No exceptions