CSC 490, Spring 2009: Functional Programming and Computational Finance
1 About the Course
I’m an expert in functional programming (that’s what I get paid for). I’m also interested in Computational Finance (that’s why this class is happening). Am I an expert in Computational Finance? No, I’m not. For this reason, this class will have a somewhat exploratory flavor. This will require maturity on your part. That’s why it’s a 400-level course!
I must also acknowledge support from Steven Skiena at Stony Brook, who has graciously allowed me to draw upon his course materials in constructing this class.
2 Outcomes
At the end of this course, you should be able to use a functional programming language to build simple financial models.
3 Prerequisites
Students taking this course must be able to design and implement medium-size programs (~ 5 KLOC) efficiently. Students must have a basic understanding of mathematics.
4 Names, Times, Locations
Google Calendar:
See my Cal Poly Home Page for my calendar, including times & locations of labs, lectures, and office hours. You can add it to your calendar, if that makes your life easier.
4.1 Instructor
name: John Clements
telephone number: 756-6528
e-mail address: aoeuclements @ brinckerhoff.org
4.2 Lecture & Lab
Lecture: 0900–1100, T/Th, room 020-140
4.3 Web Page
This is the course web page, its link is http://www.csc.calpoly.edu/~clements/csc490-sp09/.
5 Computing Environment
We will be using OCaml for this class. Vogon has version 3.10.1 installed, so that will be our baseline. OCaml is available from the package management tools of most of the big Linux distributions, and may also be downloaded from
http://caml.inria.fr/ocaml/release.en.html
There are lots of OCaml tutorials on the web, of varying quality. Here are just a few of them:
http://www.ffconsultancy.com/products/ocaml_for_scientists/chapter1.html: (This is the free first chapter of a non-free text)
Find other good ones? Send mail to the google group.
We’ll be handling handin using a plugin for DrScheme. Instructions on downloading and installing this plugin are available in this text file.
6 Readings
Ooh, this is a tough one. In a perfect world, you would all have a bunch of textbooks (Hull, Wilmott, etc.) and I would assign lots of readings. I hate to make you buy these great big books, though, because they’re heavy and they’re incredibly expensive. We’re going to try to get by without them.
There is also one text that is the source for much of the lecture, and could even be seen as lecture notes. This is Steven Shreve’s book:
I’m becoming more and more fond of this book as I go.
7 Communication
There is a google group, csc490-sp09. You will need to join this group. You can request this by visiting the url
http://groups.google.com/group/csc490-sp09
I will use this group to tell you about important changes and updates to the assignments. However, it will also be a forum for you to help each other. As long as you’re not posting code, I strongly encourage you to ask questions and to respond to questions on the group. For this reason, I also require you to sign up in individual e-mail mode, and not in digest mode. Finally, you need to make sure that your postings are professional and civil. Imagine that your boss is reading them (I am).
8 Assignments/Milestones
This class will tentatively consist of four small assignments, and one final project. The small assignments may be solved in pairs. The final project should be done in teams of two or three.
Unless otherwise specified, all assignments are due at 11:00 PM.
Along with any code you submit you must also include a Makefile whose default target builds the code, and a README that describes how to run the project against your tests.
9 Final Project
Every student or team will have to formulate and implement a final project consisting of an "interesting" program in the financial domain. That’s extraordinarily open-ended, so each student or team will have to meet with me twice during the quarter to discuss the project; once in the fourth week, to propose a project, and once in the sixth week, to gauge progress. In the final three weeks, you’ll be presenting your final projects in class.
10 Final Project Submission
TBA.
11 Teams
This class allows teams of size two. You are not required to work with a partner, but I strongly encourage it. You may change partners between assignments. Changing partners mid-assignment or mid-final-project is generally not allowed.
12 Cheating
In the programming assignments, you may not copy another team’s code (including test cases and pseudo-code). You may not share code with other teams in the class. That is, you may not allow another team to see the code you write for the class, deliberately or through obvious negligence.
Any code you submit that is attributable to another source must be clearly identified as such. In general, you will not receive credit for code that your team did not write.
I will use an automated tool to compare student submissions and identify cheating.
Students believed to be cheating–that is, both parties involved in the transfer of code–will receive a failing grade in the class.
13 Exams
There will be no exams in this class.
14 Grades
Grades will be determined by performance on programming projects, and class interaction. A small fraction of the grade is determined by the instructor’s whim.
The breakdown of the grade is as follows:
Assignments/Milestones: 56%
Final Submitted Project: 38%
Instructor’s Whim: 6%
14.1 Grading Methods and Expectations
I will grade submitted code by running test suites of my own devising and by running your test suites and by reading your code. Just to make this clear: if you write gross horrible code that happens to be correct, you will generally receive a poor grade. Also, code that does not compile generally gets a score of zero.
I will grade your presentations and demonstrations and code and design reviews based on the success of the demonstrated code and upon the content and delivery of the presentation.
Naturally, all grades contain an element of subjectivity.
15 Attendance Requirements
I do not formally state attendance requirements.
16 Schedule/Homeworks
Did you miss the link at the top of the page?
17 Acknowledgments
Many thanks to Steven Skiena for course materials.