The University of Southampton

PHYS1201 Physics Skills - Programming and Data Analysis

Module Overview

This module aims to introduce students to the principles of computer programming and to statistics. The primary goal is to provide students with the practical programming and data analysis skills that are necessary for both their degree course and most careers in physics. Python is used as the introductory programming language, and numerical simulations will be used extensively in order to introduce and illustrate key statistical concepts. The emphasis throughout will be on developing insight, understanding and practical skills, as opposed to the formal/mathematical aspects of programming and statistics. The skills developed in this module will be required in many experimental/practical modules across all physics programmes.

Aims & Objectives

Aims

Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

  • Basic programming constructs, including sequence, selection and iteration, the use of identifiers, variables and expressions, and a range of data types.
  • Good programming style
  • Fundamental statistical concepts, including probability distribution functions, cumulative distribution functions, hypothesis testing, parameter estimation and model fitting

Subject Specific Intellectual

Having successfully completed this module, you will be able to:

  • Interpret experimental/observational results correctly

Transferable and Generic

Having successfully completed this module, you will be able to:

  • Analyse problems in a systematic manner and develop algorithms to solve them computationally
  • Design, run, debug and test computer programs
  • Use existing software libraries in your own code

Subject Specific Practical

Having successfully completed this module, you will be able to:

  • Write code to analyse and present experimental/observational data

Syllabus

Programming
  • Writing and running programs
  • Variables and data types
  • Basic control flow: looping, branching and function calls
  • Functional programming
  • Computational thinking
  • Python libraries (for mathematics, data analysis and display)
  • Designing algorithms (Moving from problem to solution)

Statistics/Data Analysis

  • Describing data
  • Defining & understanding probability
  • Probility distribution functions and cumulative distribution functions
  • Statistical distributions: Gaussian, Binomial, Poisson, Chi-squared
  • The central limit theorem
  • Understanding uncertainty -- statistical and systematic errors
  • Testing for and understanding correlations
  • Hypothesis testing
  • Understanding statistical significance
  • Model fitting and parameter estimation via least-squares and Chi-squared

Learning & Teaching

Learning & teaching methods

The aim of this module is to give students practical skills, so the teaching and learning methods used are designed to accomplish this. Formal lectures will be used primarily to introduce key ideas and concepts, but even these will be illustrated with extensive practical/computational examples and visualizations. Most of the teaching will take place during extended "practical" sessions, during which students will be expected to carry out programming and data analysis tasks that are related to -- and illustrative of -- the concepts that are being explored in the module at that time. Ideally, the formal lecture content will take place immediately before or during these sessions, so that new theoretical concepts being introduced can immediately be explored in practice by students. Teaching support in the form of multiple demonstrators will be available during all sessions, so that one-on-one help is available as needed. Additional learning is expected to take place independently, again mostly in the form of practical programming and data analysis. Lecture notes and practical examples will be made available in the form of ipython notebooks.

Assessment

Assessment methods

Attendance of all practical sessions is mandatory. Weekly laboratory performance marks will be assigned according to:  0 - failed to engage with the session adequately; 1 - attended and partly engaged with the material; 2 - attended and engaged fully with the material.

MethodHoursPercentage contribution
Programming project: Students will be assigned a programming task and will have to design and implement an algorithm to carry this out. The resulting code will have to be fully documented and will be submitted online. The submitted code will be tested and assessed, with the marks contributing 30% to the overall module mark.-20%
Data analysis project: Students will be assigned a practical data analysis problem, which they have to solve by designing and implementing a suitable algorithm in python. They will be expected to produce a brief, but complete scientific report on their work -- including the code and a interpretation of the results. This report will be assessed, with the marks contributing 70% to the overall module mark.-60%
Laboratory performance -20%

Referral Method: By set coursework assignment(s)

Share this module FacebookTwitterWeibo