Module also offered within study programmes:
General information:
Name:
Software design patterns in object oriented programming
Course of study:
2017/2018
Code:
JIS-2-040-GK-s
Faculty of:
Physics and Applied Computer Science
Study level:
Second-cycle studies
Specialty:
Grafika komputerowa i przetwarzanie obrazów
Field of study:
Applied Computer Science
Semester:
0
Profile of education:
Academic (A)
Lecture language:
English
Course homepage:
 
Responsible teacher:
dr inż. Gach Grzegorz (grzegorz.gach@motorolasolutions.com)
Academic teachers:
dr inż. Gach Grzegorz (grzegorz.gach@motorolasolutions.com)
Module summary

This course provides knowledge and skills needed for effective use of the most popular software design
patterns. The theory is complemented by hands-on experience in laboratory and project exercises.

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Social competence
M_K001 At the end of the course, students express their opinions about fellow students work in constructive manner. IS2A_U19 Participation in a discussion,
Involvement in teamwork
M_K002 At the end of the course, students organise team work and share duties efficiently. IS2A_K02 Project
Skills
M_U001 At the end of the course, students can implement standard design patterns. IS2A_U11 Project,
Execution of laboratory classes,
Examination
M_U002 At the end of the course, students can choose optimal design pattern to solve a problem. IS2A_U14 Project,
Execution of laboratory classes,
Examination
M_U003 At the end of the course, students can present software projects and clearly express their ideas and motivations. IS2A_U09 Presentation,
Participation in a discussion
Knowledge
M_W001 At the end of the course, students know the standard design patterns implementations, typical use-cases, advantages and disadvantages. IS2A_W03 Presentation,
Participation in a discussion,
Examination
M_W002 At the end of the course, students know design patterns nomenclature and jargon. IS2A_W03 Presentation,
Participation in a discussion
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Social competence
M_K001 At the end of the course, students express their opinions about fellow students work in constructive manner. - - - + + + - - - - -
M_K002 At the end of the course, students organise team work and share duties efficiently. - - - + - - - - - - -
Skills
M_U001 At the end of the course, students can implement standard design patterns. - - + + - - - - - - -
M_U002 At the end of the course, students can choose optimal design pattern to solve a problem. - - + + + - - - - - -
M_U003 At the end of the course, students can present software projects and clearly express their ideas and motivations. - - - - - + - - - - -
Knowledge
M_W001 At the end of the course, students know the standard design patterns implementations, typical use-cases, advantages and disadvantages. + - - - + + - - - - -
M_W002 At the end of the course, students know design patterns nomenclature and jargon. + - - - + + - - - - -
Module content
Lectures:

In the lectures common design patterns are presented. Their implementations and use-cases are described. The following patterns are considered:

  • Creational

    • builder
    • abstract factory
    • factory method
    • prototype
    • singleton

  • Structural

    • adapter

    • decorator

    • facade

    • composite

    • bridge

    • proxy

    • flyweight

  • Behavioral

    • interpreter

    • iterator

    • chain of responsibility

    • mediator

    • template method

    • observer

    • visitor

    • memento

    • command

    • state

    • strategy

At the end of the course knowledge gained by students is verified with practical exam.

Laboratory classes:

In the laboratory classes students consolidate knowledge acquired in lectures and conversation seminars by solving problems. The students have a chance to test their understanding of new material in teacher or peer-reviewed assignments, which boost experience exchange and encourage critical evaluation of the code. The laboratory classes are graded pass or fail.

Project classes:

In project classes students work on software projects in groups of 3. Each team designs, develops, tests and documents the code. This puts the usefulness of design patterns into real world tests. The patterns strengths and weaknesses are highlighted by teamwork. The project evaluation includes assessment of objectives accomplishment, design and code quality as well as documentation.

Conversation seminar:

In the first conversation seminar the importance of code and design quality is discussed. In the following sessions use-cases and problems are discussed. The solutions using design patterns are proposed and analysed by students providing them with insight into design patterns application. Additionally, making choice of the best design for a given problem is trained raising the awareness of strengths and weaknesses of the chosen design. The conversation seminar is graded pass or fail based on the attendance and contributions to discussions.

Seminar classes:

In seminar classes students present their own and review the fellow students projects. Each group of 3 students presents and motivates decisions taken during project development and analyse their consequences. The project presentation is followed by an open discussion. The grade is based on project presentation and contribution to discussion.

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 125 h
Module ECTS credits 5 ECTS
Participation in lectures 6 h
Participation in conversation seminars 6 h
Participation in laboratory classes 12 h
Participation in project classes 15 h
Participation in seminar classes 6 h
Examination or Final test 5 h
Preparation for classes 40 h
Completion of a project 30 h
Preparation of a report, presentation, written work, etc. 5 h
Additional information
Method of calculating the final grade:

A positive grade can be awarded only to a student who passed (was awarded positive grade) all forms
of classes: exam, laboratory and project exercises, seminar, conversation seminar.
The base for the final grade is calculated as a weighted mean of fraction of points awarded for exam,
project exercises and seminar:
final grade base= 0.5*exam + 0.3*project + 0.2*seminar
The final grade is calculated according to the official grading scale.

Prerequisites and additional requirements:

Knowledge of C++ programming language.

Recommended literature and teaching resources:
  1. “Design Patterns: Elements of Reusable Object-Oriented Software” by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Scientific publications of module course instructors related to the topic of the module:

None

Additional information:

Any absence must be justified in writing latest on the first classes on which student is present. Unjustified absence from any classes except lectures results in failing the classes.

In case of absence from:

  • laboratory classes students have to complete an extra task assigned by the lecturer.
  • seminar where students are presenting their project an extra term will be scheduled before the exam period (if the talk is not given before exam period grade from the seminar classes is failed)
  • lectures or conversation seminars student must learn the discussed subjects on his/her own
  • project classes student must do the appropriate work on the project on his/her own