Skip to content

Syllabus for the Object Oriented Programming with Application course at the University of Edinburgh

Notifications You must be signed in to change notification settings

OOPA2018/syllabus

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

layout permalink
default
/

class logo
Object-Oriented Programming with Applications syllabus

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)
    • Gitter
  • 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)

Course Description

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.

Prerequisites / Warning

  • 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

Learning outcomes

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

How to succeed?

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.

Homeworks/Project

All assignments are listed within the Course Outline.

Course Outline

Week 1

  • 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

Week 2

  1. Lecture 1
    • Visual Studio introduction
    • Hello World!
  2. Lecture 2
    • Basic types, flow control (if / else) and methods
    • Scope of a variable
    • Compiler is your friend
  3. Lab (solution)
  4. Office hour

Week 3

  • No lectures or labs (cancelled)

Week 4

  1. Lecture 3
    • Object-Oriented Programming concepts
      • Objects, types, classes, methods, properties
      • Static methods and classes
      • Encapsulation
      • Inheritence
      • Interfaces
    • Generics
    • Anonymous functions
  2. Lecture 4
    • Enumeration types
    • Value vs. reference types
    • Exception handling
    • Debugging
  3. Lab (solution)
  4. Office hour

Week 5

#1589F0 Assignment 0 announced

  1. Lecture 5
    • Data structures
    • Basic algorithm complexity
    • Using libraries
      • NuGet package manager
      • Closer look at a few libraries
      • Referencing other projects in solution
  2. 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
  3. Lab (solution)
  4. Office hour

Week 6

#f03c15 Assignment 0 due on Monday at noon

  1. Lecture 7 - JCMB 5326
    • Source control
    • Lab problem sheet overview
  2. Lab - JCMB 5205
  3. Lab - JCMB 5205
  4. Office hour - JCMB 5205

#1589F0 Assignment 1 announced

Week 7

  1. Lecture 8 - JCMB 5326
    • Importannce of testing, unit tests
    • Lab problem sheet overview
  2. Lab - KB Center level 3
  3. Lab - KB Center level 3
  4. Office hour - JCMB 5205

Week 8

#f03c15 Assignment 1 due on Monday at noon

  1. Lecture 9 - JCMB 5326
    • C# style
    • Lab problem sheet overview
  2. Lab - KB Center level 3
  3. Lab - KB Center level 3
  4. Office hour - JCMB 5205

#1589F0 Assignment 2 announced

Week 9

Tuesday:

  1. Lecture 10 - 4.00-6.00pm - JCMB 5328
    • Final project overview and discussion

Wednesday:

  1. Lecture 11 - JCMB 5326
    • S.O.L.I.D design principles
    • Lab problem sheet overview
  2. Lab - KB Center level 3
  3. Lab - KB Center level 3
  4. Office hour - JCMB 5205

Week 10

#f03c15 Assignment 2 due on Monday at noon

#1589F0 Final project published

  1. Lab - KB Center level 3
  2. Lab - KB Center level 3
  3. Lab - KB Center level 3
  4. Office hour - JCMB 5205

Semester 2, Week 1

#f03c15 Final project due on Monday at noon

Resources

Tools

  • The free Community version will be enough for the purposes of this course

Git and GitHub

Learning materials

Books

Online resources

Grading

  • Assignment 0 - 0% - feedback only
  • Assignment 1 - 5%
  • Assignment 2 - 15%
  • Final Project – 80%

Plagiarism

Please familiarise yourself with the university guideliness on avoiding plagiarism.

About

Syllabus for the Object Oriented Programming with Application course at the University of Edinburgh

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 74.3%
  • CSS 17.2%
  • Ruby 8.5%