Skip to main content

Unit information: Software Development: Programming and Algorithms in 2021/22

Please note: It is possible that the information shown for future academic years may change due to developments in the relevant academic field. Optional unit availability varies depending on both staffing, student choice and timetabling constraints.

Unit name Software Development: Programming and Algorithms
Unit code EMATM0048
Credit points 20
Level of study M/7
Teaching block(s) Teaching Block 1 (weeks 1 - 12)
Unit director Dr. Abdallah
Open unit status Not open




School/department Department of Engineering Mathematics
Faculty Faculty of Engineering


The aim of this unit is to provide students with a broad introduction to algorithm design and analysis, essential programming skills (taught in the Python programming language), and contemporary software development and engineering practices.

These core skills are required in order to be able to understand, implement and apply data science techniques across all other units of the programme.

Intended learning outcomes

On successful completion of the unit, students will be able to:

  1. Program competently in Python, using procedural, object-oriented, and/or functional techniques as appropriate.
  2. Appreciate the importance of space and time complexity of algorithms and be able to design algorithms, and analyze algorithm complexity at an elementary level using big-O notation.
  3. Effectively identify, deploy, and usefully integrate pre-existing packages of library code
  4. Analyze and interpret data science lifecycle, and understand how to implement each step by appraising, selecting, and applying appropriate tools and techniques.

Teaching details

Teaching will be delivered through a combination of synchronous and asynchronous sessions, including lectures, practical activities and self-directed exercises.

Assessment Details

Coursework (100%) - 1 Summative Assessment that will assess all ILOs on a selection of different programming tasks.

Reading and References

  • Matthes, E., Python Crash Course: a Hands-on, Project-based Introduction to Programming, 2019, no starch press.
  • McKinney, W., Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython, 2012, O'Reilly Media, Inc.
  • Downey, A., Think Python, 2012, O'Reilly Media, Inc.
  • Guttag, J.V., Introduction to Computation and Programming Using Python, 2013, MIT Press.
  • Goodrich, M.T., Tamassia, R. and Goldwasser, M.H., Data Structures and Algorithms in Python, 2013, John Wiley & Sons Ltd.
  • VanderPlas, J., Python Data Science Handbook: Essential Tools for Working with Data, 2016, O'Reilly Media, Inc