30
DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Design Patterns in the course ‘OOP in Java’ Java’ - first experiences - first experiences Ana Madevska Bogdanova Ana Madevska Bogdanova Institute of informatics Institute of informatics Faculty of Natural Sciences and Mathematics Faculty of Natural Sciences and Mathematics Skopje, Macedonia Skopje, Macedonia

DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

Embed Size (px)

Citation preview

Page 1: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project “Joint Course on OOP using Java”

Design Patterns in the course ‘OOP in Java’ Design Patterns in the course ‘OOP in Java’

- first experiences- first experiences

Ana Madevska BogdanovaAna Madevska Bogdanova

Institute of informaticsInstitute of informaticsFaculty of Natural Sciences and MathematicsFaculty of Natural Sciences and Mathematics

Skopje, MacedoniaSkopje, Macedonia

Page 2: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 2

AgendaAgenda

The motivation The need of introducing design patterns in

the first year of studies Incorporation of the design patterns in the

concepts of the existing OOP course Expected results

Page 3: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 3

The motivationThe motivation(last year)(last year)

We had a problem with the course Data Structures and Algorithms (DSA) - third semester• in the same course

- First learn Java- Then data structures in Java

The reality (till last year):

• The first two courses in the first year - I. Structured programming (C++)- II. Object oriented and visual programming (C++)

• The second course, OOP- Encaptulation- Inheritance- Polymorphism- Solving problems = coding when given OO Design - scheme

Page 4: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 4

The solution of the problemThe solution of the problem

Last semester • We introduced Java in the course ‘Object oriented

and visual programming‘• It is THE first OOP course• It is the second semester

Page 5: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 5

AgendaAgenda

The motivationThe need of introducing design

patterns in the first year of studies Incorporation in the concepts of the existing

OOP course Expected results

Page 6: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 6

Another existing problem…Another existing problem…

Thinking in the design pattern level Introduced in the course of software

engineering in the 5th semester• Software design and architecture

In the first two programming courses the students mind is focused only on technical clarity in developing the OO system

Page 7: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 7

Introducing design patterns in the first Introducing design patterns in the first semestersemester

What if we introduce DP in the FIRST semester?

Last year’s idea:• In the OO programming course we can introduce

some problems and discuss them with the students

• How to create OO model – to go through the process of OO modeling

• To broaden their point of view for the proper programming

• To be ready to learn more design patterns in the latter courses

Page 8: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 8

The realization of the ideaThe realization of the idea

NOW:1. the existing course in OO programming is

shifted towards Java.2. The general plan of the course stayed the

same- Encapsulation- Polymorphism- Inheritance

• With a CHANGE: we replaced some topics of the previous ‘OOP with C++’ course with the introduction of the

… DESIGN PATTERNS!

Page 9: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 9

What did we change with the course?What did we change with the course?

First: Learn about- Encapsulation- Polymorphism- Inheritance

The introduction of Design Patterns• The students were presented a problem and

asked to BUILD the OO model

Page 10: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 10

AgendaAgenda

The motivation The need of introducing design patterns in

the first year of studies Incorporation of the concepts in the existing

OOP course Expected results

Page 11: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 11

Some factsSome facts

The design pattern part was incorporated in the last 5 classes of the course.

By that time students had the opportunity to experience the OO programming • Programming in NetBins environment

Page 12: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 12

The levels of the OOP with Java - courseThe levels of the OOP with Java - course

1. OO basics• encapsultion, polymorphism, inheritance,• also: interfaces, downcasting, exceptions

2. OO principles 3. Introducing the OO design patterns

• 1. Strategy- Defines a family of algorithms, encapsulates each

one, and makes them interchangable- let the algorithm vary independently from clients

that use it

Page 13: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 13

How we did that?How we did that?

So, after the common Java beginners course• Introduction of the DESIGN PATTERNS

The idea is to learn ONE design pattern Starting from scratch Choosing interesting problem

• Discuss with the students every step of developing the model by putting different subproblems as new requirements for the model

• The model must develop with the new requirements

Page 14: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 14

1. The Strategy pattern1. The Strategy pattern

Along the way the students will understand the main OO principles - why to develop the software in that particular way1. Encapsulate what varies2. Program to interfaces, not implementation3. Favor composition over inheritance

Page 15: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 15

Simple problemSimple problem

We chosed a simple problem To explain the students that the only thing

that we can be certain about - is the change in every software development

No matter how well one designs an appliication, it must grow and develop over time

So, the design pattern we worked with was about flexibility in the OO model

Page 16: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 16

Have we succeeded?Have we succeeded?

On every step of the presentation, students were asked a question – how to proceed.

Usually there were 2-3 ideas• Additional question leaded to the correct answer• The class had a good dynamics, everybody

understood the ‘story’ and the line of the problem’s solution.

Page 17: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 17

Was there a lot of new material?Was there a lot of new material?

Almost everything that was needed for the introduction of this Pattern Design was already incorporated into the course• Classes with inheritance• Interfaces

- within the inheritance model The new part:

• The need of building classes of behavior that are different for the subclasses from the Problem hierarchy

• New hierarchy of behavioral classes - In the subclasses is the different behavior

• Introduction of variables in the Problem hierarchy classes that will connect with the classes from the Behavior hierarchy

ONLY the last part was a technique that wasn’t covered in the previous material from the course

Page 18: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 18

AgendaAgenda

• The motivation

The need of introducing design patterns in the first year of studies

Incorporation of the concepts in the existing OOP course

Expected results

Page 19: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 19

FactsFacts

Till last year C++ This year Java Different students The number of measured results (from the

Java’s exams) is not statistically significant.

Page 20: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 20

Two ways of measuring the resultsTwo ways of measuring the results

1. Too few data at the presenter’s disposal• Students results

- 2008, 2009 with C++- 2010 with Java, still not finished with the exams- No statistical significance in comparing the results from

different generations

The first year students• 2 Groups of 80 students

2. Using a questionnaire• How did everybody like the introduction to the design

patterns?• The ultimate answer will be answered after the next

course “Software design and architecture” – in their 5-th semester – next year

Page 21: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 21

The questionsThe questions

1. What is the level of difficulty of the course content?

1(easy) to 5 (very hard)

2. Do you need more previous knowledge to be able to understand this part of the course?

3. Was it difficult to learn about a pattern design?

4. Was it revealing to go further, not only to learn the OOP technique?

Page 22: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 22

The questionsThe questions

1. What is the level of difficulty of the course content?

1(easy) to 5 (very hard)

5 15%4 34% 3 42%2 9 %1 -2. Do you need more previous knowledge to be able

to understand DP part of the course?YES 33%NO 67%

Page 23: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 23

3. Was it difficult to learn about a pattern design?

YES 66%NO 34%

4. Was it revealing to go further, not only to learn the OOP technique?

YES 100%NO 0%

Page 24: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 24

In other wordsIn other words

100 % - found to be interesting to talk about the problem and the DP

85% - could understand the problem and to follow the line of the solution

15% - understood the complete DP we worked through • Including the new elements that weren’t covered

in the previous sections of the OOP course • The same percentage of students that

understand ANY new concept when it is introduced for the first time

Page 25: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 25

About the understanding part…About the understanding part…

Students were asked this questions immediately after the finishing of the DP part of the course

Bigger percentage of correct answers on the exam• After they have studied the problem on their

own

Page 26: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 26

Expected results of introducing JAVA and Expected results of introducing JAVA and design patterns in JAVAdesign patterns in JAVA

As mentioned in the motivation part• Students to embrace the higher level of

producing OO modeling early - in their first OO course

• They will be ready to learn more OO design patterns in the latter courses

• Ready to develop OO models on their own in the different courses in the latter semesters.

Page 27: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 27

Expected results of introducing JAVA and Expected results of introducing JAVA and design patterns in JAVAdesign patterns in JAVA

Learning JAVA in this course will make ‘Data Structures and Algorithms’ course more comprehendible in the third semester

- Students wouldn't have to learn the basics of JAVA, they will use it for simulating data structures covered with the course

Next semester (starting this month)• we will see if the students are ready to start to

program data structures immediately within the course DSA

Page 28: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 28

ConclusionsConclusions

1. Too few data at the presenter’s disposal to see if this approach (Java & Design Pattern) is success

- No statistical significance in comparing the results from past generations

2. EASY transition from C++ to Java 3. The questionnaire has showed that introducing the DP has

broaden students mind 4. Through right example with the leading from the teacher

students are able to• Understand the problem• To see the limitations of the ‘obvious’ solution• To suggest change in the current solution• To clarify the right way by discussion and ‘clever’ questions from

the teacher• Understand the whole process of thinking to come to the right

solution• Hopefully to recognize this pattern in other problems and to use

this pattern as a solution at hand

Page 29: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 29

Yet to see if …Yet to see if …

… the next course DSA (the following semester) will be easier to comprehend

… OOP will be easier understood with• Java

or

• C++

… the SE course where more design patterns are thought will be easier to be understand • Easier to learn more of Design Patterns

Page 30: DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics

DAAD project „Joint Course on OOP using Java“ © 30

Thank you!

? ?