Kurs: Practical Enterprise Software Development

Język wykładowy Angielski
Semestr Letni
Status W ofercie
Opiekun Wiktor Zychla
Liczba godzin 24 (wyk.) 24 (prac.)
Rodzaj Kurs inżynierski
ECTS 4
Polecany dla I roku Nie
Egzamin Nie

Opis przedmiotu:

**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