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.
There are a total of 8 lectures, each running for 3 hours.
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).