This course will cover most of the major data structures and closely related algorithms: linked lists, stacks, queues, trees, binary search trees, heaps, graphs, searching, sorting. These are fundamental building blocks for developing algorithms and large applications.
The course will also teach all the essentials of C++, building on what students learned from a previous C course, and focusing on object oriented programming. In particular, the course will cover classes in C++, overloading of functions and operators, inheritance, templates, and dynamic arrays. Students will learn how to implement in C++ the above-listed data structures and much more.
Small programming exercises, at least two major programming assignments, and one relatively large programming project, will give students ample opportunity for hands-on experience and intimate understanding of the materials.
After completing this course, students will have gained strong programming skills and mastered fundamental concepts in design.