Please note: you are viewing unit and programme information
for a past academic year. Please see the current academic year for up to date information.
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 |
Pre-requisites |
None
|
Co-requisites |
None
|
School/department |
School of Engineering Mathematics and Technology |
Faculty |
Faculty of Engineering |
Description including Unit Aims
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
- 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.
- Program competently in Python, using procedural, object-oriented, and/or functional techniques as appropriate.
- Design, analyse, and implement software architectures.
- Effectively identify, deploy, and usefully integrate pre-existing packages of library code.
- Select and engage in suitable software engineering practices (e.g. Agile, XP, ITIL, DevOps).
- Use online repositories such as GitHub, and associated tools, for version control and collaborative working.
Teaching Information
Teaching will be delivered through a combination of synchronous and asynchronous sessions, including lectures, practical activities and self-directed exercises.
Assessment Information
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. http://www.codecademy.com/tracks/python (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.