IB9JH-15 Programming for Quantitative Finance
Introductory description
This module is driven by links into, and provides foundation for, the MSMF core structure: the latter determines the set of skills required and provides examples for applications. In turn, this module develops and supports the skills required for practical applications of theoretical concepts developed elsewhere in the core.
Module aims
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 MSMF 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
Principles of programming, algorithms
Common and distinguishing features of different languages
Guide to “Good Practice” in programming
Using an Integrated Development Environment (IDE)
Different workflow models for application development
Testing and “debugging”
Fundamentals of Programming
Data types and data structures
Constants and variables, namespaces and scope
Program flow control
Functions
Input/output
Exception handling
Object Oriented Programming
Principles: classes, objects, instances
Member functions
Inheritance and polymorphism
Templates and generic programming
Design principles
Applications in Quantitative Finance
Learning outcomes
By the end of the module, students should be able to:
- Demonstrate a comprehensive understanding and explanation of 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
- Critically evaluate the design choices and testing for coded programming solutions for a particular problem, both for self-written code and code written by others
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
Interdisciplinary
This module is part of a course taught in conjuction with the Maths and Stats departments
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
Conceptualise a computational problem to select and specify appropriate data structures and methods to design, implement, and test/validate solutions
Transferable skills
Written communication
Problem solving
Numeracy
Study time
Type | Required |
---|---|
Lectures | 13 sessions of 1 hour (9%) |
Project supervision | 1 session of 1 hour (1%) |
Practical classes | 13 sessions of 2 hours (17%) |
Private study | 56 hours (37%) |
Assessment | 54 hours (36%) |
Total | 150 hours |
Private study description
13 hours preparation for lab workshops; 13 hours preparation for / revision of lectures; 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 A2
Weighting | Study time | Eligible for self-certification | |
---|---|---|---|
Assessment component |
|||
Individual Programming Assignment | 40% | 22 hours | Yes (extension) |
Reassessment component is the same |
|||
Assessment component |
|||
Individual Report | 20% | 10 hours | Yes (extension) |
2000 word individual report |
|||
Reassessment component is the same |
|||
Assessment component |
|||
Group Programming Report | 40% | 22 hours | No |
Reassessment component is the same |
Feedback on assessment
Cohort-level feedback (incl. detailed solution notes) will be given after the individual programming assignment. Formative and summative individual written feedback will be given following the individual group project report.
Courses
This module is Core for:
- Year 1 of TIBS-N3G2 Postgraduate Taught Mathematical Finance