Wednesday, June 08, 2005

Feedback on Coursework


Generally a good set of work, with the following spread of marks:
A - 2
B - 4
C - 1
D - 1
F - 2 (one of these only completed 2.5 of the 4 tasks
None submissions - 2

Task One: Designing with Patterns was either done well (by the majority) or very badly (but only by a couple of people) - marks ranged from 3/25 to 23/25. The main problems people encountered were:
(i) trying to show that Template Method involved more than polymorphism eg it is concerned with setting up an order of events (or operations invoked) in an abstract superclass method with the subclasses being forced to follow the order but over-riding discrete pieces of code (or operations);
(ii) two or three people missed out exercise 3 on visitor

Task Two: Coding with Patterns - most marks in the middle of the range, similar problems to Task One coupled with some students struggling with writing code.

Task Three: Patterns and Software Development - first part discussing ways of using the patterns to improve students' own work generally well done, in the second half asking for an outline of what should be in the "Clickable Symbols" pattern students split into two camps - those who answered the question and outlined a draft pattern and those who talked generally about what a clickable symbol might be and how it might be used.

Task Four: Critiquing Patterns - marks were all between 13/25 and 18/25. This reflected reasonable attempts to discuss patterns but a strong tendancy to ignore doing it in the context of the quote.

Task Five: Patterns Blog - only 5 students attempted this and achieved marks ranging between 17/25 and 24/25. I marked this fairly generously as the marking scheme was vague, but the best blog deserved the mark it achieved with both reflective and technical content.

PAFSD Student Blogs


PAFSD Student Pattern Blogs:

http://almahri3.blogspot.com/
http://tafou.blogspot.com/
http://peterjonzhu.blogspot.com/
http://nanouchman.blogspot.com/
http://addy84.multiply.com/journal

Websites identified as useful by the PAFSD students on their blogs:

Vince Hughes Design Patterns web page:
http://home.earthlink.net/~huston2/dp/patterns.html
Data and Object Factory Developer Training - particular emphasis on C#:
http://www.dofactory.com/
PatternShare Community - contains amongst other things a catalogue of patterns:
http://patternshare.org/default.aspx/Home.HomePage
Online version of "The Design Patterns Java Companion" by James W. Cooper:
http://www.patterndepot.com/put/8/JavaPatterns.htm
GoF class diagrams templates from Pekka Nikander:
http://www.tml.hut.fi/~pnr/Tik-76.278/gof/html/
phpPatterns from Harry Fuecks :
http://www.phppatterns.com/index.php/intro
Wikipedia entries:
http://en.wikipedia.org/wiki/Design_pattern_(computer_science)
http://en.wikipedia.org/wiki/Christopher_Alexander
Visual Fox Pro patterns site:
http://fox.wikis.com/wc.dll?Wiki~CategoryDesignPatterns
Martijn van Welie's patterns in Interaction Design:
http://www.welie.com/index.html

Monday, May 09, 2005

Missing weeks ...


Having written a long blog last time, I have overcompensated and failed to write for a couple of weeks. More worryingly no one seems to have noticed - no comments on the previous posts, no irate emails from the students who have missed classes: perhaps they have all been busy with finishing their projects.

So what have I missed talking about? Well writing patterns and patterns for change. Management patterns never happened for two reasons (i) the book I discovered before the unit began on management patterns turned out to be more or less proto-patterns and while very interesting would not have helped much as a good example of patterns and their use (ii) I missed last week's class as well as the students because of a family emergency (4 year old with climbing temperature and what turned out to be a massive ear infection).

So what about writing patterns? Well amongst other things we looked at sections of Richard Gabriel's book "Writers' Workshops and the Work of Making Things". This covers how writers' workshops are run both for patterns and poetry. Everyone then had a go at writing a pattern on a topic they were familiar with and we used a draft pattern of mine to run a pattern writers' workshop.

The following week we looked at patterns for change using Linda Rising and Mary Lynn Manns book " Fearless Change: patterns for introducing new ideas". We then looked at a real life case-study where change was occuring and considered which patterns would help.

Monday, April 11, 2005

Where am I?


Instead of teaching PAFSD this week I'm at the SPA2005 conference in St Neots and you are all hopefully using the time to get ahead in your coursework.

I've been to 3 session today: Architectural Failures, Lightning Writing Workshop and Creativity the Path to Innovative Requirements.

Architectural Failures was a short session run by Michael Platt, a Microsoft Architectural Evangelist and a member of the CSSE/ISCA Industrial Advisory Group. Mike talked about a number of projects he has seen where the architecture had proved problematic and discussed why this had occured and how it could have been avoided. One or two others also outlined projects they had been involved with where the architecture had failed. In small groups we then listed on post-its architectural problems we seen and tried to draw out why the problems had occured. These were then combined into a shared list which Mike will put on his blog at:
http://blogs.technet.com/michael_platt/default.aspx

The list of failures seen as the result of architectural failure included: non-delivery, inadequate system response times/performance, unreliability, problems with maintainability, organic or creeping death, ungraceful degradation/failing confusingly (sometimes symptoms seem to be network problems).

The causes of architectural failure included: over-engineering (e.g. including all possible future situations), not understanding the problem domain, naive design, many-to-many relationships not being resolved into one-to-many relationships, badly captured requirements and/or boundary conditions, coupling, lack of the right tool for the job, lack of encapsulation, poor adaptability.

Overall the session went well with good input from the participants, Mike was pleased as he doesn't usually do these sessions interactively and I was relieved as his shepherd that it went well. The only drawback seemed to be that it could have been longer and Mike couldn't follow up with a BoF session as he had to leave soon afterwards to fly to Edinburgh for a Technet Roadshow.

The second session I went to was Laurent Bossavit's Lightning Writing Workshop. This looked at techniques to help with writing - the participants included published authors, writing authors, academics, a composer, someone struggling with writing a dissertaion and people wanting to improve their techical writing. We shared ideas and feelings on writing, Laurent got us to write continuously for 10 minutes (even if we just wrote 'I don't know what to write') and then reflect on the process. He then had us write continuously for 5 minutes either a dialogue or a letter and discuss and differences in how the experience felt. Finally he has suggested some reading and given us a list of writing tips. His Blog at: http://bossavit.com/thoughts/ looks like it would be a good read and I think he intends putting something on about writing.

This afternoon's session Creativity, the Path to Innovative Requirements was based on Suzanne Robertson's experience of running creativity workshops for a number of companies. She introduced us to a range of techniques and had us try them out in groups - our task being to find ways of having a personal plane. Firstly we had to brainstorm constraints, then look for solutions. To help us think of solutions Suzanne introduced an analogy - bicyle couriers. Rob Day played an excellent courier with a bicycle which included a cloaking device to make it look old and unstealable, a trusty (rusty) toolbox on the back, dubious looking parcels and a very memorable uniform. We then used the information from the bicycle courier to help us look for ways of improving our personal plane problems. More details from http://www.systemsguild.com/

Friday, April 08, 2005

Lectures 5 and 6


Lecture 5 (just before Easter) looked at the Decorator, Iterator, Composite and Command patterns.

Lecture 6 (just after Easter) looked at a number of pattern catalogues both in book format and on the web. Details of many of these are on the unit web page either in the booklist section or in the Week 6 section.

A number of students have decided to do blogs as part of their portfolio and asked for examples of other student blogs. These are the ones I've managed to find:

Blog from Simon Walton a student on the EELIP MSc unit - it includes links to other students' blogs.

A tour of how Warwick Blogs work and a link to their blog directory - this includes personal blogs as well as unit related blogs.

I'm currently reading "The Design of Everyday Things" by Donald A. Norman published by Basic Books in 2002, ISBN 0465067107. This talks about how to design usability into (physical) objects in such a way that they are of high quality and just right for use - a concept very similar to Alexander's requirement for "QWAN" in and through patterns. Norman also has an interesting discussion of 'affordances' ie what it is something does best eg a chair has the affordance of being sat on but could also be used for standing on (for which it doesn't offer an affordance). This links well to the idea of using software to do the things it is best at ie offers affordances in.

Thursday, March 10, 2005

Lecture 4


The first part of the lecture was spent handing out and discussing the coursework. This is a portfolio giving a choice of 5 short pieces of work of which students submit 4 pieces.

The second part of the lecture looked at the Visitor, Factory Method and Abstract Factory patterns.

Friday, March 04, 2005

Lecture 3


For the first part of this week's lecture the students split into 2 groups. One group considered the questions relating to Christopher Alexander and Patterns and the other group looked at Patterns and Software.

For the second part of the lecture we looked at 3 patterns: Facade, Strategy and Adapter.

The coursework is now with the moderator and on track for handing out at the next lecture. Assuming the moderator is happy there will be a choice of doing 4 out of 5 tasks - a mixture of coding, design, pattern writing and essays with the opportunity to create a blog if anyone wants to.

Tuesday, February 22, 2005

Second Lecture


3 more students joined the class - all with java experience - but one or two of last week's students seem to have gone missing. Caught the new students up with the unit during the break in the middle and asked them to contact me if when reading through the material it didn't make sense.

This week we looked at the Memento and Template Method patterns, we then did some work how to use a pattern catalogue (see link below) based around Alexander's pattern catalogue - this meant taking all the copies of Alexander's book out of the library and I must make sure I return them in the next day or two so the students can reference them.

I've asked them to do some reading for next week when (in addition to looking at more software patterns) I will ask them to discuss what they have read. The reading material is:

Patterns: A Way to Reuse Expertise by Linda Rising

“Pattern Languages” pp 45-55 in “Patterns of Software” by R.P.Gabriel, 1996 OUP

The Quality Without a Name” pp 33-43 and "The Bead Game, Rugs and Beauty" pp 71-95  in “Patterns of Software” by R.P.Gabriel, 1996 OUP

Gabriel's book is also available on his website at: http://www.dreamsongs.com/NewFiles/PatternsOfSoftware.pdf

The rest of Gabriel's website Dreamsongs is also worth a look - lots of stuff about the art of writing software (check out the list at the bottom of his home page as well as the Essays link) plus some of his poetry - he has a Masters degree in Poetry as well as a PhD in Computer Science.

Tuesday, February 15, 2005

First Lecture


Turn out for the first lecture was low - about 6 students missing who are on the class list.

We covered unit admin stuff (topics to be covered, assessment, booklist) and covered the introductory lecture on patterns (see the link below). The unit admin stuff took longer than anticipated so the exercise on using a pattern catalogue will wait until next week.

All the students have UML experience and are comfortable in programming in either Java or C++. Also all are from CSSE split roughly evenly between Computing, Computer Science and Software Engineering.

We talked about the assessment: everyone seemed to prefer some choice in the assessment eg do 5 out of 6 things rather than do 5 out of 5 things. Little enthusiasm for working in pairs but no one objected to the possibility.

Over the next week I've asked everyone to investigate some of the unit web page links on patterns.