Introduction to C++: Abstract data types, classes, members, objects, inheritance, templates, polymorphism and pointers Asymptotic complexity and running time analysis of algorithms Pointer and dynamic variables: Concepts and usage of pointers, pointer parameters to/from functions, pointer arithmetic, pointer-style array representation, dynamic memory allocation \& deallocation Lists, Stacks, Queues and Binary Trees: Implementation using arrays, pointers, and operations (insertion, deletion, search) on them Sorting Algorithms: Bubble sort, Merge Sort If time permits: Basic concepts in the hardness and computability of problems - P, NP, NP-Complete and Undecidable classes of problems