Sunday, August 27, 2006

sex on a glacier

artichoke has the ability to pen hilarious metaphor.

Ever heard an education minister talk in grandiose terms about:
"the potential of e-learning to transform ..."
"exploiting technologies effectively ..."
"connecting schools and communities ..."
"supporting evidence based decision making ..."
"developing a prosperous and confident knowledge society ..."
"development of new skills and knowledge ..."
"a culture of continuous enquiry, innovation and improvement, risk taking and entrepreneurship
"radical vision ..."
"leadership ..."
I love artichokes ability to take the mickey out of these wank words, as follows:

I agree with Steve, this a radical vision, so radical a revelation that it borders on hallucination - it reminds me of Grandpa’s claims of escaping the secure facility for moments of reckless adventure with one of the dementia center nursing staff on the Franz Joseph glacier. [I am always thankful that grandpa’s loosely attached dentures mean that the detail of his dementia glacial narrative escapes the ear jacking surveillance of center staff].

The “Enabling the 21st Century Learner” quote reminds me of grandpa’s incredulous tales because both claims make me feel the same paradoxical sense of malignant innocence and promiscuous sensuality. I know intellectually that both qualify as madness and shameless self/ it industry promotion, but I cannot help being enticed into thinking that both sex on a glacier and e learning developing a culture of continuous enquiry, innovation and improvement, risk taking, and entrepreneurship would be uncomfortable but remarkable experiences.

For the rest of my life, whenever I hear noble,high flying rhetoric from someone who has long left the classroom it will make me think of: sex on a glacier.

Not impossible, but ...

Saturday, August 19, 2006

the culture of fear, apathy and play safe

How are we going to beat the culture of fear created by the media and pandered to by gutless politicians / ED officials, which plays on the fears of parents who just want their kids to be safe?

Extract from a great article by dana boyd, growing up in a culture of fear: from Columbine to banning of MySpace:
"We need to break this culture of fear in order to have a healthy society. Please, please... whenever you interact with youth culture (whether you're a parent, a schoolteacher or a cafe owner), learn from them. Hear them from their perspectives and stop trying to project your own fears onto them. Allow them to flourish by giving them the freedom to make sense of their identity and culture. It doesn't mean that there aren't risks - there are. But they are not as grandiose as the press makes them out to be. And besides, youth need to do stupid things in order to learn from their own mistakes. Never get caught up in the "i told you so" commentary that comes after that "when i was your age" bullshit. People don't learn this way - they learn by putting their hand in the fire and realizing it really is hot and then stepping back.

Post-Columbine, we decided to regulate the symptoms of alienation rather than solve the problem. Today, we are trying to regulate youth efforts to have agency and public space. Both are products of a culture of fear and completely miss the point. We need to figure out how to support youth culture, exploration and efforts to make sense of the social world. The more we try to bottle it into a cookie-cutter model, the more we will destroy that generation."
Recently I posted a message, Every parent wants to protect their children, to the IT teachers lists in SA, Vic, NSW, oz-teachers and TALO, which is public.

There were a couple of negative responses on the SA list, where it was suggested that I was promoting a conspiracy theory (which I am not), and one positive response on the NSW list. I was underwhelmed and don't see much point in continuing to post messages raising these broader issues when the response is either muted or negative. Maybe I am being gutless here myself, I'm not sure. Maybe, the era of lists is over and the thinkers have moved over to blogs and wikis.

I haven't found anything else linking the DOPA (Delete Online Predators Act) specifics to the general trend by reactionaries to attempt to destroy internet / www functionality - by preparing the children to accept censorship we train them to accept censorship and internalise their own lack of freedom as adults. Do we have a current generation of self censored adult teachers? Is that the problem? Am I being too harsh in suggesting that or is it more that teachers are too busy and / or just don't know what to do? I feel that we are approaching a situation where something has to give. I'm thinking that we need a political solution to develop, something like the new pirate party in Sweden, perhaps, but with a broader agenda that extends to censorship in Schools and the denial of the rights of the child to explore new technologies.

Earlier I posted about the threat to net neutrality to the same lists. There were no responses at all to that. It's hard to believe. The people that invented the internet (Cerf) and the web (Berners-Lee) are ringing alarm bells and teachers don't want to know about it. No discussion whatsoever.

Is there a culture of apathy and play safe that parallels the culture of fear that Dana speaks so eloquently about? I'm starting to think that way.

The DOPA issue on it's own has received wide coverage, however, in the edu-blogs (eg. leigh , graham , wil , doug )

Teachers already using blogs are naturally concerned when they are blocked or threatened. But it seems that teachers who are not yet using blogs are not concerned at the erosion of freedom in cyberspace.

Nice quote from artichoke at leigh's blog:
"Of all tyrannies, a tyranny exercised for the good of its victims may be the most oppressive. It may be better to live under robber barons than under omnipotent moral busybodies. The robber baron's cruelty may sometimes sleep, his cupidity may at some point be satiated; but those who torment us for our own good will torment us without end, for they do so with the approval of their own conscience." C S Lewis
Good quote from Wil's site:
"... DOPA does nothing to strengthen penalties orincrease prosecution of criminals who prey on children. Instead, it punishes the potential victims and educational institutions chartered to serve them, by denying access to interactive sites at school and libraries"
Of course, we already have DOPA implemented in South Australia and it stinks.

understanding the internet

Graphic from

The internet is a network of networks

The internet has a packet switched architecture. Data is broken up into small packets, which are addressed and sent through the network. The same connection can be used by many users. This contrasts with circuit switching, such as the regular voice telephone network, in which the communication circuit (path) for the call is set up and dedicated to the participants in that call (and is unavailable to other users). Reference

The internet has protocols (TCP/IP) - rules encoded in software that enable communication between different types of computers (PCs, Macs) and to manage the delivery of the packets to their destination .

TCP/IP was invented by Vint Cerf and Bob Kahn:
  • IP which provided only for addressing and forwarding of individual packets
  • TCP, which was concerned with service features such as flow control and recovery from lost packets
The internet provides many services such as email, ftp, www, P2P, chat, IM, Telnet, Gopher (see diagram). Anyone with enough skill can create these services which then benefit all internet users. No one has to ask permission from anyone to create a new internet service. This is one underlying reason for the popularity of the internet.

In his blog on the 2nd May 2006, Tim Berners-Lee said:
When, seventeen years ago, I designed the Web, I did not have to ask anyone's permission. ( I did have to ask for port 80 for HTTP). The new application rolled out over the existing Internet without modifying it. I tried then, and many people still work very hard still, to make the Web technology, in turn, a universal, neutral, platform. It must not discriminate against particular hardware, software, underlying network, language, culture, disability, or against particular types of data.
The CERN website compares the internet with the global road system:
On the Internet, as in the road system, three elements are essential: the physical connections (roads and cables), the common behaviour (circulation rules and Internet protocol) and the services (mail delivery and the WWW).
I think I will use the roads metaphor in explaining the internet to my students.

I summarised one of David Weinberger's metaphors for the www as follows:
Imagine a place with billions of rooms with magic doors that are psychically linked to other rooms by the interests of the people travelling from room to room. Your nearness to other rooms is created by your level of interest. Is that magic or is that the Web?
Internet literacy:
The netforbeginners site has a series of tutorials on basic internet literacy. I'm interested in pursuing this further from the point of view of the aims of Paul Chandler's wiki about conceptual understandings of computing and also also for instructing new arrivals in internet basics.

Historical / Footnotes:
The internet was invented by the US military arising from their fear of a Soviet nuclear first strike.
Paul Baran, of the RAND Corporation (a government agency), was commissioned by the U.S. Air Force to do a study on how it could maintain its command and control over its missiles and bombers, after a nuclear attack. This was to be a military research network that could survive a nuclear strike, decentralized so that if any locations (cities) in the U.S. were attacked, the military could still have control of nuclear arms for a counter-attack.

Baran's finished document described several ways to accomplish this. His final proposal was a packet switched network.

"Packet switching is the breaking down of data into datagrams or packets that are labeled to indicate the origin and the destination of the information and the forwarding of these packets from one computer to another computer until the information arrives at its final destination computer. This was crucial to the realization of a computer network. If packets are lost at any given point, the message can be resent by the originator."
Warriors of the Net (the Movie). Entertaining movie which helps newcombers visualise how the Net works
A Brief History of the Internet by some of the people who made it (Kahn, Cerf, etc.)
History of the Internet The information about US fear of a Soviet nuclear strike driving the invention of the internet was taken from here
stupid, not owned and a huge success where I explain that: "Two factors account for the huge success of the internet: nobody owns it and it’s a stupid, simple network, all it does is move bits."
CERN: The Web and the Internet (where I got the roads metaphor from)
space and time on the web summary of Small Pieces Loosley Joined, a book about our experience of the web by David Weinberger
Are the internet and the www the same thing?
1. internet consists of subnetworks (see pic at start)
2. the www is one of the subnetworks
3. Each of the subnetworks requires a different protocol: HTTP, SMPT (email), FTP, IRC etc.
4. Each subnetwork requires special software (eg. www requires browser software)

Friday, August 18, 2006

You should learn to program

Why you should learn to program is Chapter 1 of an online book by Chris Crawford (a game developer).

This is one of a whole series of well thought our writings by Chris Crawford, here is his Library page - on Politics, Global Warming, What do Women Want?, Artists and Technologists, Statistics that misrepresent the popularity of games, The Education of a Computer Game Designer. I disagree with some of his views, but clearly Chris Crawford is a thinker.

Most of these essays are valuable for clear thinking about the role of computer games in society.

Crawford provides two bad reasons and three good reasons for learning to program. He gives much more detail than my very brief summary below:

1) You won't miss out on doing interesting things with computers if you can't program
2) Don't learn it for the money

1) Recreation, a fun hobby
2) It will teach you the importance of clear communication
3) It will make you a better thinker. It's a new language that will take you to new places. Different sorts of places than where a language like English will take you. This last one is his main reason.

migration to south australia statistics

The picture shows members of the Dinka tribe (Christian Africans in the South of Sudan) who were massacred by government forces in a 21 year civil war. Wikipedia is a good source of information about the Dinkas. Many of the Sudanese refugees to Australia are Dinkas. They are noted for their height.

Selected extracts from a report I read recently about the impact of migration trends on ESL provison in South Australia. Part of my job is to teach new arrivals computing skills. (Some of my experiences about this are recorded at Paul Chandler's wiki)

In 2003-04, SA settled 1560 humanitarian entrants, and in 2005-2006, 1380 entrants. Around 55% were under 18 years of age. This represents 12% of all humanitarian entrants to Australia.

The average education experience of all current humanitarian entrants in 2004-05 was around 2.4 years ... 70% are from African countries, predominantly Sudan, but including countries such as Rwanda, Sierra Leone, Liberia, Burundi and Somalia.

The Federal Government is reducing the proportion of African humanitarian entrants from 70% to 55% in 2007-08, with greater intake from countries in Asia and the Middle East.

How long does it take for students with refugee background to learn English?

Various research is quoted here with estimates varying between 3 years for oral proficiency and up to 10 years for academic proficiency.

Since the current group of new arrival have interrupted schooling (spending years in refugee camps in Kenya, for example) then the report summises that 10 years for academic proficiency is the more realistic estimate.

A report on African refugees in Victorian schools found:
  • Lack of awareness of cultural expectations and understandings of 'how to be a student'
  • Lack of topic specific vocabularies
  • Unrealistic expectations of academic and vocational options
  • Lack of first language literacy to support learning
The paper also found challenges for teachers were significant including:
  • Lack of prior experience with such high need students, including feelings of barely coping with the demands
  • Difficulty in finding suitable texts and resources (with students rejecting 'modified' materials)
  • Tense relationships between subject area teachers and those deemed responsible for English provision.

Wednesday, August 16, 2006

ascending from the abstract to the concrete

Borderland has a wonderful story, What the Known Demands, of how things went dramatically wrong for him on a drive to collect firewood in Alaska.

This reminded me of the phrase, "ascending from the abstract to the concrete". The lineage is Marxist. The central idea of Marxist philosophy is contradiction, ceaseless struggle between different aspects of a thing, the underlying ability of things to transform themselves - including into their opposites. This is also known as dialectics. War turns into peace. Education turns into vegetation, etc.

Here are some rough notes about this phrase, which is very much about how to view the world:

Everything is in constant motion or change

All things develop through internal contradictions, aka dialectics

Dialectics is the mutual interpenetration of opposites, that opposites can change into each other, depending on the conditions and their stage of development. This is why everything is in constant motion.

Abstraction means to strip away the superficial or incidental aspects of a thing and to reveal its most important aspects, or essence, aka theory, hypotheses

Abstraction is important and can lead to deeper (beyond surface understanding ) of things

Abstraction can also go wrong. There are different ways to abstract. How do we test whether our abstractions (theories, hypotheses) are right or wrong?

By testing our abstractions in practice, by ascending from the abstract to the concrete.

Related ideas:
Theory and practice form a spiral in which practice is principle
Change is constant, stability is temporary

It's a tremendous irony that Marxism is now mainly thought of in terms of dull grey stagnancy (eg. the failed Soviet State) whereas at its centre is a very dynamic philosophy of change.

Contextualisation for Abstraction
Following Cassirer, it can be argued that abstraction always includes taking a point of view from which the concrete can be seen as meaningfully related, but finding this point of view depends on the contextualisation of one's actions. Therefore abstraction is seen here as a dialectical process, including both the process of going from the concrete to the abstract and the process of ascending from the abstract to the concrete (Davydov). The process of going from the concrete to the abstract (and vice versa) is still not thoroughly understood. On the basis of Billig's theory of arguing and thinking, and Sfard's theory of focussing attention, a new perspective on abstraction is developed...
(would like to check out some of the authors cited here)

Learning by Expanding
Traces 3 generations of Activity Theory ...
The first generation, centered around Vygotsky, created the idea of mediation. This idea was crystallized in Vygotsky's (1978, p. 40) famous triangular model of "a complex, mediated act" which is commonly expressed as the triad of subject, object, and mediating artifact ...

... The insertion of cultural artifacts into human actions was revolutionary in that the basic unit of analysis now overcame the split between the Cartesian individual and the untouchable societal structure ...

... The limitation of the first generation was that the unit of analysis remained individually focused. This was overcome by the second generation, largely inspired by Leont'ev's work. In his famous example of "primeval collective hunt" Leont'ev (1981, p. 210-213) showed how historically evolving division of labor has brought about the crucial differentiation between an individual action and a collective activity ... The concept of activity took the paradigm a major step forward in that it turned the focus on complex interrelations between the individual subject and his or her community ...

The third generation of activity theory needs to develop conceptual tools to understand dialogue, multiple perspectives and voices, and networks of interacting activity systems. In this mode of research, the basic model is expanded to include minimally two interacting activity systems. This move toward networks of activities, while still in an embryonic form ...
The Last Superpower forum contains this philosophy thread which includes an analysis of the "ascending to the concrete" phrase:
"Marx talked of "ascending from the abstract to the concrete" which on the surface can seem rather absurd.

How can a concrete view of reality be superior to a more abstract view? We all know that science takes us beyond the surface appearance of things and proposes deeper explanations that are not immediately apparent. And anyone who has studied child development knows that initially children view the world in a "concrete" way and as they become able to think better they become capable of thinking more abstractly. So isn't abstract thinking more advanced than concrete thinking?

The difficulty arises from confusing the Marxist idea of "the concrete" with the idea that what is concrete is that which is easily and immediately perceived via the sense organs - ie the surface appearance of things. (note: the whole idea of anything being "immediately perceived" is in any case incorrect. Perception always involves some cognitive processing ).

However what Marx meant by "concrete" was not what is meant by the pedagogical distinction between concrete and abstract (or formal) thinking.

Marx's use of the word "concrete" has to do with the notion of truth and is not related to the idea of concrete thinking as child-like and primitive.

To ascend from the abstract to the concrete means to move from the initial ability to abstract away from surface appearance (via everyday and relatively easy generalisations and simple concepts) toward a richer and more accurate view of concrete reality. This does involve abstraction - but it is abstraction that is on its way to a richer and more concrete (truthful) world view."

Center for Activity Theory
This page has thumbnail sketches of the major theorists: Marx, Vygotsky, Leont'ev, Luria, Il'enkov, Cole

Evald Ilyenkov's Philosophy Revisited
outline of the contents of a book

Wednesday, August 09, 2006

the purpose of programming

"What is the Purpose of Programming? I mean, why do you do it and where is it going? Where should it be going?"

This is a brief summary of some of the answers at Ward's wiki:
  • to make money
  • pleasure derived from abstract problem solving
  • turning money into time by automating processes
  • free the human race
  • electronic procreation of neural activity ("immortality")
  • make computers imitate other machines (computer as universal machine)
  • electronic modelling of real things
  • reifying what can be conceived (reifying = convert abstract concept into a thing, materialise)
  • satisfy human ego, "I can command a dumb machine"
  • it's people who have purposes, not tasks
  • solve problems faster
  • automate tedious tasks
  • improve communications
  • create entertainment, eg. games
  • to model a concept (anything) in order to learn more about it

The reason I started to program (in logo) was because I read about recursion in Godel, Escher, Bach and thought the only way to understand it would be to program it.

patterns for a game making course

I think the design patterns developed by Joseph Bergin (Fourteen Pedagogical Patterns, is just one of numerous papers by Bergin) for an object oriented Computer Science course could be adapted to a course in Game Making.
What is a design pattern?
A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in object-oriented systems. It describes the problem, the solution, when to apply the solution, and its consequences. It also gives implementation hints and examples. The solution is a general arrangement of objects and classes that solve the problem. The solution is customized and implemented to solve the problem in a particular context.
Note the richness (detailed elaboration) of a design pattern. They contain a lot of information, both conceptual and practical. I'd see the rich practical structure of design patterns as very useful in generating and guiding discussion. This could be facilitated through a wiki format. I've had a look at some of the design pattern websites and so far the Joseph Bergin papers seem to be the most useful and applicable to a secondary school teaching situation.

Would anyone else be interested in collaborating in a wiki which, starting from the Bergin paper, developed some design patterns for a Game Making course?

Here is my (brief, yet to be documented) argument for going down this path:
  1. Design pattern theory has excellent credentials
  2. Resources are available
  3. It provides a framework (scaffold) for teachers who want more structure in a game making course - and in turn for students completing such a course
  4. It's a step forward from the present ad-hoc approach
  5. Design patterns are accessible and helpful to students, it would not swamp them with irrelevant or inappropriate theory
  6. It could help facilitate a dialogue where alternative design tools could be compared and evaluated (eg. patterns, flowboards, Event Progress Diagrams, UML). What design tools are suitable / optimal / age appropriate for game development?
Here is a simple example (abbreviated from the Bergin Fourteen Pedagogical Patterns paper)
TEST TUBE (also known as: Try It and See)

Students can answer their own "What if ..." programming questions

Problem / Issue: Students often ask questions they could answer for themselves ... they need to learn to be effective in answering their own questions about programs.

Forces: Students can chew up a lot of time asking low level questions and can become frustrated if they don't receive answers quickly

Solution: Provide students with small programs and get them to use the computer to probe for the answers to "What happens if ..."

Special Resources: Student questions can be a good source of these sorts of exercises. The instructor can take a student question and turn it into an exercise.

Example instances:

The meaning of for loops can be explored in a sequence of exercises in which the initialisation, test and increment portions of the loop are varied.

When a while loop exits and when it does not can be explored.

Sunday, August 06, 2006

we don't know what we don't know

This is a first attempt to apply the laws of ignorance to myself. I think this has potential.
Known unknowns: All the things you know you don't know
Unknown unknowns: All the things you don't know you don't know
Errors: All the things you think you know but don't
Unknown knowns: All the things you don't know you know
Taboos: Dangerous, polluting or forbidden knowledge
Denials: All the things too painful to know, so you don't
- from The Domains of Ignorance, thanks to arti for pointer
Amazing logical angst that leads to hilarity when resolved.

This is about a programming problem that arose while working on the latest version (7c) of the Africa Map game. In this game you click a button and some of the countries jump of a map of Africa. Then you select them with the mouse and drag them back to their correct positions.

To help position the countries accurately I've written some code that displays the exact position of the mouse pointer as it moves across the screen

For the small African countries I decided to paint a small white dot in the middle of them. Then I could use that dot to set the origin for the sprite. When the game ran, I could drag the country, by the dot, to the position required and read the required position from the mouse pointer display

However, when I added one of these countries (Burkina Faso) with a dot to the country and name arrays and tested the game, something strange happened

This worked:
  • Burkina Faso was correctly positioned
  • the name of the country, Burkina Faso, appeared
  • the mouse pointer turned into a hand when it passed over Burkina Faso
This didn't work:
  • Burkina Faso wouldn't deselect with left button release, but the other countries did deselect
  • Burkina Faso wouldn't snap to position with left button release, when dragged close to its correct destination
Well, clearly the problem had something to do with left button release. But it didn't really make sense because all the other countries (the ones I did before the white dot experiment) were still working fine. And the new country is coded into exactly the same array as all the others and yet the behaviour on two crucial counts is very different.

What did I try:
  1. Made a list of what was working and what was not working, as recorded above. Good.
  2. Moved the new country to a different position in the array. Maybe I am counting the array incorrectly and being last on the array is the problem (not logical when you think about it, because if the array was the problem then nothing would have worked, not 2 things out of 5 not working)
  3. Adding another new country, with a dot, to the array and testing that. Exactly the same behaviour with the new new country. That test was worthwhile.
  4. Printed out all the code to have a closer look at it. Good.
  5. Through examining the code I determined there were two possible boolean variables that might explain this behaviour. The variable names were used (set to 1 when the countries were off the map and 0 when in their correct positions on the map) and selected (set to 1 when selected with the mouse left button and set to 0 when the button is released)
However, when I looked closely at the code it seemed that logically what was happening could not be happening. Because the following piece of code, contained in a Parent object and which was responsible for snapping the country to position, did not depend on any prior values of either variable, used or selected.
Information about object: objParent
Mouse Event for Left Released:
set variable selected to 0
execute code:

// snap to original position when close
// set used back to 0 when returned to start position
if (distance_to_point(xstart,ystart)<10)
x="xstart;" y="ystart;" used="0;"
It couldn't be that the inheritance from the Parent wasn't working because the mouse pointer changing to a hand was also inherited from the same Parent and that was working. So, I was hopelessly stuck in a logical impossibility.

My feelings at this point were disbelief, frustration and despair. How could this be happening? Cognitive dissonance.

But sometime later (this took a while) it suddenly hit me. The white dot was the same colour as the background colour, which was treated as transparent. I was dragging the object by a transparent hole and when I released the mouse it didn't register that I was releasing the object!!!!!

This led to an amazing emotional release where I staggered around the house laughing, nearly falling on the floor, being so overjoyed at finding the answer to my problem.

So, lets run this past the laws of ignorance.

Known unknowns: All the things you know you don't know. Sure as hell I knew that I didn't know why on earth my countries with dots were behaving so weirdly.
Unknown unknowns: All the things you don't know you don't know. Pass, someone else will have to tell me that.
Errors: All the things you think you know but don't. Well, programming / debugging is good for discovering that, as in this example. I thought I was doing something straightforward but unexpectedly a huge problem arose.
Unknown knowns: All the things you don't know you know. Somewhere deep in the background I knew something about the significance of dragging an object by a transparent hole. But that took a while to come out.
Taboos: Dangerous, polluting or forbidden knowledge. A hole in the middle, that is dangerous, I have found out.
Denials: All the things too painful to know, so you don't. I was pretty sure I was an idiot who couldn't see something that must have been obvious. That was painful but I didn't give up on it. I'll probably never be a highly skilled programmer but I'm still in denial on that one (partly).

Thursday, August 03, 2006

UML Distilled

Notes on UML Distilled Third Edition: A Brief Guide to the Standard Object Modelling Language by Martin Fowler

"Programming languages are not at a high enough level of abstraction to facilitate discussion about design" (1)

"... conceptual perspective ... we are building a vocabulary to talk about a particular domain" (5)

"(there are) three modes in which people use the UML: sketch, blueprint and programming language ... the most common is UML as sketch" (2)

"The essence of sketching is selectivity ... use the sketches to help communicate ideas and alternatives about what you're about to do ... only important issues that you want to run past colleagues or sections of the design that you want to visualze before you begin programming" (2)

"... sketches are explorative, while blueprints are definitive" (3)

"sketchers, see the essence of UML to be the diagrams ... however, (for) the creators ... the essence of UML is the meta-model" (6)

The author favours UML as sketch approach. He believes that blueprints are too difficult to do well and slow down development. WRT UML as programming language ... he's not convinced that graphical forms are more productive than textual forms (6)

UML Diagrams. On page 12 there is a table showing 13 different types of UML diagrams:
  • Class
  • Sequence
  • Object
  • Package
  • Deployment
  • Use case
  • State machine
  • Activity
  • Communication
  • Composite structure
  • Component
  • Interaction overview
  • Timing

They can be divided into Structure diagrams (eg. Class) and Behaviour diagrams (eg. Sequence) (12). He suggests to start out with those two - Class and Sequence diagrams (16).
UML is Not Enough

"... you shouldn't hesitate to use a non-UML diagram if no UML diagram suits your purpose." (15)

"Now that the methods war is over, patterns are where most of the interesting material about analysis and design appears." (17)

Iterative and Waterfall Processes

Both processes use the (four part) software life cycle: requirements analysis, design, coding and testing

Waterfall style: Attempt to finish one part of software life cycle completely before moving onto next part (20)

Critique of waterfall approach: "... it's very difficult to tell whether the project is truly on track with a waterfall process." (21)

Iterative style: Break down the project into subsets of functionality. Then do the complete software life cycle for each part. Each iteration should produce production ready integrated software.

Some think they are doing iterative but they are not (pseudos), eg. "This iteraction's code is very buggy, but we'll clean it up at the end" (21)

Other names for iterative development: incremental, spiral, evolutionary, jacuzzi (21)

Predictive and Adaptive Planning

Prediction is v. hard to achieve due to requirements churn. If you freeze requirements then you run the risk of delivering software that no longer meets the needs of its users. (23)

Adaptive planners "... contends that requirements churn is unavoidable ... predictivity is an illusion ... we should face the reality of constant change and use a planning approach that treats change as constant in a software project" (23)

"You can't say "according to plan" in an adaptive environment , because the plan is always changing" (24)

"An adaptive plan ... requires an iterative process"

Agile Processes

Examples (other names): Extreme Programming XP), Scrum, Feature Driven Development (FDD), Crystal and DSDM (Dynamic Systems Development Method)

Agile approaches are strongly adaptive (dynamic) and also people-oriented (meaning they work best with high quality people)

Most use UML in sketch mode

Agile process are low in ceremony, they minimise documentation and control points. Ceremony makes it harder to make changes and works against the grain of talented people.

"... the lack of ceremony is a consequence of adaptivity and people orientation rather than a fundamental property" (25)

My comment: One implication here is that mediocre programmers may need more ceremony, more structure, more check points, more documentation.

Patterns (27)

Experts document patterns, common design themes, so that those not so expert can learn and apply it

This is Zone of Proximal Development applies to software development (my comment)

Patterns are more useful than methods like UML. Diagrams (UML) are useful but discussing experiences is more useful.

"A pattern is much more than a model. A pattern must also include the reason why it is the way it is. ... a pattern is a solution to a problem. The pattern must identify the problem clearly, explain why it solves the problem, and also explains the circumstances under which the pattern works and doesn't work ... they are the next stage beyond understanding the basics of a language or a modelling technique."

This reinforces what I have been thinking - that patterns are the way to go in teaching programming / Game Making with Game Maker.

What about UML? I'm not sure you really need UML, patterns might be enough? Nevertheless, I like the idea of using UML sketches to discuss programming concepts. I see that as a current problem in my (lack of) programming discussions. We currently discuss programs through chunks of code and file attachments. The contrary view is that UML is a step removed from coding and learner programmers need to learn how to program before they move on and learning to program might take ten years. Jack Reeves says, "code is design", that the way to go is through comments within code.

Fowler supports a dynamic (adaptive, iterative) approach to software development but this still operates within a software development cycle: analysis, design, coding, testing (simpler than the Systems Development Life Cycle). I strongly support the dynamic conception of software development, rather than the top down predictive approaches. This fits my philosophy of how all things develop in the real world, through contradiction and struggle. We shouldn't be demanding extensive documentation from young programmers, it will make things boring and tedious for them.

I intend to write more about patterns

Other references about software design styles:
Jack Reeves, Code as Design
Brian Harvey, Symbolic Programming versus the AP Curriculum
Paul Graham, On LISP
Philip Armour, Five Orders of Ignorance