MET CS 563 Software Development with C++ for Mathematical Finance--Fall 2008

Course Calendar        Homework             References

Course Objectives: The goal of this course is threefold: (i) to provide the student with the knowledge for designing and developing modular, scalable, maintainable programs in the C++ programming language using object-oriented methods;  (ii) to discuss finite differences solutions for the basic models of financial derivatives; and (iii) to apply the knowledge in programming and numerical methods to design and develop software for modeling financial derivatives.

Upon completion of the course, the student will have an understanding of software design criteria, and how to use them for guiding design and development of financial modeling software, and be able to use the flexibility and power of C++  in conjunction with the object-oriented paradigm.

Course Overview: The object-oriented approach to computer programming and software design is becoming mainstream both in academia and in industry. C++ combines the efficiency of C with the disciplined approach to organizing interactions between software modules.  C++ is the implementation language of choice for implementing financial models.

The first part of this course presents the procedural features of C++: basic program structure, built-in-types, control structure, functions.  The procedural style is illustrated on implementation of the finite difference method for modeling financial derivatives.  The second part of the course discusses the object-oriented programming concepts related to the use of C++ classes and their members, constructors, destructors, function overloading, operator functions, friend functions, inheritance, polymorphism with dynamic binding.  These concepts are illustrated through a case study on option modeling that builds on the procedural implementations of the first part of the course and develops them into a software product for financial modeling through a consistent application of object-oriented software design methods.

Prerequisites: CAS MA 226, prior programming experience in a high level language recommended.

Course Format & Policies: The class sessions will be conducted in the lecture format (see course schedule for possible exceptions). The mandatory components of the course work include class attendance, submitting homework on time, and taking the midterm and final exams.

This course has a hands-on "learn by doing" as well as a theoretical component. You will have to do homework assignments to help you master the material. You will also have to read the textbook in advance to prepare for each lecture and to be ready to discuss the issues related to the current class topic.

Class attendance and submitting homework on time are mandatory. If you have to miss a class or a deadline, inform me in advance or as soon as possible (make sure you take this warning very seriously).

If an emergency occurs, you will be granted an extension; to obtain it, you should talk to the instructor to set the timetable and priorities (avoid making your own scheduling decisions without consulting with the instructor first).

Discussions in class are highly encouraged.  Do not hesitate to ask questions: they help the instructor understand what issues are more difficult and accordingly spend more time discussing them.

Grading: The final grade is based on

Grading criteria include your ability to understand course concepts and their relationships, and your skills in using C++ syntax and semantics correctly.

Exams test knowledge of programming terms and concepts, C++ syntax, problem solving ability and programming skills. They are closed book, but you are allowed to prepare and bring a "crib sheet" (two-sided) with hand-written notes along.

The exams are graded by the instructor. 

Programming Assignments require you to develop working usable programs and are an integral component of this class. Their satisfactory completion is an absolute requirement for receiving any credit for this course, i.e. a failing grade in the programming assignments automatically triggers a failing grade in the course; even if you have brilliant results in the in-class midterm and final exams.

The homework assignments are graded by the Teaching Associate and you should first address your questions to him/her.

Programs written in standard C++ (should) run in any environment (Unix, Linux, Windows, etc.), i.e. the programs are portable from one environment to the other. However each environment also has its additional specific features that to not port kindly to a non-native place. The situation with compilers is similar as they are usually written with a particular environment in mind. Therefore, to make our life easier, we will all use the same compiler-- Microsoft Visual C++ Express 2008, a free download from http://www.microsoft.com/express/download/. This will give us more time to focus on concepts and problem solving as opposed to arcane system details.

Homework is due one week after posted. For further submission details see the problem statements.

Homework assignments are graded based on several categories such as correctness, robustness, user-friendliness, maintainability, documentation, programming style.  The specific grading categories and their relative weights are explained in a grading rubric for the particular problem. Late homework submission results in a 10% point deduction per day and homework assignments will not be accepted if they are late more than five days.   There are no exceptions to this rule except for religious holiday, certified medical reasons, or exceptional circumstances for which the instructor has granted permission. 

Academic Honesty:  Cheating and plagiarism will not be tolerated. They will result in no credit for the homework or examination and may lead to disciplinary actions (for details see the Academic Conduct Code at  http://www.bu.edu/met/metropolitan_college_people/student/resources/conduct/code.html) . This should not be understood as a discouragement for discussing the material or your particular approach to a problem with other students in the class. On the contrary—you should share your thoughts, questions and solutions. Naturally, if you choose to work in a group, you will be expected to come up with more than one and highly original solutions rather than the same mistakes.

Course Information

Meeting Time: Monday, 6 pm - 9 pm

Room: GCB 205

Instructor: Tanya Zlateva, Ph.D., Assoc. Prof.; E-mail: “last name at bu-dot-edu”), Tel: 617-353-2568; Office: 755 Commonwealth Ave., Room 103. Boston, MA 02215.

Teaching Associate: Michael D. Lee, M. S. (by e-mail at “last name preceded by first name and middle initials at bu-dot-edu”)