Fall 2002

**Official Course Description.** This course will further develop and
expand upon the topics introduced in CS 141. Advanced programming techniques
will be covered, with extensive use of recursion and dynamic data structures.
Abstract data types, including lists, queues, trees and graphs, will be studied.
Specific emphasis will be given to tree traversals and binary search trees.
Algorithms for searching and sorting will be explored along with methods of
comparative analysis. The topics in this course provide an essential foundation
for the further study of computer science.

**Prerequisites.** CS141 or equivalent.

**Location and Times.** Science Center 354, TuTh 4:00-5:30.

**Instructor.** Alexis Maciel. Science Center 379, 268-2385,
alexis@clarkson.edu.

**Office Hours.** M 3:00-4:30, Tu 3:00-4:00, W 10:00-11:30, Th
10:00-11:00.

**Required Text. **

- Frank M. Carrano, Janet J. Prichard,

**Course Objectives.**

- To learn fundamental programming concepts including data abstraction, basic data structures, dynamic data structures, basic notions of object-oriented programming, analysis of algorithms and recursion.
- To further develop coding and debugging skills.

- You will have a good understanding of the concepts mentioned in Objective 1 above.
- You will be able to design and implement C++ programs of a moderate size using data abstraction, basic data structures, dynamic data structures, basic notions of object-oriented programming and recursion.
- You will be able to implement basic data structures including lists, stacks and queues.
- You will be able to analyze the running time of simple algorithms.
- You will be able to implement and analyze basic algorithms for searching, sorting and tree traversal.

**Topics to be covered.** Data abstraction, classes, lists, stacks,
queues, trees, linked structures, object-oriented design, inheritance,
polymorphism, iterators, templates, analysis of algorithms, recursion, sound
programming principles and, if time permits, binary search trees.

**Grading. **You will be evaluated based on several homework assignments
(which will be mostly programming assignments), two quizzes, two tests and a
final exam. Your course grade will be computed using the following formula:

In addition, if you do better on the final exam than on one of your tests, your lowest test grade will be replaced by your final exam grade. Essentially, this allows you to make up for one bad test. Furthermore, your average grade on the tests and final exam will replace any lower grade on a quiz. This allows you to make up for a bad quiz or for one that you miss.

Tentative dates for the quizzes and tests are: September 17 (Q1), October 8 (T1), October 29 (Q2), November 14 (T2). All students are required to write the final exam (no exemptions).

**Policy for missed work.** There will be no make-up assignments or
quizzes. Late assignments may be accepted if a good excuse is provided and if
arrangements are made at a reasonable time, in advance, if possible. Make-up
tests can be arranged under the same conditions. Other special arrangements can
be made for students forced to miss more than a few days of class.