FE522 C++ Programming in Finance



Course Catalog Description

Introduction

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.

Campus Fall Spring Summer
On Campus X X
Web Campus X X

Instructors

Professor Email Office
Zhiyuan Yao zyao9@stevens.edu

More Information

Course Description

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.



Course Resources

Textbook

Programming: Principles and Practice Using C++. Bjarne Stroustrup, Second Edition, 2014. ISBN-10: 0321992784, ISBN-13: 978-0321992789

Additional References

C++ Reference: http://en.cppreference.com/w/cpp



Grading

Grading Policies

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%)

Lecture Outline

Topic Assignment
Week 1 Intro and Basic Flow of control
Week 2 Functions Lab 0
Week 3 Input and output Lab 1
Week 4 OOP concept and Class
Week 5 Constructor and Destructor Assignment 1, Lab 2
Week 6 Operator overloading
Week 7 Midterm Exam
Week 8 More OOP Assignment 1 due, Lab 3
Week 9 Multiple Files
Week 10 Pointer Assignment 2, Lab 4
Week 11 Templates
Week 12 Inheritance and Polymorphism Lab 5
Week 13 Standard Template Library (STL) Assignment 2 due
Week 14 Standard Template Library (STL)
Week 15 Final Exam