This course presents further techniques of object oriented programming and problem solving, with emphasis on abstraction and data structures. Topics include: object oriented concepts, such as, composition, inheritance, polymorphism, information hiding, and interfaces; basic program design and correctness, such as, abstract data types, preconditions and post conditions, assertions and loop invariants, testing, basic exception handling, and the application of algorithm design techniques. The course also covers: basic algorithmic analysis, time and space tradeoffs in algorithms, big-O notation; fundamental data structures and applications, such as, collections, single- and double-linked structures, stacks, queues, and trees; performance issues for data structures; recursion, more sorting algorithms. |
Course Learning Outcomes:
1) Students will be able to understand and apply the basic principles of object-oriented programming including encapsulation, inheritance, polymorphism, and object re-use.
2) Students will be able to understand and use the following data structures: linked lists, stacks, queues and trees.
3) Students will be able to design recursive solutions for problems.
4) Students will be able to develop an intuitive understanding of algorithms complexity.
3.000 Credit hours
3.000 Lecture hours
Schedule Types: Lecture, Tutorial
Computer Science & Mathematics Division
Computer Science Department