# CS2810: Object Oriented Algorithms, Implementation and Analysis Lab

## Course information

**When**: Jan-May 2022**Lectures**: Slot P**Where**: Online**Teaching Assistants**: Harshit Kedia (cs17b103), Chuttar Ajay Sanjaylal (cs21m015), Jayesh Harishchandra Mahajan (cs21m023), Nitin Vikas Bahekar (cs21m039), Yashasvi Mahajan (cs21m076), Omkar Dilip Dhawal (cs21s042), Siddharth Dwivedi (cs20m065), Aswanth Kumar M (cs21m010), Shreyas Jain (cs20m063)

## Course Content

Basics of C++ programming.

Object-oriented design: Inheritance, polymorphism, templates, exceptions, STL.

C++ implementation of data structures and algorithms

## Grading

Mid-term: 20%

Final exam: 24%

Assignments: 7% each (Best 8 out of 10)

## Textbooks

Michael T. Goodrich, Roberto Tamassia, and David M. Mount. Data structures and algorithms in C++. John Wiley & Sons, 2011.

Scott Meyers, Effective C++: 55 specific ways to improve your programs and designs. Pearson Education, 2005.

Additional References

Robert Lafore. Object-oriented programming in C++. Pearson Education, 1997.

Mark A. Weiss, Data structures and algorithm analysis in C++. Pearson, 2014.

## Schedule

Lecture number | Topics Covered | Section reference |
---|---|---|

Lecture 1 | C++ basics | Chapter 1 of [Goodrich et al.] |

Lecture 2 | Inheritance | Section 2.2 of [Goodrich et al.] |

Lecture 3 | Polymorphism | Section 2.2 of [Goodrich et al.] |

Lecture 4 | Operator overloading revisited, Templates | Section 2.3, 5.1 of [Goodrich et al.] Chapter 7 of [S. Meyers] |

Lecture 5 | Inheritance+scoping, Exceptions | Chapters 6 and 7 of [S. Meyers] Chapter 14 of [R. Lafore] |

Lecture 6 | Friends, Static members and Streams | Chapter 12 and parts of Chapters 6,11 of [R. Lafore] |

Lecture 7 | STL Algorithms and Sequence Containers | Chapter 15 of R. Lafore’s book Parts of S. Meyers' ‘‘Effective STL'' |

Lecture 8 | STL: Associative Containers, Function Objects | Chapter 15 of R. Lafore’s book |

Lecture 9 | STL applications using maps | Section 4.8 of M. Weiss’s book |

Lecture 10 | Skip Lists and Sequences using C++ | Sections 9.4 and 6.3 of [Goodrich et al.] |

Lecture 11 | Dynamic Programming: Matrix chain and LCS | Section 12.2 of [Goodrich et al.] |

Lecture 12 | Applied Dynamic Programming | Chapter 1 of Bellman and Dreyfus's book |