i. Create awareness of and experience in object-oriented programming discipline.

- Understand the meaning of and the usage of object oriented programming

- Learn basics of object oriented programming and class definition.

- Learn recursive algorithms and argument passing

ii. Create awareness of and experience in dynamic memory management.

- Understand the meaning of and the usage of memory and dynamic memory.

- Learn to create and delete dynamic memory.

- Use dynamic memory in various data structures.

iii. Learn fundamental data structures with their searching, insertion and deletion

capabilities.

- Learn array data structure.

- Learn stack and queue data structure.

- Learn linked list and tree data structure.

- Learn graph data structure.

- Learn hash coding.

- Learn searching, insertion and deletion in the covered data

iv. Learn fundamental sorting algorithms with their complexity analysis.

- Understand the meaning of sorting.

- Learn sorting algorithms (selection sort, bubble sort, quick sort, radix sort).

- Compare the algorithms in terms of their complexity.

v. Create awareness of and experience in algorithm complexity.

- Understand the meaning of algorithm complexity.

- Learn Big-O, Ω, Θ complexity analysis details.

- Perform complexity analysis for various algorithms.

vi. Create awareness of and experience in computational complexity.

- Understand the meaning of computational complexity

- Learn decisison problems, P, NP, NP complete, NP hard problem classes, relation betwwen these classes and problem reduction