Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit


Fall 2022

QFGB8946: Financial Programming

Introduction to C++

Course Objective

The goal of this course is to introduce students to computer programming and software engineering in the programming languages of C/C++ with special emphasis on their applications in the field of quantitative finance. We will be using the C++20 standard. At the end of the semester, the students should be familiar and comfortable with common C++ programming skills as well as the object-oriented programming techniques that are prevalent in modern software design.

Throughout the term, students will apply financial market knowledge learned in other courses in the MSQF program of Gabelli Business School, and solve novel quantitative financial problems using C++ programming.

There are no pre-requisites for this introduction course – students are assumed to have no computer programming background.

Topics are as, but not limited to, listed below:

· What makes a C++ program

· Data types

· Variables, Operators, and Expressions

· Program branches and loops

· Functions

· Variable scopes and lifetimes

· Passing of variables

· Preprocessor

· Pointers and Arrays

· Data Structures

· C++ Classes

· Basic operator overloading

· Memory management

· Inheritance

· Polymorphism

Texts

No particular text is required for this course. But below reference books are highly recommended

Suggested texts:

1. C++ Primer Plus (6th Edition), by Stephen Prata. A great C++ book for both beginner and intermediate C++ programmers.

2. C++ Primer (5th Edition), by Stanley Lippman, Josee Lajoie, and Barbara Moo. A great book for an intermediate level C++ programmer.

3. Effective C++ (3rd Edition), by Scott Meyers.

4. Effective Modern C++, by Scott Meyers.

5. C++11 for programmers by Paul J. Dietel and Harvey J. Dietel. A good introductory book.

6. Starting Out with C++ Early Objects by T.Gaddis, J.Waters, and G.Muganda. A good detailed introductory book.

Online reference material:

1. http://www.cplusplus.com Online reference site for everything C++

2. http://www.cprogramming.com Another online reference site with handy tutorials

Laptops

This is a hands-on course. There are frequent in-class assignments and quizzes that are graded. Please bring your laptops to class for every session and make sure it has enough charge for 2 hours!

Software Requirement

Every student is required to have C++ compiler that supports C++20 standard and appropriate programming development environment installed on their computers. Students are expected to have their laptop software development ready before the first class. Please contact the TA if you run into trouble.

1. Compilers:

I’ll be using gcc (g++ is the C++ compiler). GCC (GNU compiler collection) is released by the GNU software foundation.

· If you’re on Mac OS-X, stick to clang, which is the default C-compiler that comes with Mac OS-X (or gcc if it is installed).

· If you’re on a Windows machine, you will need to download and install Cygwin (https://www.cygwin.com/)(Unix emulation software) along with gcc, gdb (the debugger) and gmake.

· If you’re on Linux/Unix machine, download and install gcc.

· You can also use Visual C++ but do note that it may not be fully C++ compliant and that I

don’t use it and may not be able to help you if you run into problems.

2. Development environments:  

I’ll be using emacs - a simple text editor that has built in knowledge about C++ syntax. If you’re using a Mac or a Linux machine, emacs should already be installed on your machine. If you’re using Windows and have downloaded cygwin, you will also get emacs onto your machine. You can also use an Integrated Development Environment (Visual Studio, Netbeans, Eclipse, Xcode) but I may not be able to solve every problem your run into!

Assignments

There will be weekly assignments given throughout the term. You are encouraged to work in a group. However, you must do your own work. Plagiarism will result in severe consequences. The assignments serve for you to learn and practice the concept/techniques taught for the week. As the knowledge is built upon previous learning, it is important that students complete the assignments on time. Therefore, each assignment must be submitted on time. No late submission will be accepted.

Participation credit

Signification proportion of the final grade is class participation. You are encouraged to ask questions, give comments, actively participate class discussions.

Quizzes and Exams

· In-class quizzes are given periodically throughout the semester to test the knowledge acquisition. The quizzes are typically short (15-30 minutes long).


· Midterm will be given on Tuesday,

· Final exam will be on Tuesday,

Grading

1) Assignments (in-class or out-class) 20%

, 2022

, 2022.


programming projects/assignments are absolutely essential and students cannot expect to understand and master the course material without making serious efforts in completing these programming assignments. Consequently, regardless of your grades in exams and quizzes, no students shall pass the course if they failed to hand in more than one programming assignments.

2) In-class tests 15%

3) Midterm 25%

4) Final Exam 30%

5) Class Participation 10%

a. Attendance 5%

b. Active participation 5%