Program:

Part 1 : Technology overviews (includes practical usage where applicable) - 2 hours

Part 2 : Introduction to Qt - cross platform toolkit - 2 hours

Part 3 : Speed Code Fest (putting approaches described in part 1 into practice) - 3 hours

Note: We will use Qt/c++ for all practical work.

-------

Part 1:

- Overview of the open source development process and typical tool set
- Version Control Systems (using subversion)
- Online collaboration (IRC - can the lab access IRC?)
- Wikis
- Mailing lists (commit notifications / user / dev)
- Patching and diffing
- CMake (cross platform makefile generator)
- Test driven development (unit testing)
- Software release cycle
- Software metrics (e.g. ohloh.com)
- Agreed coding practices (coding conventions)

Part 2:

- What is Qt
- Hello World (console only)
- Hello World (gui)
- Hello World (designer)
- signals and slots
- Widget tour
- Modules tour (networking / xml / svg etc)

Part 3:

We will develop a simple image gallery

- group will be separated into teams:
library team
ui team
test team

- each team should select a leader who will take instructions back to their teams and provide feedback on team progress.

- blitz 1: agree on a simple standard api e.g.

void setCurrentDir (QString theDir)
QString currentDir()
QStringList imageFilesInDir()
QImage getImage(QString theImageFileName)
More advanced if we have time:
Create an image metadata object and add to api so we can display some info about images

Coding sessions:

- Session 1 : With api agreed, we will begin where all teams will do initial implementation. Remember its a code sprint so for round 1, lib team should return only hard coded values, test team should write test skeletons, and gui team should produce first ui mockup. During of the session, each team should commit their work to svn as they go.

- Session 2 : Lib team remove hard coding for returns (commit and update as you go).
Test team, add tests for edge cases (e.g. set to invalid dir)
Gui team, refine ui and update and test as lib gets implemented

- Session 3 : Free form hack fest. Each team decide on a new feature to add, liase with other teams and implement.

----

End of workshop feedback and discussion.