MFE C++ Programming, Spring 2014 - Syllabus - (MFE Program, Berkeley-Haas)
MFE C++ Programming, Spring 2014 - Syllabus - (MFE Program, Berkeley-Haas)
MFE C++ Programming, Spring 2014 - Syllabus - (MFE Program, Berkeley-Haas)
co-instructor: email:
gsi: email:
overview:
This course offers an introduction to C++ programming to incoming MFE students. Students do not need to have a background in programming to succeed in the course, but must be prepared to spend extensive time outside of the classroom to do assignments and exercises. The format of the course is a combination of lectures and exercises. There are also five mandatory assignments (see below). There are twelve lectures. The first seven cover general programming in C++. The last five lectures provide an introduction to object oriented programming (OOP), available external libraries, and also an introduction to several finance applications, including binomial option pricing. The course material consists of comprehensive lecture notes, which will be available for download. Additional text books are suggested below for the interested reader. Prata and Horton are introductions, whereas Stroustrup is more advanced (a bible for advanced students). Throughout the course, references to material where students can self-study concepts that we do not have time to cover in class will be given.
suggested texts:
C++ Primer Plus,v 6th Edition, by Stephen Prata, Sams, 2011. Visual C++ 2010, by Ivor Horton, Wiley, 2010. The C++ programming language, by Bjarne Stroustrup, Addison-Wesley, 2000.
also required:
A laptop with Visual C++ 2010 Express (for Windows) installed. Bring the laptop to class. Detailed instructions for installing Visual C++, compiling programs and running programs are given in the first assignment. Alternatively, the Eclipse C++ compiler may be used. An alternative assignment is available for students who choose the Eclipse environment. We strongly recommend that you use one of these two programming platforms (Eclipse or Visual C++). The lectures will be based on Visual C++, so students with little or no programming experience may therefore find it easier to use this platform. Advanced students may prefer Eclipse since it is more modular. GSI support will not be given for other C++ compilers than these two. You are, however, allowed to use other C++ compilers if you wish.
homepage:
assignments:
There are six mandatory assignments. It is extremely important that students complete these, since the only way to learn to learn programming is through extensive hands-on practice. Assignment 1 is due at the beginning of the first lecture. Most students should be able to complete this assignment on their own. For students who run into trouble, the GSI will be on duty the week before the course begins, and there will be a lab-session scheduled on the weekend before the course starts. Assignment 6 is an extensive project assignment, so students should plan accordingly. Assignments should be submitted electronically, and in time, via bspace. Detailed instructions for what is to be submitted, and how, are provided on the first page of each assignment. Should you choose (against our recommendation) to use another compiler than the Visual C++ or Eclipse compiler, you should contact the GSI to get instructions about what needs to be submitted. Students are allowed to consult all the material provided in the course (lecture notes, course books, programs, etc.), as well as the Internet, but are not allowed to use any material that even remotely resembles a solution to the assignment. If there is any doubt, please contact the instructor.
grades:
Students who complete the assignments satisfactorily and on time will receive a certificate that they have passed the course. All other students will not receive such a certificate. There is thus no fail grade in the course. Students who decide to audit the course therefore do not need to take any formal action, but are encouraged to send an e-mail to inform the professor about their decision. There is no exam. We will conduct the GSI sessions online (except for the first session), using Adobe Connect. You will receive instructions for how to log on before the first online session.
We ask students to refrain from behavior that has been demonstrated to interfere with a positive classroom experience. This especially includes holding any type of side conversation (voice, electronic, etc.) and using laptops to surf the Web, check e-mail, etc.
lecture plan:
For simplicity, topics and readings are presented as full lectures. Some topics may run over to the next lecture. Consequently, we may fall behind the listed schedule a bit at some points and then catch up soon thereafter.
Lab:
GSI Session 1
Due: topic:
Assignment 1 Introduction to computers, programming, C++ and algorithms. Basic I/O, variables, simple arithmetics, conditional statements. Loops and functions. Scope, break, continue. Call by value/call by reference. Lecture 1 2 hours Lecture 2 2 hours
topic:
February 1, 2014
topic:
Callback functions. Exercises: Numerical analysis, simple bond valuation . Arrays, strings and pointers. Static versus dynamic memory allocation
topic:
Online Lab: Opportunity for students to get hands-on help with assignments.
February 8, 2014
Due: topic:
Assignment 2 Multidimensional arrays, introduction to classes and advanced data structures. Methods and attributes, public, private and protected, constructors, destructors, this pointer, file structures, operator overloading. Lecture 5 2 hours Lecture 6 2 hours
February 7, 9, 2014
Online Lab: Opportunity for students to get hands-on help with assignments.
GSI Session 3
topic:
File I/O. Exercises on classes and data structures. fstream, read, write, close, good Friends More on bond valuation. Introduction to Assignment 4. Introduction to OOP Object oriented programming (OOP): Taxonomies, inheritance, protected. Polymorphism, static/dynamic binding, virtual methods.
Lecture 7 2 hours
Lecture 8 2 hours
Online Lab: Opportunity for students to get hands-on help with assignments. Due: Assignment 3
GSI Session 4
topic:
OOP:Modularity and reusability. Templates, C++ libraries, exception handling. Applications, limit order markets
topic:
Online Lab: Opportunity for students to get hands-on help with assignments.
Due:
Assignment 4
March 1, 2014
topic:
topic:
Online Lab: Opportunity for students to get hands-on help with assignments.
March 4, 2014
Due:
Assignment 5
March 7, 9, 2014
Online Lab: Opportunity for students to get hands-on help with assignments.
GSI Session 7
Due:
Assignment 6