Transform the theory into practice –
Software Design and Architecture for Computer Science Students
Nevena Ackovska/Magdalena KostoskaFaculty of Computer Science and Engineering (FCSE)
UKIM, Skopje, Macedonia
11th DAAD Workshop on “Software Engineering Education and Reverse Engineering” , Ohrid, Macedonia 22th August – 27th August 2011
The team Lets start with history… Structure and topics Survey and results
Overview
The team Lets start with history… Structure and topics Survey and results
Overview
SDA – Software Design and Architecture
Nevena Ackovska◦ Lectures
Magdalena Kostoska◦ Theory and practice exercises
Panche Ribarski◦ Stepped in - help with practice exercises (lots of
students!!!)
The team of SDA undergraduate in Skopje
The team Lets start with history… Structure and topics Survey and results
Overview
The course become part of the syllabus in 2008
Our first experience with the course - 2009
So how do you start? – Learn from others’ experience
History – the beggings…
Requirements
• Description in the syllabus
Design
• Research & experience
Implementation
• One semester
Verification
• Surveys and statistics
History – lets work…
History – first results…
2009 2010 20110
10
20
30
40
50
60
70
54
6368
Num. students
Num. students
The team Lets start with history… Structure and topics Survey and results
Overview
Week type 2+1+2◦ 2 classes lectures◦ 1 class theoretical exercises (examples)◦ 2 classes practical exercises (in lab)
In 2009/10: classes scattered during week
In 2011: one course – one day
The structure of the course
Introduction to software architecture, design and patterns
Design patterns ◦ Factory, Prototype, Composite, Adapter,
Decorator, Observer, Template Method, Strategy and finally MVC
Refactoring and refactoring patterns◦ Introduction to refactoring and many refactoring
patterns More about SA modularity, cohesion and
examples of specific software architecture
Topics
Big hit since 2009
Big hit for working students
Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. Addison-Wesley, 1995
Head First Design Patterns, O'Reilly, Freeman and Freeman, 2004
Software Design 2nd edition, Pearson, David Budgen, 2003
Refactoring: Improving the Design of Existing Code by M. Fowler, K. Beck, J. Brant, W. Opdyke, D. Roberts. Addison-Wesley, 2001
Literature
Lectures: theoretical introduction into the given topic + examples of most common application topic
Exercises: wider examples, application specifics, problem space
Laboratory exercises: student are given real-life problems to recognize and evaluate the preconditions of pattern usage; refactoring bad smells etc..
This enables the students to turn their theoretical knowledge into real-life codes!!!
Lectures/Exercises
Exams (theory + practice) – 60%◦ Theory exam – 30%◦ Practical exam – 30%
Homework – 20%
Project – 20 %
Grading
Java based
Design and Patterns usage: ◦ for each of the patterns a specific task is given◦ the task is connected to everyday problems
Refactoring: ◦ a certain projects in java are given and the task is to
refactor the project◦ The may include student final projects or real-project
code (but partially, due to privacy and ownership of company code)
Practical tasks
The team Lets start with history… Structure and topics Survey and results
Overview
At the end of the semester a survey was conducted
32 participants
10 questions
1 text field – comments, suggestions and critiques
Survey in 2011…
Survey in 2011 - Results
Theory exercises are tightly cou-pled with lab
exercises
The course is well or-ganized
totally agreepartially agreepartially disagreedisagreeno opinion
Would you choose similarly structured software course, if offered, in future?
yesprobably yes, if I have unused elective courseno, I’m interested only in hardware courses no, because I don’t like how the course is organized No opinion
Survey in 2011 - Results
Lecture material corresponds with ex-ercises
totally agreepartially agreecoulbe be better coordinatedno opinion
Survey in 2011 - Results
Survey in 2011 - Results
The lab exercises or-ganization contributes to course completion
totally agreepartially agreepartially disagreedisagreeno opinion
The lab exercises help in getting more software
practical knowl-edge
Most of the comments were satisfactory◦ This shows the we are on a good course◦ Maybe introduce more patterns
Suggestions:◦ More examples of patterns usage◦ More time spending on patterns◦ Some of the students found the homework and
practical exam related to patters too demanding◦ More classes of lab exercises per week◦ More rigorous lab exercises
Survey in 2011- Results
Keep up with the trend: Every year - more students
Even some of the older students (that were not able to enroll this course) choose diploma thesis in this course◦ Due to the requirements they get from work
This prepares students for ADP
Expectations
Accept and apply the student suggestions
Review the course materials, change the material distribution (as every year)
Maybe: reverse engineering (new idea)
The future
So far, so good
The students should be prepared to work◦ Homework◦ Exercises◦ Projects
Challenge motivates
Conclusions
Questions?