Skip to main content

Unit information: Software Development: Programming and Algorithms in 2020/21

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

Students will be able to

  1. Demonstrate an appreciation of the importance of space and time complexity of algorithms by being able to competently design algorithms, and analyse algorithm complexity, at an elementary level using big-O notation.
  2. Program competently in Python, using procedural, object-oriented, and/or functional techniques as appropriate.
  3. Design, analyse, and implement software architectures.
  4. Effectively identify, deploy, and usefully integrate pre-existing packages of library code.
  5. Select and engage in suitable software engineering practices (e.g. Agile, XP, ITIL, DevOps).
  6. Use online repositories such as GitHub, and associated tools, for version control and collaborative working.

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%)

Reading and References

  • Matthes, Eric. Python crash course: a hands-on, project-based introduction to programming. No Starch Press, 2019.
  • McKinney, Wes. Python for data analysis: Data wrangling with Pandas, NumPy, and IPython. O’Reilly, 2012.
  • Downey, Allen. Think Python. " O'Reilly Media, Inc.", 2012.
  • Guttag, John. Introduction to Computation and Programming Using Python. MIT Press, 2013.
  • Sommerville, Ian. Engineering Software Products. Pearson, 2019.
  • Code Academy: Learn to Code. (Excellent resource for learning Python)
  • Humble, Jez, and Farley, David. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley, 2010.
  • Loeliger, Jon and MCullough, Matthew. Version Control with Git: Powerful tools and techniques for collaborative software development. O'Reilly, 2012.
  • Ziadé, Tarek. Expert Python Programming. Packt Publishing Ltd, 2008.