Semester: 2
ECTS: 5
Lectures: 15
Practice sessions: 30
Independent work: 105
Module Code: 23-02-541
Semester: 2
ECTS: 5
Lectures: 15
Practice sessions: 30
Independent work: 105
Module Code: 23-02-541

Module title:


Advanced programming paradigms

Lecturers and associates:


Đani Pašić, Lecturer

Module 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.


Literature:


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.