Judith Bishop, University of Pretoria, South Africa
Nigel Horspool, University of Victoria, Canada
Attendees should be competent in Java 1.4 and C# 1.0 programming and have some exposure to design patterns. This is a medium level tutorial.
Design patterns are elegant, accepted and proven ways to tackle common programming problems. It has been recognized for over a decade that design patterns are one of the key mechanisms for implementing reliable and maintainable software. This practical tutorial explains how to use the latest features of C# 3.0 to code a selection of the classic Creational, Structural, and Behavioural design patterns. In particular, it examines how advances in language design can narrow the gap for implementing design patterns in terms of readability, writability, maintainability and traceability. These new solutions fully incorporate C# 3.0's modern object-oriented features such as delegates, generics, LINQ and reflection. The challenges that face design pattern implementation, in particular efficiency, are discussed and the promise of reusable design patterns examined. Some attention will also be paid to the choices to be made between different patterns and implementations, using examples drawn from areas as diverse as the latest social networks (Facebook, Flickr, blogs), games, embedded systems and many others. Attendees will come away with a clear idea of the value of using modern object-oriented constructs in design patterns.
About the Presenters
Judith Bishop is a professor of computer science at the University of Pretoria, South Africa, specializing in the application of programming languages to distributed systems and web-based technologies. She is internationally known as an advocate of new technology. Her 15 books on languages such as Pascal, Java and C# have been published in six languages.
Nigel Horspool is a professor of computer science at the University of Victoria, Canada. He researches in programming language implementation in general and compiler technology in particular. He is co-editor of the journal Software: Practice and Experience and author or co-author of three books.