This module will introduce students to the fundamentals of constructing software using the Python programming language. You will learn how to decompose problems into components that can be implemented to provide a software solution, as well as how to control program flow and represent data within software. Having learned to construct software you will explore the object orientation paradigm, as well as design patterns used in software development. You will also learn how to verify the correctness of software with testing, and how software is deployed so that it can be used.
This module will ensure that students are able to create software solutions to problems arising in a variety of fields and industries. They will learn concepts that enable them to implement software using Python efficiently, as well as assuring the software is correct using code testing.
INTENDED LEARNING OUTCOMES (ILOs) (see assessment section below for how ILOs will be assessed)
On successful completion of this module you should be able to:
Module Specific Skills and Knowledge
1. Implement software to solve a given problem that utilises the control structures and data structures available in the Python language.
2. Build applications that make use of Python libraries as required by the problem.
Discipline Specific Skills and Knowledge
3. Select appropriate design patterns to achieve specific objectives within a software project
4. Use industry-standard approaches for testing and developing software
Personal and Key Transferable / Employment Skills and Knowledge
5. Formulate a software design to a problem from a given field or industry beyond computer science or data science.
SYLLABUS PLAN - summary of the structure and academic content of the module
The module will cover the following topics:
Problem decomposition and program design.
Foundational Python concepts (e.g. types and program structure).
Control structures (conditionals, loops).
Python data structures.
Exception handling.
Object orientation.
Event-driven programming.
Design patterns.
Software testing.
Deployment.