Click here to start your application. Apply now

Academic Handbook

Programming Design Paradigm Course Descriptor

 

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
Print/Save PDF