|
Academic Year: | 2018/9 |
Owning Department/School: | Department of Computer Science |
Credits: | 12 [equivalent to 24 CATS credits] |
Notional Study Hours: | 240 |
Level: | Masters UG & PG (FHEQ level 7) |
Period: |
|
Assessment Summary: | CW 100% |
Assessment Detail: |
|
Supplementary Assessment: |
|
Requisites: | |
Description: | Aims: (a) to develop an understanding of how the principles behind software development are much more important than the chosen programming language, and how specification, design choices and development methodology may have a major impact on the correctness and suitability of the final software solution; (b) to develop a systemic understanding of software development paradigms for complex software system building; (c) to develop skills in critically analysing problems for appropriate software solutions; (d) to develop the ability to contrast the various software development paradigms. Learning Outcomes: After taking this unit the student should be able to: (a) identify issues and appropriate solutions for the design and implementation of complex software problems; (b) perform evaluations of design solutions to determine their fitness for purpose; (c) demonstrate an understanding of the principles of software development paradigms and their relationship to the appropriateness of an eventual software solution; (d) critically evaluate and contrast contemporary software engineering paradigms for defined software engineering problems, given a set of relevant development constraints; (e) compare and contrast the roles, responsibilities, benefits and drawbacks of different team organization structures for software development, given a set of relevant development constraints. Skills: Choosing appropriate design techniques (T, F, A); designing software solutions in object-oriented programming languages (T, F, A); contrasting current software engineering paradigms and selecting the most appropriate one for a given situation (T,F,A). Content: The building blocks of software. Software design paradigms: Waterfall, Iterative, Agile, (for example: Scrum, XP, Kanban), Test-Driven Development (TDD). Software engineering concepts: abstraction, modularisation, encapsulation, data hiding, reuse, white-box and black-box inheritance, refactoring, smells, mocks, stubs, design patterns, formal verification, automated testing and property-based testing. Principles for engineering complex software systems. The effect of the programming language on design and implementation issues. Team structures. Tie vs. feature boxing. Pair working. |
Programme availability: |
CM50109 is Compulsory on the following programmes:Department of Computer Science
|
Notes:
|