Training
Obect Oriented Programming & Design Patterns Training Courses
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
|
Patterns: General Issues
|
|
Creational PatternsAbstract Factory Builder Factory Method Prototype Singleton |
Structural PatternsAdapter Bridge Composite Decorator Facade Flyweight Proxy Null Object |
Behavioral PatternsChain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor |
Architectural PatternsLayers Blackboard Reactor Model-View-Controller |
Patterns in FrameworksJava .NET |
AdvancedBlending 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.
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 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.
Patterns Related Positions
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.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.