Advanced C++ for Experts - Design Patterns, STL, C++11/C++14 Training in Rochester
 
                    Enroll in or hire us to teach our Advanced C++ for Experts - Design Patterns, STL, C++11/C++14 class in Rochester,  New York by calling us @303.377.6176.  Like all HSG
                    classes, Advanced C++ for Experts - Design Patterns, STL, C++11/C++14 may be offered either onsite or via instructor led virtual training.  Consider looking at our public training schedule to see if it
                    is scheduled:  Public Training Classes
                    
                
                        Provided there are enough attendees, Advanced C++ for Experts - Design Patterns, STL, C++11/C++14 may be taught at one of our local training facilities.  
                    
                    | 
                	 We offer private customized training for groups of 3 or more attendees.
                 | ||
| Course Description | ||
| This 2-day intensive Advanced C++ class is designed to coach the experienced C++ developer on enterprise system C++ coding and design standards.  Students will be given a review of Polymorphism, Virtual Functions, Function Pointers and Multiple Inheritance.  A solid introduction to Design Patterns follows.  Once we have laid the groundwork, the training nicely dovetails into a thorough introduction to the STL and new topics in C++11/C++14. 
                        Course Length: 2 Days Course Tuition: $1890 (US) | ||
| Prerequisites | |
| Solid understanding of Object Oriented programming with a minimum of 2 years of C++ development experience. | |
| Course Outline | 
| 
	Review 
	Templates 
	Function Templates 
	Class Templates 
	Function Objects 
	Design Pattern Overview 
	Objectives in Software Design/Module Design 
	Overview of Patterns 
	Qualities of a Pattern 
	Pattern Systems 
	Heuristics vs. Patterns 
		Principles of Object-Oriented Design 
		Overview of Principles 
		Single-Responsibility Principle (SRP) 
		Open-Closed Principle (OCP) 
		Tell vs. Ask 
		Command/Query Separation (CQS) 
		Composed Method 
		Combined Method 
		Liskov Substitution Principle (LSP) 
		Dependency Inversion Principle (DIP) 
		Interface Segregation Principle (ISP) 
		Law of Demeter 
		Catalog of GoF Patterns 
		Overview of GoF Patterns 
		Introduction to Creation Patterns 
		Factory Method 
		Abstract Factory 
		Builder 
		Prototype 
		Singleton 
		Introduction to Structural Patterns 
		Adapter 
		Decorator 
		Proxy 
		Facade 
		Composite 
		Flyweight 
		Bridge 
		Summary of Structural Patterns 
		Introduction to Behavioral Patterns 
		Chain of Responsibility 
		Iterator 
		Strategy 
		Template Method 
		Mediator 
		Observer 
		Memento 
		Command 
		State 
		Visitor 
		Interpreter 
		 Other Micro-Architecture and System Patterns 
		Object Pool 
		Worker Thread 
		Dynamic Linkage 
		Cache Management 
		Type Object 
		Extension Object 
		Smart Pointer (C++) 
		Session 
		Transaction 
		Advanced Polymorphism and Inheritance 
		Good Class Design 
		String Class 
		Public Inheritance 
		Public Inheritance Problems 
		Inheritance and Semantics 
		Private Inheritance 
		Composition 
		Composition vs. Private Inheritance 
		Templates vs. Inheritance 
		Protected Inheritance 
		Implementation Encapsulation 
		Interface Inheritance 
		Runtime Type Information 
		Runtime Type and Polymorphism 
		type_info Class 
		typeid Operator 
		Compiler Options 
		Safe Pointer Conversions 
		Dynamic Cast 
		New C++ Style Casts 
		Static Cast 
		Reinterpret Cast 
		Const Cast 
		Inheritance Hierarchies and Multiple Inheritance 
		Class Hierarchy in Smalltalk 
		Smalltalk Class Hierarchy (Simplified) 
		Collection Classers 
		Multiple Inheritance Solution 
		Basic Derivation 
		Ambiguities in Multiple Inheritance 
		Resolving Ambiguity 
		Duplicate Subobjects 
		Virtual Base Classes 
		An Overview of Templates 
		Templates 
		Overloading Functions 
		Template Functions 
		Specializing a Template Function 
		Disambiguation under Specialization 
		Template Classes 
		An Array Template Class 
		Instantiating a Template Class Object 
		Friends of Template Classes 
		Templates with Multiple Type Parameters 
		Non Class-type Parameters for Template Classes 
		Comments Regarding Templates 
		Templates and Inheritance 
		Overview of STL 
		Perspective 
		History and Evolution 
		New Features 
		The Standard Template Library 
		Generic Programming 
		Design Goals 
		Header Files 
		STL Components 
		Containers 
		Algorithms 
		Iterators 
		Compiling STL Code 
		Examples from STL 
		vector 
		Vector.cpp 
		list 
		List.cpp 
		map 
		Map.cpp 
		set 
		Set.cpp 
		multiset 
		Multiset.cpp 
		find 
		FindVector.cpp 
		find list 
		merge 
		Overriding the Default Comparison 
		Iterators 
		Iterators.cpp 
		Functions 
		Functions.cpp 
		Function Objects 
		FunctionObject.cpp 
		STL Containers 
		Vectors 
		Vector.cpp 
		Vector Operations 
		Typedefs 
		Deques 
		deque as Stack 
		deque Functionality 
		Lists 
		Generic Programming 
		Tradeoff with Lists 
		List Memory Allocation 
		list Functionality 
		Associate Containers 
		Sets 
		Sets with User Defined Objects 
		Multisets (Bags) 
		Maps 
		Multimaps 
		STL Iterators 
		Pointers 
		Template Version 
		String Version 
		A Generalization of Pointers 
		STL Iterators 
		Input Iterators 
		Output Iterators 
		Forward Iterators 
		Bidirectional Iterators 
		Random Access Iterators 
		C++11/C++14 Highlights 
		Range-based for-loops 
		RValues and move semantics 
		Initializer lists 
		Variadic Templates 
		Lambda Foundations 
		Generic lambdas 
		Extended capture 
		Lambda Iterator concept 
		Lambda Containers 
		Lambda Functions | 
Course Directory [training on all levels]
Technical Training Courses
                                Software engineer/architect, System Admin ... Welcome!
                            - .NET Classes
- Agile/Scrum Classes
- AI Classes
- Ajax Classes
- Android and iPhone Programming Classes
- Azure Classes
- Blaze Advisor Classes
- C Programming Classes
- C# Programming Classes
- C++ Programming Classes
- Cisco Classes
- Cloud Classes
- CompTIA Classes
- Crystal Reports Classes
- Data Classes
- Design Patterns Classes
- DevOps Classes
- Foundations of Web Design & Web Authoring Classes
- Git, Jira, Wicket, Gradle, Tableau Classes
- IBM Classes
- Java Programming Classes
- JBoss Administration Classes
- JUnit, TDD, CPTC, Web Penetration Classes
- Linux Unix Classes
- Machine Learning Classes
- Microsoft Classes
- Microsoft Development Classes
- Microsoft SQL Server Classes
- Microsoft Team Foundation Server Classes
- Microsoft Windows Server Classes
- Oracle, MySQL, Cassandra, Hadoop Database Classes
- Perl Programming Classes
- Python Programming Classes
- Ruby Programming Classes
- SAS Classes
- Security Classes
- SharePoint Classes
- SOA Classes
- Tcl, Awk, Bash, Shell Classes
- UML Classes
- VMWare Classes
- Web Development Classes
- Web Services Classes
- Weblogic Administration Classes
- XML Classes
Business Training Courses
                                Project Managers, Business Analysts, Paralegals ... Welcome!
                            Upcoming Classes
                    Gain insight and ideas from students with different perspectives and experiences.
                    - Fast Track to Java 17 and OO Development 
 8 December, 2025 - 12 December, 2025
- Python for Scientists 
 8 December, 2025 - 12 December, 2025
- Object-Oriented Programming in C# Rev. 6.1 
 17 November, 2025 - 21 November, 2025
- RED HAT ENTERPRISE LINUX SYSTEMS ADMIN II 
 8 December, 2025 - 11 December, 2025
- Introduction to Spring 6, Spring Boot 3, and Spring REST 
 15 December, 2025 - 19 December, 2025
- See our complete public course listing 
C++ Programming Uses & Stats
C++ Programming is Used For:
	            			Software Development 
	            			Search Engines
	            			Operating Systems
	            			Video Games
	            		| Difficulty | Popularity | Year Created1983 | 
| Pros 
	Popular:  
	C/C++ is everywhere. In particular, they power more technologies than we give it credit for. 
	Flexible: 
	C++ is a multi-paradigm coding language. This means that it supports other styles such as procedural programming as well as Object-Oriented Programming.  
	Fast:  
	Because it is compiled, C++ gains a lot of speed. and is the language of choice for some applications as an example in the finance industry, where small differences in speed in high-frequency trading platforms can make the difference between a profit or a loss. 
	Job Opportunities:  
	C++ developers are high in demand. There are over 14,000 C++ open positions on linkedIn alone.  
	Similarity to Other Languages:  
	Many other languages like C, C#, and Java have very similar syntax to C++, making them easy to learn for those that already know C++. | Cons 
	Difficult to Learn:   
	C++ syntax is complex and the standard library is small, making C++ difficult to learn for someone with little programming experience. Although, it's believed to be more difficult to learn C++ than other languages, more accurately it probably takes a bigger investment of your time and effort to learn than some other languages.  
	Strict Syntax:  
	There is not much flexibility to the syntax, so it can be difficult to write code in a readable way. 
	Little Memory Management: 
	C++ does very little memory management, forcing the programmer to do most of it themselves. 
	Debugging Issues: 
	C++ can be difficult and complex to debug when it is used for web applications.  | 
| C++ Programming Job Market | 
|   Average Salary |   Job Count |   Top Job Locations 
	New York City  | 
| Complimentary Skills to have along with C++ Programming C/C++ are the grandfather of most other languages. Once you understand C syntax and (OOP) Object Oriented Programming, you're well on your way to greener pastures. Since the .NET development ecosystem spans a wide array of capabilities and tools, it is difficult for .NET developers to know which .NET development skills and training to pursue in order to increase their marketability — and earning potential. For that reason, learning supplemental languages such as Java, JavaScript, Python, C/C++, and others is expected in today’s competitive skill-set driven playing field. | 






