Image for

Advanced programming paradigms

  • Class 15
  • Practice 30
  • Independent work 105
Total 150

Course title

Advanced programming paradigms

Lecture type


Course code






Lecturers and associates

Course overview

This module introduces students to the basics of testing programming products and implementing the advanced programming paradigms.

This module is intended for students who wish to learn advanced paradigms in object-oriented programming. The skills acquired by this module will contribute significantly to students’ development as professionals in the respective fields.

Students will learn:
• How to test and improve software solutions, which is a valuable skill for their future challenges as software architects.
• How to design testing concepts of programming solutions.
• How to improve programming solutions by reducing coupled code, using the aspect-oriented approach, and implementing programming metrics.

The module is taught in Java and C
programming languages. The module assessment is based on individual student projects. In these projects, students must create a software solution to the given specifications.


Essential reading:
1. Kaner, C., Bach, J. and Pettichord, B. (2008) Lessons learned in software testing. Hoboken: John Wiley and Sons.
2. Martin, R.C. (2009) Clean code: a handbook of agile software craftsmanship. London: Pearson Education.

Recommended reading:
1. McLaughlin, B., Pollice, G. and West, D. (2006) Head First Object-Oriented Analysis and Design: A Brain Friendly Guide to OOAandD. Sebastopol: O'Reilly Media, Inc.

Further reading:
1. Mancuso, S. (2014) The software craftsman: Professionalism, Pragmatism, Pride. London: Pearson Education.

Download student guide

Minimal learning outcomes

  • Describing basic testing concepts of programming solutions.
  • Comparing testing types of programming solutions.
  • Designing and using programming tools for single-testing programming solutions.
  • Profiling - Testing programming systems and making them compatible with relevant norms.
  • Analysing programming solution for detecting coupled code.
  • Suggesting and implementing the aspect-oriented approach for coupled code.
  • Implementing the strategy of source code management.
  • Analysing and code refactoring by clean code principles.
  • Implementing programming metrics.

Preferred learning outcomes

  • Describing advanced programming testing concepts.
  • Suggesting and implementing at least two types of programming testing.
  • Designing instances on architecturally different parts of the application and using programming tools for single-testing programming solution.
  • Offering solutions for decreasing time spent and allocated memory for completing given programming solution based on the results obtained by using programming tools.
  • Improving programming solution to reduce coupled code.
  • Implementing at least two different aspects so that programming solutions could be organizationally improved.
  • Using at least two branches for managing the source code strategy
  • Refactoring programming solution according to the SOLID principles.
  • Implementing ones own metric in programming solution.