As a continuation of CS 101, this course will enable students to build a better understanding on data abstraction and building larger programs. Object-Oriented Programming and different programming languages will be taught through the course. After this course, students should be able to distinguish and use different data structures to solve problems. Topic discussed in this course include: C++, Data Abstraction, Array-Based Implementation, Linked Lists, Stacks and Queues, Inheritance and Polymorphism, Object- Oriented Programing, C++ Standard Template Library, Recursion, Exceptions and Debugging, Searching and Sorting, Trees, Heaps, Tables, Graphs.