FE522 C++ Programming in Finance
Course Catalog Description
Introduction
Campus | Fall | Spring | Summer |
---|---|---|---|
On Campus | X | X | |
Web Campus | X | X |
Instructors
Professor | 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.
- 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.
- Learn the C++ programming language syntax and features. Learn how to use C++ to solve "realworld" problems.
- 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.
- 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
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 |