INDICATIVE CONTENT
This module will cover the following topics:
Core mathematics
Including discrete mathematics, linear algebra, number, graph theory, and statistical principles
Key programme design principles and theory
Professional practice and expectation in relation to legal, social, and associated ethical issues
Variables & data types
Input & Output
Lists and other data structures
Control structures (Sequence, selection & iteration)
Functions
Testing
Debugging
Problem solving
Effective programming to address full design, implementation, testing, and evaluation of solutions
Data validation, error handling and exceptions
Design using notations such as pseudocode and Structured English
Fundamental algorithms, such as sorting, searching and tree traversal
Other algorithms - brute force, travelling salesman, van loading, knapsack loading
Metrics for evaluating complexity of algorithms (Big-O)
Formal documentation of designs and solutions
Designing solutions to given problem specifications
Trade-offs between potential solutions (from simple to complex coding artefacts) addressing societal, business, and customer needs
You will be given a range of practical tasks to complete to help you gain mastery of the module’s topics through hands-on practical experience
ADDITIONAL ASSESSMENT DETAILS
Class-test - Throughout the module you will build an electronic portfolio of solutions to practical tasks, and these will be assessed through a class-test. The test will consist of approximately 50% of questions based on topics covered in the lectures and 50% of questions based on an electronic portfolio. The test will take place approximately half way through the module (Learning Outcomes 1 and 2).
Class-test - Throughout the module you will build an electronic portfolio of solutions to practical tasks, and these will be assessed through a class-test. The test will consist of approximately 50% of questions based on topics covered in the lectures and 50% of questions based on an electronic portfolio. The test will take place at the end of the module (Learning Outcomes 1, 2 and 3).
LEARNING OUTCOMES
1. Design solutions to problems using appropriate algorithms and notations.
Problem Solving,
Analysis
2. Develop solutions to problems using an appropriate programming language and a suitable development environment.
Application
3. Evaluate the complexity of alternative algorithms through use.
Knowledge and Understanding,
Learning
LEARNING STRATEGIES
All teaching sessions will blend theory and practical learning. Students will be introduced to curriculum concepts and ideas and will then be able to apply theory to practical examples within the same sessions. In addition, students will be provided with a range of resources for independent study such as case studies, academic papers and industry stories. There will be a mixture of practical and theoretical formative (mock or practice) exercises which will help students build knowledge and confidence in preparation for summative (formal) assessment.
RESOURCES
Python programming language
Python development environment (e.g. PyCharm, IDLE, Visual Studio Code)
REFERENCE TEXTS
All texts and electronic resources will be updated and refreshed on an annual basis and available for students via the online Study Links resource platform. All reference materials will be collated and curated and aligned to Equality, Diversity & Inclusion indicators.
Rocca, L, M. (2021), Algorithms and Data Structures in Action, Manning Publications; 1st edition
Skiena, S. (2020), The Algorithm Design Manual (Texts in Computer Science), Springer; 3rd ed. 2020 edition
Wengrow, J. (2020), A Common-Sense Guide to Data Structures and Algorithms, 2e: Level Up Your Core Programming Skills, The Pragmatic Programmers; 2nd ed. edition
Barry, P. (2016), Head First Python, O'Reilly
Schneider, D.I. (2015), An introduction to programming using Python, Pearson
WEB DESCRIPTOR
In this module, you will begin an exciting journey of discovery that will lay the programming foundation for both your academic and professional career. You will focus on designing and developing programs in Python. On the way, you will also learn about algorithms, data structures, analysing problems, modeling solutions, and testing programs.