OOP and Design

Good software is built around robust abstractions. This course therefore is mostly about Abstraction and using Object Oriented Design and Programming (OODP) to come up with the right set of abstractions. The goal is to get a good sense of what programming is mainly about as well as how OODP facilitate good programming. One of the primary goals of this class is to answer the question “how to design good reusable extensible software components that can be pieced together to build general applications?”

The course will teach OOD and will look into the Booch, OMT and Object Oriented Software Engineering methods. We will look into UML as a means to model software.

The course starts of by looking at procedural languages and the abstractions therein and move on to Object Oriented Languages. Different methodologies of buidling extensible software are presented and discussed. We will learn about the fundamental principles one should keep in mind while designing and developing software. We will learn about the core principles that one should keep in mind designing Object Oriented Systems.

The modern trend in OOD has been the use of Design Patterns. The majority of the course will talk about the different design patterns and their use. We will look at each design pattern individually and how they are applied in the real world. Design patterns are usually used in combinations. We will compare and contrast the different design patters to better understand their use and interactions.

The course will also focus on real world applications of design patterns. We will look at open source libraries as case studies for the design patterns learnt in class. The applications will also look at trading systems as well as quantitative libraries.

Course Outline

There are a total of 8 lectures, each running for 3 hours.

Session Topics Readings Homeworks
1 Abstraction and Principles of OOD Lecturer handout hw1
2 Components of OOD and OOP Lecturer handout hw2
3 Design Patterns, Creational Patterns Lecturer handout hw3
4 Structural Patterns Lecturer handout hw4
5 Behavioral Patterns Lecturer handout hw5
6 Introduction to trading systems Lecturer handout hw6
7 Back Testing 1 Lecturer handout hw7
8 Back Testing 2 Lecturer handout hw8



Ramesh Kadambi

Ramesh Kadambi is a Vice President at Sumitomo Capital Markets as a Senior Quant Developer. Ramesh has worked in the financial industry since 1994. He began his career at Cooper Neff Technologies as a Mathematical Programmer, and then moved on to BNP Paribas, NASDAQ, Union Bank of Switzerland, Pipeline Trading and Citadel Securities. Ramesh has worked in various technical areas of the financial industry. Along the way Ramesh has implemented systems ranging from back office to High Frequency/Low Latency front office trading. Ramesh interests include design patterns, High Frequency Trading (HFT), application of GPUs to HFT, quantitative libraries and back testing frameworks. Ramesh received Masters degrees in the fields of Financial Mathematics (University of Chicago), Computer Science and Mechanical Engineering (Villanova University).

Language of Instruction







USD 2,400.00 for online participation.



Sep 7, 14, 21, 28, Oct 5, 12, 19, 26, Mondays, 8 – 11pm, EST (New York time) 2015


Recommended Readings

  1. The Object-Oriented Thought Process (4th Edition), Matt Weisfeld
  2. Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
  3. Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition), Alan Shalloway, James R. Trott
  4. Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
  5. Agile Software Development, Principles, Patterns, and Practices, Robert C. Martin



Please email sales@cqi.sg

$2,400.00 Add to cart