-   Forums
     -   Articles and Whitepapers
     -   Downloads
     -   Courses and Events
     -   Course Registration
     -   Distance learning
     -   Courses for Universities
     -   Books
     -   Audios and Demos
     -   Testimonials

Share this page:  Tweet


Distance Learning - C++ and its Application in Finance - (code DL-SCPP)

Distance Learning C++ for Universities and Banking


Overview of Distance Learning Course “C++ and its Application in Finance”

This is one of the few distance learning C++ courses that takes you all the way from basic C++ through to object-oriented programming and creating applications in combination with the Standard Template Library (STL) and boost library. The course consists of six dedicated modules each of which dealing with one particular aspect of the language.

Your trainer  and course coordinator is Dr. Daniel J. Duffy who has 20 years experience of C++ application development, design and training of professionals. He is the author of several books on C++ with applications to financial engineering and computational finance.

This course is suitable for those who wish to learn C++ step-by-step and applying it to the creation of small and medium-size applications in finance. The emphasis is on a rigorous approach to learning C++ so that you do not miss any important language issues that help your code to be efficient, robust and extendible.

Detailed Course Contents

Module I: C Fundamentals

The main goal of this module of the course is to introduce a number of fundamental concepts and methods relating to programming languages, compiler and the underlying hardware on which we develop C++ software. This is a topic that receives little attention in general and we include it here because knowing how a compiler works and how a software program is created will ensure that you become more productive and waste less time because you will have learned what is needed in order to get up to speed as soon as possible. The focus is on topics that are of direct relevance to creating, testing and debugging C++ programs.
After having completed this module, you will have learned to appreciate the structure of a C++ program and its relationship with compilers and underlying hardware platform.
  1. How the C++ Compiler works
  2. Source files and header files
  3. Types and type conversions
  4. Statements and functions
  5. Preprocessing directives

Module II: Thinking in Objects and Classes

In this module we give an introduction to Object-Oriented Programming (OOP) and its applications to C++. In other words, we discuss the most important modelling techniques, their applications, why they are important and how to implement them in C++. We also introduce the Generic Programming (GP) paradigm, how it complements OOP and how to apply it in C++ using the template mechanism. We give numerous examples and guidelines from real-life projects and we can document the code using the UML de-facto visualization and modelling technique.
After having completed this module you will understand the most important object-oriented modelling and design techniques as a front-end to C++ programming. In other words, the objective is to be able to design a problem first before we start programming a solution.
  1. Objects and Classes
  2. Class member data and member functions
  3. Inheritance and Generalisation/Specialisation
  4. Class association and aggregation
  5. Abstract classes and interfaces
  6. An introduction to generic programming
  7. UML (Unified Modeling Language)

Module III: Object-Oriented Programming in C++

The goal of this module is to gain hands-on programming experience in creating C++ classes and code. We focus on fundamental (and appropriate) application of C++ syntax to help us create robust and efficient code. In this module we apply the 20-80 rule; 20% of the C++ syntax accounts for 80% of developer productivity. In particular, we discuss creating C++ classes and their members as well as a thorough treatment of stack, heap and static memory.
After having completed this module you will understand the most important C++ syntax in order to create stable code upon which you can build in later modules: get it working, then get it right.
  1. Objects and Classes in C++
  2. Implementing class members
  3. Arguments, data and return types
  4. Function and operator overloading
  5. Call by value, call by reference: const
  6. Memory management in C++

Module IV: Inheritance and Polymorphism

This module discusses how to implement the object-oriented principles from Module II in C++, with particular emphasis on how to realise inheritance, aggregation and composition relationships in C++. In this way we ensure that out C++ code is a good representation of the corresponding UML. We also pay attention to ensuring that the code is reliable by discussing memory management and object lifetime as well as dealing with run-time exceptions and errors.
After having completed this module you will have a good appreciation of advanced C++ syntax to help you code robust applications and which use powerful object-oriented principles that promote code reusability and extendibility.
  1. Polymorphic and non-polymorphism inheritance
  2. Base class pointers: combining inheritance and aggregation
  3. Abstract and concrete classes: class hierarchies
  4. Exception handling in C++
  5. Run-time type identification (RTTI)

Module V: Template Programming, STL and boost

This module discusses how to implement the Generic Programming (GP) model in C++. Template programming in C++ has received relatively less attention in the past when compared with the OOP model. We show how to create templated C++ classes and functions as well as showing how to achieve high levels of genericity using template inheritance and composition. We also discuss major data structures and algorithms in the Standard Template Library (STL) and we give an overview of some important libraries in boost (especially for memory management, statistics, matrix algebra and data structures).
After having completed this module you will have gained hands-on experience in the creation of template classes on the one hand and using STL and boost libraries on the other hand.
  1. The template mechanism in C++: Overview
  2. Template classes and template functions
  3. Inheritance and aggregation: partial specialization
  4. Nested templates, multiple template parameters
  5. An Introduction to Standard Template Library (STL)
  6. Overview of the boost library

Module VI: Applications in Finance

The goal of this – the final – module of the course is to use the C++ syntax and modelling techniques of the first five modules and apply then to the creation of tractable applications in finance. We discuss several kinds of applications that are common in this field: one-factor European and American option pricing using Monte Carlo and PDE/FDM methods, creating and using numerical libraries (for example, boost) and optimization.
After having completed this module you will have learned how to create small and medium-sized applications in C++. This is a good basis for more advanced applications.
  1. The applicability of C++ in Computational Finance
  2. The Monte Carlo method
    - Extending the one-factor Monte Carlo framework
    - Barriers, CEV model
    - Heston model
  3. PDE and Finite Difference Method (FDM)
    - One-factor C++ framework
    - Crank-Nicolson, Euler and ADE methods
    - Early exercise
  4. Numerical libraries
    - Solving matrix systems
    - Nonlinear equations
    - Interpolation
  5. Lattice Model
    - The binomial and trinomial methods
    - Lattices for European options
    - Two-factor binomial method
  6. Interest Rate Modelling
    - Affine models
    - Vasicek, CIR and Hull-White
    - Term-structure consistent models
    - Finite difference method for interest rate models

Module VII: Student Project (Optional)

  1. Formulating and designing the problem
  2. Implementation using OOP and GP
  3. Using STL and boost libraries
  4. Accuracy, performance and resource testing
  5. Conclusions and evaluation (leading to a certificate)
An example of a possible project can be found here.

 

What Resources do you get in the Package?

The package contains the following resources:

Form of the Course: The Learning Process

The optimal way to learn C++ is our opinion is by executing the following steps. This discussion pertains to studying and learning the contents of a single module:
  1. Listen to the audio show and use the printed PowerPoint slides as printed backup
  2. Read the relevant material in the provided book(s)
  3. Do the exercises; compile and run the programs
  4. If you are having problems, go back to one of more of steps 1, 2, 3
  5. If step 4 has been unsuccessful then post your problem on the Datasim forum
  6. Go to next module

International Scientific Advisory Board (SAB)

The SAB consists of a number of experts from academia, banking and industry who monitor the quality and content and who provide feedback from students and others who have taken the courses and who propose new topics and courses to suit market needs.

Currently the SAB consists of the following members:
  • Dr. Jörg Kienitz, Head of Quantitative Analysis, Deutsche Postbank AG
  • Dr. William J. Brouwer, Senior Physicist, Stone Ridge Technology
  • Dr. Nick Webber, Warwick Business School, UK
  • Dr. Christian Homescu, Front Office Quant for Commodities, Wells Fargo

Prerequisites

No previous knowledge of C++ (or C) is assumed. We build the course from the ground up. To this end, Module I deals with all the issues that are important for success in C++.
Ideally, you should be studying finance as the later examples in the course are finance-related.

Examinations and Certification

The choice is left to the students whether they wish to do the student project and/or the certification process. Successful completion of a project based on the steps in module VII lead to a certificate issued by Datasim under the auspices of the international advisory board. If you do not wish to do the project but do wish to be certified, a 30-minute telephone test can be arranged.
Of course, you can do both the project and telephone test to increase the value of your certificate. The project and telephone test are both included in the price.

An example of a possible project can be found here.

Having a certification that you have done the course is a proof that you have a good grasp of C++ and should be a helpful addition to your resume/CV. You can safely say that you have a good knowledge of C++ and that you have applied it to a number of problems in computational finance.
Also you may mention us as reference when searching for a job.

Here you will find an example how the certificate could look like.

Duration of the Course

Under normal circumstances you could be able to complete the course in one year (or at most 1 year and 6 months). In general each module takes between a month and six weeks with some weeks to get ready for the next module. Of course, if you wish to do the course faster then no problem!
You can start at any time.

Pricing and Registration Information

This course is meant for two main groups: first, full-time students at accredited universities and places of learning and second those professionals working in finance, industry and business.

The prices are:
  • Full-time students outside the European Union: Euro 799
  • Full-time students inside the European Union: Euro 950,81 (including VAT)
  • For those working in finance/industry: Euro 1599 excluding VAT.

For private persons/students inside the EU we need to calculate 19% VAT. Companies inside the EU need to provide a VAT number, else VAT will be calculated too. For companies and private persons situated outside the EU, no VAT will be charged.

Payment is by means of (electronic) bank transfer. We do not accept checks or credit-cards.
Because of the special student price, students must supply evidence that shows you are a full-time student and will need to supply a university email address in order to login to the audio shows and forums.

You can register by clicking the registration link in the course planning list below ("Duration, price, date, locations and registration" section). This will bring up the registration form which you need to fill in. After submitting the registration form, you will receive a reservation e-mail. You will need to print the reservation e-mail, sign it and send it back to us. This because we need a signature.

Contact

For more information, please e-mail or call at: +31-20-6240055.

News and Upcoming Events

Future plans:
  • Short summer schools
  • Alumni association

Discussion Forum

General discussions about C++/C# programming and finance can be found on our forum.

Terms and Conditions

Distance learning courses are strictly personal.
Click here for more information about the terms and conditions.

Duration, price, date, locations and registration

Course duration: Distance learning.
You study in your own pace. Under normal circumstances, this should take you between 1 and 1.5 years to complete.
Dates and location: (click on dates to print registration form)


Date(s) Location Price Language
Any time Distance Learning See below English

Click here to register.


Attention
This course is meant for two main groups: first, full-time students at accredited universities and places of learning and second those professionals working in finance, industry and business.

The prices are:
  • Full-time students outside the European Union: Euro 799 (excluding VAT)
  • Full-time students inside the European Union: Euro 966,79 (including 21% VAT)
  • For those working in finance/industry: Euro 1599 excluding VAT.

For private persons/students inside the EU we need to calculate 21% VAT. Companies inside the EU need to provide a VAT number, else VAT will be calculated too. For companies and private persons situated outside the EU, no VAT will be charged.

Payment is by means of (electronic) bank transfer. We do not accept checks or credit-cards.
Because of the special student price, students must supply evidence that shows you are a full-time student and will need to supply a university email address in order to login to the audio shows and forums.


Share this page:  Tweet