The “Advanced C++ and Modern Design“ Online Certificate is a joint project by the Baruch MFE program, Dr. Daniel Duffy and QuantNet. The content was developed by best-selling author Dr. Daniel Duffy and the course is delivered entirely online by QuantNet.
Audience: We have developed this course for experienced software developers who wish to experience the full power of C++ for application development, specifically for those developers who are in one of the following categories:
– have intermediate or advanced C++98 knowledge and who wish to learn C++11/C++14/C++20
– have completed the Baruch MFE C++ Programming for Financial Engineering Online Certificate
– experienced C++ developers who wish to learn and apply design techniques in a multi-paradigm programming environment
- C++11 Fundamentals: we introduce some of the most important and far-reaching functionality that C++11 offers, in particular the multi-paradigm approach to modeling functions. We also introduce functionality that improves the robustness and efficiency of C++ code.Lambda functions’ essential functionality, comparing lambda functions with function objects, improving classes in C++11 (avoiding generation of special functions, move semantics, explicit constructors, no except), variadic’ fundamentals and polymorphic behavior, universal function wrappers and C++11 Bind, function wrappers with Inheritance and Composition, Tuples A-Z, sealed classes, other class improvements (alias template, explicit override).
- Advanced C++11 and C++14: we introduce advanced syntax and functionality in C++11 and C++14. The main focus is on functionality that promotes the reliability and robustness of C++ code.Introduction to type traits and Template Metaprogramming (TMP), advanced type traits (for example, creating type-independent code), advanced lambda programming (for example, init captures and functional programming in C++), smart pointers in Boost and C++11, IEEE 754 and C++ Floating Point Classification, platform-dependent and platform-independent error codes and error conditions, STL Bitset, Boost dynamic Bitset and mini-applications, STL Function Objects and Lambdas, Variadic Template Programming, Multiparadigm Programming in C++.
- C++ Libraries: we discuss how C++ supports multi-threading, concurrency, parallel, and network programming.Essentials of Boost and C++11 threading, advanced C++ Concurrency, C++ Tasks and tasking applications, new data structures and data types in C++11, STL algorithms in a multi-paradigm programming environment, random numbers and statistical distributions,network programming (TCP/UDP) and Boost Asio library (C++17).
- Boost C++ Libraries: we give a thorough overview of the Boost C++ libraries in order to acquaint the student with their potential and functionality.Boost Libraries Overview, String Algorithm Library, Regular expressions and Regex, Hash and Unordered, bitmap, heap, matrix libraries (Boost uBLAS), signals and slots (Boost signals2).
- System and Design Patterns: we discuss the popular design and system patterns that are based on the object-orient model. We concentrate on approximately 20% of the patterns that account for 80% of the effectiveness in software development. We also show how to create next-generation patterns using the multiparadigm programming models that C++11 supports.Class and Component diagrams in UML, Whole-Part pattern, Object-Oriented Metrics,creational patterns, structural patterns, behavioral Patterns, next Generation Design Patterns, examples and applications.
- C++ Applications: we present a defined process (based on a combination of Structured Analysis, System patterns and C++11) to architecting, design and implementation of complex software systems.Locating and bounding the Software System, System Decomposition, Presentation Abstraction Control model, Policy-Based Design (PBD) in C++, example and applications, principles of Parallel Programming and Libraries.
Full access to Level 1 materials is available without enrollment in the certificate.
Format: The C++ online certificate consists of 8 levels, each with video lectures, reading materials, programming homework, and quiz. Each student is assigned a personal TA (alumni of the Baruch MFE Program). A dedicated forum is available to discuss homework problems.
Time Frame: The course must be completed within 20 weeks from the enrollment date.
Certification: Upon successful completion of the course, the Baruch MFE program will issue a Certificate of Completion to students who pass the final exam and obtain a 70% or higher average. A Certificate of Completion with Distinction will be awarded to students with 90% or higher average.
Daniel Duffy is an internationally known trainer, writer and software designer. He is founder of Datasim Education and has been involved with C++ since 1988 as developer, designer and trainer. Clients are companies in all areas of software development over the world, including investment banks, hedge funds and MFE students at several universities. He has written ten books on software design, C++ and their application to computational finance. Daniel Duffy has a PhD in numerical analysis from Trinity College (University of Dublin).
- How is the final exam conducted?
The final exam will be an optional coding project, chosen from a list of relevant topics relevant to the students area of interest.
- What is the refund policy?
Full tuition refund is granted upon request within 14 days of the tuition payment being received. No refund is provided after that.
- What certifications do students receive upon successfully completing the course?
The Baruch MFE program will issue a Certificate of Completion to students who pass the final exam and obtain a 70% or higher average. A Certificate of Completion with Distinction will be awarded to students with 90% or higher average.
- What is the best way to study for the course?
To best benefit from the learning format of the C++ Programming Certificate, it is suggested that you study the material in the following sequence:
- Watch the recorded video clips
- Read the accompanying materials
- Run the sample code
- Ask questions in the forum which can be answered by your TA or other students
- Complete the programming assignments. Ask questions if needed
- Pass the quiz at the end of the level
- Repeat for the next level