layout | permalink |
---|---|
default |
/ |
Acknowledgement: This is a fork of advanced-js syllabus. If you are a teacher or interested in the design of the course, see the meta document in the original repository.
- Course: MATH11152
- Course organiser: Dr Goncalo Dos Reis, [email protected]
- Lecturer: Witold Gawlikowicz, [email protected]
- Teaching assistants and course secretary: Please refer to course's Learn page
- Office hours: The lecturer and one teaching assistant will be available in JCMB 5205 (Wednesdays 6-7pm)
- Discussion: If you'd like to discuss anything to do with the course you can write a message on Gitter (please note these are publicly visible, student only rooms will be created in due course)
- Bugs/Suggestions: If you find any bugs in this syllabus or would like to make a suggestions please raise an issue (GitHub account required)
- Updates: The syllabus will be updated to include links to lectures and problem sheets as they get released. Minor modifications may also happen. Please watch it to get notified of any changes (GitHub account requried)
It is a fast-paced level 11 postgraduate course starting from C#/.NET basics and quickly moving to more advanced object-oriented concepts and applications spanning numerical methods, computational mathematics and quantitative finance.
While it's an assignment-only course, the workload is quite heavy and every year a few students fail this course. You will need to make sure you work through the tutorial sheets and lecture material regularly to clear-up any doubts as they come up and make the most of the teaching staff's help before heading off to work on the main project during the winter teaching vacation.
-
At least one semester of an undergraduate course dedicated to programming (in any language). Understanding of flow control, methods/functions and some basics of data structures. This requirement is for both UG students and PGT students from MSc programmes other than MSc Computational Mathematical Finance.
-
This must not be your first programming course. You should have done at least one semester of programming (using Matlab or R to draw some graphs doesn’t count).
-
This course is demanding as:
- you need to know computational mathematics (nonlinear solvers, numerical integration, Monte-Carlo, finite difference PDE solvers, optimization), it is assumed that you know most of this from your undergraduate studies
- you need to know or like mathematical finance & derivative pricing
- you need to learn a new programming language – C#
- you will need to a lot of time to work through the assignments
-
Consider Python Programming or Scientific Computing for a course at a slower pace
It is intended that students will demonstrate:
- appropriate use of flow-control, encapsulation and data-types
- understanding of basic concepts of object oriented programming:
- classes / objects
- inheritance
- interfaces
- ability to implement some numerical methods
- root finding
- numerical integration
- finite-difference
- Monte-Carlo
- use of good programming style and writing of code that is:
- reliable
- extendible
- reusable
- familiarity with modern software-development tools including:
- source control
- unit testing
- continous integration server
by constructing relevant algorithms in labs / assignments
No-one has learned programming by reading books or attending lectures alone!
You can only learn programming by actually coding up solutions to problems yourself:
- Do write the code even when the exercise seems trivial
- Does it compile?
- Does it run as expected?
- Can you make it more efficient?
- Will the code be understandable to someone else?
- Yoursef in a month's time?
Speak with others and discuss but do not copy directly:
- Don’t neglect the collaborative aspect - most of the professional development is done in teams.
Consult learning materials when you're stuck or need to clarify some concepts, but always prioritise coding-time when studying - don't fool yourself that you're learning to code by reading lecture notes or a book on C# for two hours without touching the keyboard even once.
All assignments are listed within the Course Outline.
- No lectures or labs
- Please familiarise yourself with the rest of the syllabus along with the lecture material and problem sheet for week 2
- Setup a GitHub account as we will be using it for assignments
- Lecture 1
- Visual Studio introduction
- Hello World!
- Lecture 2
- Basic types, flow control (if / else) and methods
- Scope of a variable
- Compiler is your friend
- Lab (solution)
- Office hour
- No lectures or labs (cancelled)
- Lecture 3
- Object-Oriented Programming concepts
- Objects, types, classes, methods, properties
- Static methods and classes
- Encapsulation
- Inheritence
- Interfaces
- Generics
- Anonymous functions
- Object-Oriented Programming concepts
- Lecture 4
- Enumeration types
- Value vs. reference types
- Exception handling
- Debugging
- Lab (solution)
- Office hour
- Lecture 5
- Data structures
- Basic algorithm complexity
- Using libraries
- NuGet package manager
- Closer look at a few libraries
- Referencing other projects in solution
- Lecture 6
- Excel integration
- What makes a good code?
- Summary of the first 3 weeks of the course
- Quick overview of assignment 0 along with the submission & grading mechanism
- Lab (solution)
- Office hour
Assignment 0 due on Monday at noon
- Lecture 7 - JCMB 5326
- Source control
- Lab problem sheet overview
- Lab - JCMB 5205
- Lab - JCMB 5205
- Office hour - JCMB 5205
- Lecture 8 - JCMB 5326
- Importannce of testing, unit tests
- Lab problem sheet overview
- Lab - KB Center level 3
- Lab - KB Center level 3
- Office hour - JCMB 5205
Assignment 1 due on Monday at noon
- Lecture 9 - JCMB 5326
- C# style
- Lab problem sheet overview
- Lab - KB Center level 3
- Lab - KB Center level 3
- Office hour - JCMB 5205
Tuesday:
- Lecture 10 - 4.00-6.00pm - JCMB 5328
- Final project overview and discussion
Wednesday:
- Lecture 11 - JCMB 5326
- S.O.L.I.D design principles
- Lab problem sheet overview
- Lab - KB Center level 3
- Lab - KB Center level 3
- Office hour - JCMB 5205
Assignment 2 due on Monday at noon
- Lab - KB Center level 3
- Lab - KB Center level 3
- Lab - KB Center level 3
- Office hour - JCMB 5205
Final project due on Monday at noon
- The free Community version will be enough for the purposes of this course
- Wright, P. Beginning Visual C# 2005 Express Edition
- Duffy, D. J. and Germani, A. C# for Financial Markets
- Many other books on C# available via DiscoverEd, have a look
- Assignment 0 - 0% - feedback only
- Assignment 1 - 5%
- Assignment 2 - 15%
- Final Project – 80%
Please familiarise yourself with the university guideliness on avoiding plagiarism.