====== Programming ====== ==== Module UFCFEU-30-1 Level 4 30 credits ==== === Module Trainer: Chris Farrell === {{ :cyberdegree:programming.pdf |Module specification}} ==== 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 ==== All resources can be found on blackboard. ==== 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) ==== [[https://rl.talis.com/3/uwe/lists/6CFAF645-C8F0-4DE0-2AD8-F7B85AB7F809.html|Link]] ==== Communication ==== All questions about this module should be directed to the module leader. Please contact via email, which is monitored continuously