Spring 2004

**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 11:00-12:15.

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

**Office Hours.** M 10:00-12:00, W 2:00-4:00, Th 1:00-2:00.

**Teaching Assistant.** TBA. *Office Hours:* TBA, in the ITL lab
(SC334).

**Required Text. **None.

**Course Objectives.**

- To learn fundamental programming principles and techniques including data abstraction, elementary 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 principles and techniques mentioned in Objective 1 above.
- You will be able to use them in the design and implementation of C++ programs of a moderate size.
- You will be able to implement elementary data structures including lists, stacks and queues.
- You will understand the importance of using standard software components and will be familiar with the basic data structures and algorithms provided in the C++ Standard Template Library.
- 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, if time permits, tree traversal.

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

**Grading. **Your evaluation will be based on several homework
assignments, which will be mostly programming assignments, two tests, two
self-assessments of your performance on the tests, one for each test, and a
final exam. Your course grade will be computed using the following formula:

The final exam will be cumulative and can be used to make up for half of each test. The minimum grade you can get on a self-assessment is the grade you got on the corresponding test. Tentative dates for the tests are February 12 and March 25. All students are required to write the final exam (no exemptions).

**Policy for missed work.** There will be no make-up assignments. 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.