Kurs: Practical C# Enterprise Software Development zima 2014/15

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

Opis przedmiotu:

**Course Description:** This course will be provided by Credit Suisse to give students exposure to real-world software development. The course will consist of a set of lectures and a large course project in which students will learn and apply practical skills. The course project will be a financial application similar to the systems used for pricing and risk calculations in Credit Suisse. 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 C# is recommended, but is not required for ambitious students. A useful course to have taken prior to enrollment is **Windows Programming 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: Course Introduction** Introduction to Investment Banking and Enterprise Software: * Differences between university / personal project and enterprise software (i.e. why are you taking this course): reliability, performance, scalability, long-term maintainability, documentation & analysis * What is an Investment Bank and what does it do? Sales & Trading, Corporate Finance, Research, FO/MO/BO layering * What are the basic financial markets and products? Stocks, Bonds, Commodities, and Forex * High-level introduction to the kinds of systems: trade capture, market data, risk engines, pricing applications * **Lecture 2: Introduction to C#** An overview of the C# language: * Visual Studio * Hello World Console Example : methods, properties, variables, loops, input and output * Conventions to follow for readable code * Collections & Generics * LINQ * Extension Methods * Lambda Expressions * Anonymous Types * Default & Named Parameters * Dynamic Types **Assignment:** set up dev environment and write an application to capture names and addresses and sort them alphabetically. **Tutorial:** Assignment help: Open office hours for any students to get some help with Visual Studio or with assignment of the week * **Lecture 3: How to model a random stock process** Introduce 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:** students use this knowledge to implement a simple stock model based on some provided code. **Tutorial:** Assignment help: Help students with understanding the business facts and/or implementation details of the stock model assignment * **Lecture 4: How to price options** Discuss what options are and why people might be interested in them. Walk- through an example of how to compute price and risks for options in a log- normal model. **Assignment:** students use this knowledge to implement simple stock pricing on log-normal model based on some provided code. **Tutorial:** Assignment help: Help students with understanding the business facts and/or implementation details of the stock pricing assignment * **Lecture 5: Requirements Specification & Analysis ** This lecture will introduce the course project and the majority of the requirements. Instead of providing a completely formed specification, the lecture will explain how users needs are turned into requirements which are then turned into a specification Topics: * Use case analysis; how to interview users and understand their process needs, and how to understand the difference between what a user says they want and what they actually need * What is a requirement? Functional and non-functional requirements * Use cases : what these are and how to specify them * UML – High Level UML Diagram. * Business Requirements Documents : what they are and why they matter * Present a partial BRD for the course project **Assignment:** The provided BRD is incomplete. The assignment is to fill in specific sections. **Tutorial:** Meet the users & assignment help: Open office hours for students to get help with the assignment. They will be able to interview the “users” for the assignment system to clarify the requirements. * **Lecture 6: Networking & Dependency Injection** This lecture will be the first of 2 introducing the main technologies that the students will need to implement their server(s) * Dependency Injection * The concept of the pattern and why it’s a good idea * Implementing DI using Unity * Networking * Networking and Web Service Basics * TCP * HTTP * REST & SOAP * ASP.Net Web API * Example of creating a web service **Assignment:** Given the interface for the market data system, write a dummy client and server using Web API that communicate via a REST web service. **Tutorial:** Assignment tech help: Tech and debugging help with the week’s assignment * **Lecture 7 Threading** This lecture will be the second of 2 introducing the main technologies that the students will need to implement their server(s) * Threading basics: Processes, Threads, Concurrency, etc. * .Net Threading Primitives * Lock, Mutex, Semaphore * Example of creating a critical section * Creating Threads * Performance * ThreadPool * Locking is bad: Double-Check locking pattern * TPL * What is the task parallel library? * Example of using it to run jobs in parallel **Assignment:** Modify last week’s assignment so that the client creates concurrent connections to the server and the server code is thread-safe **Tutorial:** Assignment tech help: Tech and debugging help with the week’s assignment * **Lecture 8: Testing and QA** 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 * Examples using MSTest and RhinoMocks 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 **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: GUI Design and HTML5 introduction** The lecture will be the first of 2 introducing the concepts that the students will need to build their front-end applications * Wireframing and practical demo using Balsamiq * Using wireframes to validate use cases and GUI requirements * Introduction to HTML5 * The basics of HTML5 and web layout * Javascript and AngularJS **Assignment:** Create wireframes for the UIs for their application **Tutorial:** Meet the Users: Review wireframes with “users” to ensure the teams have met the requirements * **Lecture 10: HTML5 Design Patterns** This lecture will help the students understand how to build loosely-coupled data-driven UIs in HTML5 * MVVM and Why Code Behind is a bad thing * AngularJS Deep Dive **Assignment:** create the UIs for the main project **Tutorial: **UI technical help: Students bring in their UIs for help from HTML5 experts * **Lecture 11: End-user documentation** This lecture will teach the students about the kinds of documentation that should accompany production software, with examples * System and feature documentation * Version Release notes * Developer and Support Documentation **Tutorial:** Project Help: Experts available to the students to provide any help they need to prepare for the final presentations * **Lecture 12 & 13: Project Presentations** Individual 15 minutes project presentations.

Wykłady

Lista
Prowadzący Termin zajęć Limit Zapisani Kolejka
(nieznany prowadzący)
wt 08:00-10:00 (s. 119) 300 22 0

UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.

Pracownie

Lista
Prowadzący Termin zajęć Limit Zapisani Kolejka
(nieznany prowadzący)
pt 08:00-10:00 (s. 108) 15 13 0
(nieznany prowadzący)
pt 10:00-12:00 (s. 108) 15 8 0

UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.


Konsultacje prowadzących:


Imię i nazwisko Pokój Konsultacje