IB9JH-15 Programming for Quantitative Finance
Introductory description
The main objectives of this module are to develop an understanding of the art of object-oriented programming in general, and actual programming skills in C++ in particular.
Module aims
This module is driven by links into, and provides foundation for, the MSFM core structure: the latter (ST908, IB911, MA907, and the new “Financial Statistics” module) determines the set of skills required and provides examples for applications. In turn, this module IB9JH develops and supports the skills required for practical applications of theoretical concepts developed elsewhere in the core. Objectives:
To develop an understanding of the concepts and “way of thinking” of (object-oriented) programming in general, and practical programming ability in a selection of languages in particular.
To provide a framework in which theoretical concepts and methodology developed in the MSFM core can be tested and applied to “real world” problems, thus reinforcing both the theoretical concepts as well as practical programming skills.
To develop a set of transferrable skills required/desired by employers in the Quantitative Finance industry, enhancing students’ competitive “edge” in the job market and widening their choice of attainable career destinations.
Outline syllabus
This is an indicative module outline only to give an indication of the sort of topics that may be covered. Actual sessions held may differ.
At the time of writing, we plan to focus on the C++ programming language. Students will gain in-depth training and practice in R and Python in other core modules of the course.
General principles
- General concepts in programming
- Design philosophy and basic features of C++
- Standards and portability - existence and importance of
- IDEs - introduction to, particularly Orwell Dev-C++
- Build workflow
- Build errors - recognising and diagnosing
- Debugging - stepping, watching and breakpoints
- Code layout conventions
- Header files and header guards, projects and translation units
Fundamentals - Data types
- Variables
- Operators
- Scope
- Namespaces
- Functions
- Control structures
- Console input/output
- Arrays and matrices
- Pointers
- Dynamic memory
- Exceptions
Object Oriented Programming - Principles of Object Oriented Programming
- Classes and objects
- Member functions
- Const member functions
- Overloading and constructors
- RAII
- Rule of three
- Friendship
- Operator overloading
- Design patterns
- Inheritance and polymorphism
- Streams, strings and file I/O
- Templates and generic programming
- Standard Template Library Other
- Static analysis tools
Learning outcomes
By the end of the module, students should be able to:
- Understand and explain the common and distinct features, including syntax, of a variety of programming languages.
- Define and explain, both intuitively and formally, the concepts of object oriented programming and application design.
Indicative reading list
Lippman, Stanley B., J. Lajoie and B.E. Moo: “C++ Primer” (5th - ed.) Addison Wesley, 2015 ISBN-13: 978-0-321-71411-4
Joshi, Mark S.: “C++ Design Patterns and Derivatives Pricing” Cambridge University Press, 2015 ISBN-13: 978-0-521-72162-2
Subject specific skills
Design, build, and test applications from scratch to accomplish tasks and/or solve real world problems in Quantitative Finance.
Identify, acquire and use public code libraries to incorporate in their own applications to achieve tasks as outlined in preceding item.
Transferable skills
Conceptualise a computational problem to select and specify appropriate data structures and methods to design, implement, and test/validate solutions.
Study time
Type | Required |
---|---|
Lectures | 18 sessions of 1 hour (12%) |
Project supervision | 1 session of 1 hour (1%) |
Practical classes | 7 sessions of 3 hours (14%) |
Private study | 110 hours (73%) |
Total | 150 hours |
Private study description
14 hours preparation for lab workshops; 18 hours preparation for / revision of lectures; 32 hours project work; 16 hours revision / preparation for tests; 30 hours self-study (reading, practice, …);
Costs
No further costs have been identified for this module.
You do not need to pass all assessment components to pass the module.
Assessment group A1
Weighting | Study time | Eligible for self-certification | |
---|---|---|---|
Assessment component |
|||
Class test 1 | 20% | No | |
Reassessment component is the same |
|||
Assessment component |
|||
Class test 2 | 20% | No | |
C++ Project at end of term 2. |
|||
Reassessment component is the same |
|||
Assessment component |
|||
Individual Project Report | 60% | No | |
Individual coding assignment - 2,500 words + code |
|||
Reassessment component is the same |
Feedback on assessment
Feedback via My.WBS
Courses
This module is Core for:
- Year 1 of TIBS-N3G2 Postgraduate Taught Mathematical Finance