FE522 C++ Programming in Finance
Course Catalog Description
This course is a practical C++ programming course for both graduate and undergraduate students who need to use programming for their research or potential jobs but haven't had the opportunity to take a
programming course due to being in non-CS related disciplines. Very little time will be spent on the philosophy and much more time on the actual programming. The course will be designed as a prerequisite for other advanced courses at Stevens.
| Zhiyuan Yao
It aims to be an introduction to the C++ programming language, as well as to programming in general, including topics such as object-oriented programming concept and intro to several basic data structures, with some simple applications in finance, including Monte Carlo Simulation and Portfolio Optimization. No prior programming experience is required. Upon completion, students are expected to have proficient programming skills in C++ and to be able to apply these skills in any future courses and/or industry positions.
1. Learn methods for problem decomposition and program design. This consists of analyzing problem requirements, breaking the problem down, and designing an algorithm for each part of the problem.
2. Learn the C++ programming language syntax and features. Learn how to use C++ to solve "realworld" problems.
3. Learn basics of writing good code, proper software engineering techniques, and style, such that the code can be easily read and modified by other programmers, as well as yourself.
4. Practice writing small projects with application in the finance field: General pricing of the derivative product (Black Scholes Model and Monte Carlo simulation) and portfolio optimization.
Programming: Principles and Practice Using C++. Bjarne Stroustrup, Second Edition, 2014. ISBN-10: 0321992784, ISBN-13: 978-0321992789
C++ Reference: http://en.cppreference.com/w/cpp
The final grade will be determined upon the student's performance in lab exercises, homework assignments, midterm exam, and final exam. There will be two (or three) large assignments covering knowledge in programming in C++, and the application of such knowledge in financial engineering. You will have about 2-3 weeks to finish each assignment. The work tends to be programming intensive, so an early start is necessary.
Lab exercises will be included in recitation sessions. Students will be expected to complete about 5 inclass lab exercises distributed along the semester and are encouraged to complete one drill exercise per studied chapter of the book, but the latter will not be graded. Drills are step-by-step exercises which review the content just learned and make sure you to keep programming every week (the only way to learn how to code is coding). If more time is required to cover the initial chapters, we will adapt the schedule accordingly. Having a strong knowledge in the basics of programming is way more important
than learning about specific functionality that the C++ standard library provides.
Finally, there will be an in-class open-book open-Internet midterm exam and a final exam, the details for which will be specified in class in a later moment. Submissions to all lab exercises, homework assignments, and exams are to be done in Canvas and should include a .zip containing your project’s source code. You must follow the same project (folder) organization as the one shown in class, or your submission will not be accepted. You should not submit any binary files. Make sure your code compiles
and it will compile as well in the grader's computer. If it does not compile, we will not be able to evaluate it. A .pdf report explaining the reasoning behind all your answers will also be required for the homework assignment.
All late submissions will be punished unless prior notice is given before the due date and it is approved. If your submission passes the due date for less than 24 hours, your highest score will be 67 %; between 24 and 48 hours, your highest score will be 33 %; and after 48 hours your submission will not be accepted. If outside circumstances are affecting your ability to perform in the course, you must contact the instructor before you fall behind.
You are encouraged to have discussions about everything except exam questions. Programming is not
and should never be considered a lonely endeavor. That said, discussing is not the same as copying, and
all code and reports must be written by yourself. Delivering solutions that were copied from another
source and not developed by you is strictly forbidden. This kind of behavior will be considered as
academic dishonesty/misconduct and will be dealt with according to the Stevens Honor Board policy.
- Labs (20%)
- Assignments (20%)
- Midterm Exam (30%)
- Final Exam (30%)
||Intro and Basic Flow of control
| Week 2
| Week 3
||Input and output
| Week 4
||OOP concept and Class
| Week 5
||Constructor and Destructor
||Assignment 1, Lab 2
| Week 6
|| Operator overloading
| Week 7
| Week 8
||Assignment 1 due, Lab 3
| Week 9
| Week 10
||Assignment 2, Lab 4
| Week 11
| Week 12
||Inheritance and Polymorphism
| Week 13
||Standard Template Library (STL)
||Assignment 2 due
| Week 14
||Standard Template Library (STL)
| Week 15