Programming
Module UFCFEU-30-1 Level 4 30 credits
Module Trainer: Chris Farrell
Overview
This module introduces students to the core concepts of programming with an introduction to algorithms and the characteristics of programming paradigms. Appropriate programming languages will be chosen to illustrate the concepts. It is not the intent of this module to teach apprentices to become proficient programmers. If this is a requirement of their employment, then it will be the employer’s responsibility.
Among the topics included in this module are: introduction to algorithms, procedural, object-orientated & event-driven programming, the integrated development environment and the debugging process.
Development lifecycles and processes are covered along with code repositories and version management
You will cover:
- algorithms and program design
- fundamental programming concepts
- fundamental data structures
- typical program development environment and methods
- object-oriented programming
- functional programming
- full-stack development - 3 tier model: presentation, application and data tiers
- event driven and reactive programming
- language translation and execution
- syntax analysis
- compiler semantic analysis;
- code generation
- coding in assembly language
- machine code
- scripting languages
- database query language
- the different aspects of the software development lifecycle and how they combine to deliver successful outcome, for example: need, design, trade-offs, implementation, deployment, support, evolution, validation, verification and assurance
- different approaches to developing software, including sequential, iterative/agile, etc.
- advantages and disadvantages of different software development processes along with choice of process in different contexts.
- selection and use of different tools and environments that support software development at different stages in the lifecycle
- the principles of systems engineering, including all aspects of technology, people, culture and process and the environment within which a system of interest exists and operates
- the benefits of a system approach to dealing with challenges arising from complexity, emergence, adaption and co-evolution
Delivery
The following units will be delivered:
- Software Development Lifecycle and Methodologies: A full and detailed study of the SDLC and methodologies
- Programming Foundations: Understanding computers and data, application development, compiling and building applications.
- Assembler Programming: Introduction to NASM assembly language, memory addressing, and performing operations on data.
- C++ Programming: Statically typed, compiled languages, data types, pointers, arrays, and object-oriented programming.
- C# Programming: Statically typed, managed languages, object-oriented programming, event-driven programming, and control flow.
- Python Programming: Dynamically typed, interpreted languages, variables, control flow, functional programming, and GUI development using tkinter.
- Software Development Paradigms: Procedural, object-oriented, functional, and reactive programming, along with debugging, unit testing, and test-driven development (TDD).
- Data Structures and Algorithms: Introduction to algorithm complexity, Big O notation and data structures such as dynamic arrays, linked lists, stacks, queues, trees, graphs, and hash tables.
- Windows Forms Development: Event-driven programming with legacy Windows Forms GUI development, and file handling.
- Web Development: ASP.NET Core Razor development, Python Flask development, and using web technologies like HTML, CSS and Bootstrap.
- Database Access: Introduction to SQL, creating, querying, and updating databases in Python.
- Cloud Introduction: Introduction to Cloud Services and Deployment to act as a basic foundation for further research
Assignment Brief
The full assignment brief will be placed here when it is issued
Component A: Unseen examination (2 hours)
Sit: End of block release week 2
Apprentices will be assessed on their knowledge and application of development lifecycles, methodologies and processes.
Component B: Practical coursework (fully documented)
Issued: End of block release week 3
Due: Start of block release week 1 of next module
Apprentices will design algorithms and implement a working piece of software. In each case there must be a technical description, code and evidence of testing and correct function. A short report will explain the development methodologies used in each case.
Submission details
All assignments will be submitted and feedback given on the UWE Blackboard system
Reading list (link to UWE library)
Communication
All questions about this module should be directed to the module leader.
Please contact via email, which is monitored continuously