Training

Obect Oriented Programming & Design Patterns Training Courses

Full Width Page Type Image

Elevate the effectiveness of your entire programming team - Andy can deliver his existing or a customised Design Patterns Course to your entire programming team - at your company’s premises or via Zoom.

I have delivered training courses across Australia incl. at The Australian Synchrotron.

Consulting and Mentoring is also available. Contact Andy for availability.

Course 1: Design Patterns

Code:         IM500-020
Series:       Computer Professional
Duration:   2-3 days
Location:   Onsite (your location within Australia (or ask))
Cost:          $ Email for pricing for up to 6 people - per day.  $220 per extra person - max 10 people.  Plus GST.
Room:      Trainer requires a whiteboard, projector. Computers for attendees are not needed. 

Course materials:  Are supplied (approx 320 pages) - option for client to print and bind if that is more convenient.  Contains code examples, whiteboard screenshots, tips, UML diagrams, advanced discussions etc.

The front cover of the comprehensive training materials supplied during this course.

 Sample pages from the course manual.

### Overview

This course provides students with the necessary knowledge and skills required to understand and use the fundamental 23 design patterns as outlined in the classic book “Design Patterns”.  Participants will be able to use the vocabulary of patterns to communicate to software engineers in order to design superior, maintainable, cutting edge software.

Outline

Course Outline

A brief history of design patterns - the patterns movement, how the GOF book was created, why a knowledge of design patterns is crucial to today’s software developers. Where did patterns come from, what is the role of Christopher Alexander. Who are the key patterns people around the world. How has Australia been involved in the world patterns conference scene.

Detailed presentations of 20 design patterns: including: state, strategy, adapter, mediator, template method, bridge, factory + more. 

  • State Pattern” can get rid of lots of if/else spaghetti code

  • Strategy Pattern” can make your application more pluggable. 

  • Adapter” is one of the most important fundamental patterns. 

  • Mediator Pattern” can reduce coupling between classes and reduce complexity.

  • Understanding the “Template Method Pattern” requires that you know your object oriented principles and can make your code base more organized. 

  • Bridge Pattern” is a little complex but once you have invested in it, allows you to switch implementations with a single switch. 

  • The factory patterns (“Factory Method” and “Abstract Factory”) are core patterns relating to the creation of instances of your classes. 

Many more patterns like this are presented during this course.  Also covered are topics like:

  • How patterns are used together – most people are surprised when shown how patterns can be combined.  We will look at the notion of “roles” in classes and look at diagramming techniques for showing overlapping patterns in UML diagrams.
  • Design Pattern Software - A presentation of a couple of UML design patterns tools for windows including Sparx Enterprise Architect and IBM Rationale Rose.
  • Discussion - Current research directions and the future of patterns (both theoretical and tools).  Classic and cutting edge books and ideas are discussed (time permitting).

Outcome and Benefits

After completing this course, students will know how to:

  • Describe the history of patterns development.
  • Appreciate the benefits of a patterns approach to programming design.
  • Describe the detailed design, purpose and behaviour of 20 of the original GOF design patterns.
  • Communicate with other developers using the language of patterns.
  • Use design patterns to improve the design of new and existing software.
  • Implement various patterns in various programming languages.
  • Combine different patterns so that they work together in a software design
  • Understand some of the design patterns contained in such frameworks as.NET and Java
  • Choose from a variety of UML tools which automate the application of patterns

Prerequisites:

Attendees should have:

  • An Understanding of object oriented programming techniques
  • Experience with an object-oriented programming language such as Python, Java or C#
  • Some exposure to UML diagramming models.

The 2 day course can only cover 2/3rds of the total material in this sheet.  As such only approximately 12 patterns can be covered, and some topics like architectural patterns, UML automation tools etc cannot be covered.  However attendees can to some extent customize the course content within the time constraints. 

The 3rd day of the course can be delivered at a later stage as a one day “top up” course.

Detail

Course Detail

Introduction to Patterns

  • What are Patterns?

  • Pattern Purposes

  • The GOF patterns

  • Pattern classifications

  • The Use of UML

  • Relationships between patterns

  • When to use patterns & when not to

Patterns: General Issues

  • Reading a pattern

  • Intent, applicability, forces of patterns

  • Solutions & Consequences

  • Implementation issues - language specific

  • Anti-patterns

  • Re-factoring of patterns

Creational Patterns

Abstract Factory

Builder

Factory Method

Prototype

Singleton

Structural Patterns

Adapter

Bridge

Composite

Decorator

Facade

Flyweight

Proxy

Null Object

Behavioral Patterns

Chain of Responsibility

Command

Interpreter

Iterator

Mediator

Memento

Observer

State

Strategy

Template Method

Visitor

Architectural Patterns

Layers

Blackboard

Reactor

Model-View-Controller

Patterns in Frameworks

Java

.NET

Advanced

Blending Patterns

Automating patterns – UML tools and IDE’s

The future of patterns

Note: Some of the advanced patterns and topics, above, are subject to time constraints and may not be covered in full.  Courses can be customised to ensure you learn about the area you want.


Full Width Page Type Image

Course 2: Object Oriented Programming and Design

Code:         IM500-021
Series:       Computer Professional
Duration:   2 days
Location:   Onsite (your location within Australia (or ask))
Cost:          $ Email for pricing for up to 6 people - per day.  $220 per extra person - max 10 people.  Plus GST.
Room:      Trainer requires a whiteboard, projector. Computers for attendees are not needed. 

Introduction to OO, UML and Design Patterns Course

This course is designed to be a gentler introduction to Design Patterns.

Course materials:  Are supplied (approx 120 pages) - option for client to print and bind if that is more convenient.  Contains code examples, whiteboard screenshots, tips, UML diagrams, advanced discussions etc.

Day 1:

  • Introduction to Object Oriented programming
  • Transitioning from other languages
  • Classes, Objects, Methods, Attributes, Properties
  • What are Interfaces and why use them
  • Poly-what? - What is Polymorphism
  • Dynamic vs. Static - why have types
  • OO language features in Java / C# / Python / Flex (your choice)
  • What good Object Oriented systems look like
  • Traps of OO - fragile hierachies - the trend towards composition not inheritance
  • Dependency Injection
  • Basics of modelling in UML
  • UML notation
  • How to use UML in day to day design
  • Overview of modelling tools (Visual Studio, Enterprise Architect)
  • A brief history of design patterns - the patterns movement, how the GOF book was created
  • Why a knowledge of design patterns is crucial to today’s software developers.

Day 2:

  • Detailed presentations of 6-7 design patterns: including: state, strategy, adapter, mediator, template method, bridge, factory.
  • “State Pattern” can get rid of lots of if/else spaghetti code.
  • “Strategy Pattern” can make your application more pluggable.
  • “Adapter” is one of the most important fundamental patterns.
  • “Mediator Pattern” can reduce coupling between classes and reduce complexity.
  • “Template Method Pattern” requires that you know your object oriented principles and can make your code base more organized.
  • “Bridge Pattern” is a little complex but once you have invested in it, allows you to switch implementations with a single switch.
  • The factory patterns (“Factory Method” and “Abstract Factory”) are core patterns.
  • How patterns are used together
  • UML extensions used to document patterns

About the Trainer:

Andy Bulka - Trainer

Andy Bulka has been teaching design patterns for five years, running three day workshops covering all the 23 GOF patterns.

He is an active member of Melbourne Patterns User Group giving regular presentations and talks. Andy was Local Conference Chair at the Australian Koala Plop Patterns Conference 2002, and is author of several papers on Design Patterns and Software development ? see his patterns and blog at www.andypatterns.com

Andy Bulka is principal consultant at Wware Consulting. Prior to that, he was Technical Director and Chief Software Architect at Austhink Software www.austhink.com for four years (2004-2008), developing world class visualisation software in C# .NET and Flex 3 using agile methodologies, design patterms and 25 years of programming experience. Prior to that, Andy has developed software in many fields - consistently applying design patterns to numerous real world applications including windows desktop applications, web sites and even a commercial computer game.

2004-2008: Trainer in Design Patterns ? running 3 day workshops covering all 23 GOF patterns. The course has been given over seven times in both Melbourne and Perth. Several jobs have been repeat courses for the same company (delivered to a different set of students).

2000-present: Active member of Melbourne Patterns User Group giving regular presentations and talks. http://melbournepatterns.org/

2002: Local Conference Chair, Koala Plop Patterns Conference, Melbourne Australia.
www.mcs.vuw.ac.nz/~kplop/aboutus.html

1999-2008: Maintain website on research into software development: www.andypatterns.com

Refereed Papers

Bulka, A. (2003). Design Pattern Automation. In Proc. Pattern Languages of Programs 2002. Revised papers from the Third Asia-Pacific Conference on Pattern Languages of Programs, (KoalaPLoP 2002), Melbourne, Australia. Conferences in Research and Practice in Information Technology, 13. Noble, J., Ed. ACS. 1.
http://crpit.com/Vol13.html

2000-2002: Three patterns conference papers which have been presented at KoalaPlop (Asian Pacific Conference on Pattern Languages of Programs) in both 2000 and 2001. My shepherds were Jim Coplien (MGM pattern), Ali Arsanjani (TI pattern) and James Noble (RM pattern). These final versions incorporate comments and reviews from the attendees of KoalaPlop 2000 and 2001.
http://www.andypatterns.com/index.php/design_patterns

van Gelder, T. J., & Bulka, A. (2000) Reason!: Improving informal reasoning skills. in Proceedings of the Australian Computers in Education Conference, Melbourne July 2000.
View

2008: Visualizing Argument Structure using Hi-Trees. Tim van Gelder, Kim Marriott (Monash University), Peter Sbarski (Monash University), Dr. Daniel Prager, Andy Bulka. Proceedings of the 4th International Symposium on Visual Computing, Las Vegas, United States.
View

Major Software Developed

Rationale, bCisive, Hive - World class argument visualisation software suite, www.austhink.com Architect and CTO.

Reason!Able - Reasoning software in use in schools around the world, Programmer.

PyNSource - Python code reverse engineering utility and UML modelling tool, Programmer.

Architect, Team Leader, Lead Programmer, Hunting Tank Software, Victoria (2001 - 2004). Combat Campaign Game.

Research Logo - Developed the educational programming environment “Logo” for the Australian Microbee computer - used by Australian schools. Lead programmer of a team of three. Wrote the manual/book Research logo : A logo programming environment, ISBN 0949309435 published by?Waitara, N.S.W. : Honeysoft Publishing Company, 1985.? Now held at The National Library of Australia.

1991-1998 - Multimedia Toolbook programmer, developing many entertaining and effective training and educational CD titles for businesses around Australia, including

  • Telstra
  • BHP
  • TAFE
  • Unisys
  • Telstra Learning
  • Multimedia Asia Pacific
  • Bookman Press
  • Empire Ridge
  • etc.

Contact

Courses can be customised to suit your needs.

Andy Bulka
Design Patterns Training and Consulting ABN 75 565 207 060
Web: http://abulka.github.io Email: abulka@gmail.com
Phone: 0412 759 186


Addendum:

If you would like me to run a design patterns course or consult on your next software design, please check out my product page.  There is also an open source Python UML tool you might be interested in, plus references to products I have developed over the years esp. the worldclass argumentation visualisation software Rationale and bCisive.