Academic Handbook Course Descriptors and Programme Specifications
Programming Design Paradigm Course Descriptor
Last modified on August 13th, 2024 at 9:32 am
Course code | LCSCI7225 | Discipline | Computer Science |
UK Credit | 30 | US Credit | N/A |
FHEQ level | 7 | Date approved | June 2023 |
Core attributes | N/A | ||
Pre-requisites | None | ||
Co-requisites | None |
Course Summary
This course provides an intensive tour of programming and design. It exposes students to different ways of thinking of a software problem and designing robust solutions using a mix of programming design paradigms (for instance, by discussing and comparing object-oriented and functional design paradigms). The course concentrates on object-oriented program design and the design of abstractions that support the design of reusable software and libraries. There is a particular focus on sustainable development.
Students will learn how to explain and defend their design and programming decisions to their peers. In this sense, this course trains students to see programming as a “people’s discipline”.
Course Aims
The aims of this course are:
- Understand the Software Development Lifecycle
- Review various techniques used to develop modern software
- Review typical object-oriented concepts such as information hiding, encapsulation and various forms of polymorphism.
- Contrast the use of inheritance and composition as dual techniques for programming codesoftware reuse.
- Provide a deeper understanding of object-oriented design using the use of graphical design notations such as UML and object-oriented design patterns.
- Emphasise testing, specifically unit testing of components.
- Write clean, well-structured, well-documented code that facilitates reuse, minimises code duplication and make it “future-proof”.
- Gain experience with specific development tools (e.g. git) that are relevant to professional careers related to software development
Learning Outcomes
On successful completion of the course, students will be able to:
Knowledge and Understanding
K1d | Master advanced aspects of software design paradigms. |
K2d | Master object-oriented solutions to solve small and moderately sized practical problems. |
K3d | Choose, include, and implement design patterns appropriately to design solutions to problems and understand the impact of the design decisions on the technical, social and management dimensions of software. |
Subject Specific Skills
S1d | Implement a given software design with clean, understandable and well-documented code with appropriate unit testing. |
S2d | Become a sophisticated software developer, familiar with best practices to deliver reusable and extensible code. |
S3d | Create, refine and express a design in graphical notation such as UML class diagrams. |
Transferable and Professional Skills
T1d | Critically review and defend the design choices made in existing software libraries and frameworks to a group of peers, identify limitations and propose ways for improvement. |
T2d | Generate appropriate documentation for developed solutions. |
T2d | Consistently apply an excellent level of technical proficiency in written English, using an advanced application of scholarly terminology, that demonstrates the ability to deal with complex issues both systematically and with sophistication. |
T3d | Lead or participate in the design and implementation of software artefacts. |
Teaching and Learning
This course has a dedicated Virtual Learning Environment (VLE) page with a syllabus and range of additional resources (e.g. readings, question prompts, tasks, assignment briefs, discussion boards) to orientate and engage you in your studies.
The scheduled teaching and learning activities for this course are:
Lectures/Labs: Contact hours are typically a mix of weekly lectures and lab sessions, totaling up to 50 scheduled hours:
- Version 1: All sessions in the same sized group, or
- Version 2: most of the sessions in larger groups; some of the sessions in smaller groups
Faculty hold regular ‘office hours’, which are opportunities for students to drop in or sign up to explore ideas, raise questions, or seek targeted guidance or feedback, individually or in small groups.
Students are to attend and participate in all the scheduled teaching and learning activities for this course and to manage their directed learning and independent study.
Indicative total learning hours for this course: 300
Employability Skills
- Communication Skills
- Programming skills
Assessment
Formative
Students will be formatively assessed during the course by means of set assignments. These do not count towards the end of year results but will provide students with developmental feedback. Set assignments will also amplify problem-solving skills and develop software components that form part of the coding assignments.
Summative
The assessment will consist of two written coding assignments, which the student will have to do to the set guidelines for coding.
AE: | Assessment Activity | Weighting (%) | Coding | Length |
1 | Coding assignment | 50 | Yes | Code and 3,000-word explanation |
2 | Coding assignment | 50 | Yes | Code and 3,000-word explanation |
The coding assignments will be assessed in accordance with the assessment aims set out in the Programme Specification.
Feedback
Students will receive formal feedback in a variety of ways: written (including via email correspondence); oral (within one-to-one tutorials or on an ad hoc basis) and indirectly through discussion during group tutorials.
Feedback is provided on summative assessment and is made available to the student either via email, the VLE or another appropriate method.
Indicative Reading
Note: Comprehensive and current reading lists for courses are produced annually in the Course Syllabus or other documentation provided to students; the indicative reading list provided below is used as part of the approval/modification process only.
Books
Joshua Bloch. 2017. Effective Java (3rd. ed.). Addison-Wesley Professional, USA
Walter Savitch. 2016. Absolute Java 6th edition (6th. ed.). Pearson, USA
Electronic Resources
The Java Tutorials: Learning the Java language, by Oracle. Last accessed: August 2020
Indicative Topics
Students will study the following topics:
- Object-oriented program design with classes
- Class diagrams
- Testing with Junit
- Handling exceptions
- Primitive versus reference types
- Information hiding
- Polymorphism, encapsulation and inheritance in object-oriented programming
- Lists and iterator patterns
Version History
Title: LCSCI7225 Programming Design Paradigm
Approved by: Academic Board Location: Academic Handbook/Programme specifications and Handbooks/ Postgraduate Programme Specifications/MSc Computer Science Programme Specification/Course Descriptors |
|||||
Version number | Date approved | Date published | Owner | Proposed next review date | Modification (As per AQF4) & category number |
1.2 | November 2023 | March 2023 | Dr Alexandros Koliousis | April 2028 | Category 1:
Corrections/clarifications to documents which do not change approved content or learning outcomes |
1.1 | November 2023 | November 2023 | Dr Alexandros Koliousis | April 2028 | Category 1:
Corrections/clarifications to documents which do not change approved content or learning outcomes |
1.0 | June 2023 | June 2023 | Dr Alexandros Koliousis | April 2028 |