**Developing fault-tolerant distributed trading systems**
**Course Description:** This course will be provided by Credit Suisse to give
students exposure to real-world software development of fault-tolerant
distributed trading systems with a web user interface. The course will consist
of a set of lectures and tutorials. Weekly assignments will bring students
ever closer to having the final project complete. The course project will be a
financial application similar to the systems used for pricing and risk
calculations in Credit Suisse. A mock legacy system will be replaced by the
students ' implementation component-by-component. It will be acceptable to use
some of the legacy components in the final project in exchange for a mark
penalty. The students will have access to technical leaders at Credit Suisse
through the lectures and tutorials to learn from professionals who are
building business critical applications.
**Recommended Prerequisites:** Familiarity with object oriented programming
and computer science concepts is required for this course. Some exposure to
Java is recommended, but is not required for ambitious students. Students can
decide to produce the backend in Java or C#, with an understanding that the
lectures will cover only examples of the java implementation. A useful course
to have taken prior to enrollment is the Websites course.
**Expected Workload:** The instruction time for this course will be 90 minutes
of lecture and 90 minutes of tutorial per week. We expect students to spend
4-6 hours per week outside instructional time on course work and assignments.
**Event**
|
**Title & Presenter**
|
**Description**
---|---|---
**Lecture 1**
|
Introduction to Financial Markets
|
Introduction to Investment Banking
* Time Value of Money
* Interest Rates
* Spot vs Term market
* Spot market interuments
o Equities
o Bonds
o FX
o Commodities
* Term market contracts
o Futures
o Swaps
o Options
**Tutorial**
|
Business Analysis
|
* Introduction to the final project
* Introduction to Business analysis
* Lifecycle of a project
* Eliciting requirements
**Assignment:** Convert business requirements to functional ones in order to
understand what it is that we will be building over the next 12 weeks
**Lecture 2**
|
Zookeeper 1
|
Fault-tolerant distributed systems
**Assignment:** A simple system implementation based on zookeeper using CS-
given code (Market moves, pricing and a collection of trades provided)
**Tutorial**
|
Zookeeper demonstration
|
A walkthrough of a piece of Zookeeper-based code with an explanation of why
all the different mechanisms were used and how they provide fault-tolerance
and high scalability
**Lecture 3**
|
Testing and QA / Behaviour Driven Development
|
This lecture will introduce the concepts of testing and the overall quality
process
Testing
- Black box testing vs. white box testing
- Integration tests vs. unit tests
- Mocking
Quality
- How QA and development teams work together
- Documents / artifacts that developers and QA use to communicate
- Examples of how to write a test case from a user story
Using BDD in practice
**Assignment** :
1\. Write unit tests for some of the components and use mocks to allow the
tests to pass.
2\. Write test cases for some of the requirements
**Tutorial**
|
BDD
|
Further BDD examples, assignment help
**Lecture 4**
|
Zookeeper 2
|
Continuing the explanation of Zookeeper mechanisms and patterns
** **
**Assignment:** students use this knowledge to implement simple stock pricing
on log-normal model based on some provided code.
**Tutorial**
|
Zookeeper demonstration 2
|
Demonstration of a simple worker listening for changes on the zookeeper tree
and reacting to it
**Lecture 5**
|
Recap
|
This slot is to be used for any additional explanation required on any of the
topics
**Tutorial**
|
Recap
|
Open office hours in the lab
**Lecture 6**
|
RESTful WebService & Web Sockets
|
Web services, REST, Web Sockets
**Assignment:** Implement web services for the final project. The system
should now get and send data to all the legacy components (with RESTful
interfaces)
**Tutorial**
|
Assignment tech help
|
Tech and debugging help with the week's assignment
**Lecture 7**
|
HTML5 + ecosystem
Website design
|
HTML5 and ecosystem
Website design, wireframing
**Assignment:** Design the front-end
**Tutorial**
|
Presentation of front-end designs
|
Students to present their designs to a CS graphical designer
**Lecture 8**
|
React.js
|
Front-end development in React.js
**Assignment:**
1) Write unit tests for the market data server interface and a mock that
allow the tests to pass.
2) Write test cases for some of the requirements
**Tutorial**
|
Assignment tech and documentation help
|
QA and developers on hand to help the students with the assignment
**Lecture 9**
|
-
|
-
**Tutorial**
|
Recap
|
Open office hours in the lab
**Lecture 10**
|
MongoDB
|
Mongo DB
**Assignment:** Implementing the trade store in MongoDB
**Tutorial**
|
MongoDB lab
|
Using MongoDB to store trades
**Lecture 11**
|
Brownian Motion
|
Introduce the random processes (Brownian motion) and discuss ways to simulate
a simple stock process (log-normal model). Technical depth of this lecture
will be tailored to the audience.
**Assignment:** Replace the legacy market data component with own
implementation
**Tutorial**
|
QS Help
|
Experts from Quantitative Strategies to help with the understanding of
Brownian motion
**Lecture 12**
|
Option Pricing and Risk Calc
|
Discussion on what options are and why people might be interested in them.
Walk-through of an example of how to compute price and risks for options in a
log-normal model. Calculating the PV and risk of options.
**Assignment:** Replace the legacy pricing component with own implementation
**Tutorial**
|
QS Help
|
Experts from Quantitative Strategies to help with the understanding of Option
Pricing