Data Abstraction and Problem Solving with C++, Walls and Mirrors, Second Edition,
Carrano, Helman, and Veroff; Addison Wesley, 1998
Understanding abstract data types (ADTs) -- lists, stacks, queues, binary trees, binary search trees, tables, priority queues, graphs -- and their implementation using C++ classes. Understanding the advantages of various ADT implementations and the efficiency of the algorithms used to implement those ADTs. Understanding the principles of object oriented programming (OOP) and design -- encapsulation, inheritance, polymorphism. Developing the programming skills required to deal with large programming projects and the ability to use advanced programming techniques such as recursion, the use of pointers, and C++ features such as templates.
Most classes will be conducted as programming workshops in which we analize problems, design algorithmic solutions to those problems, implement those solutions in the C++ programming language, and critique, extend, and rewrite those solutions. A special effort will be made during the course of the semester to familiarize ourselves with standard C++ programming environments on PC's (Visual C++), Macintoshes (CodeWarrior), and Linux computers (g++). As a result, during the course of the semester students will develop proficiency at using three of today's most important computer platforms.
class examinations 20%
final project / class presentation / final examination 30%
Programming projects in this course range from simple in-class exercises to extended student research projects with accompanying source code, documentation, and public presentations. The descriptions and due dates for the major programming projects are listed on the class schedule.
All programs must be completed. All assignments should be turned in at the
beginning of class on the due date listed. Late assignments will be penalized
10% for each day late. Every effort should be made to submit programs when
due since the time devoted to late programs has a negative impact on the
The Honor Code applies to all examinations and programs. Plagiarism is copying
or imitating the language and thoughts of others, whatever the medium (computer
program or written paper). All work on the exams and the pledged programs
must be done individually.
Attendance is required and is an important factor in doing well in the class.
All assignments must be completed, and the student is responsible for making
up any work missed due to absence. The Dean's Office will be notified after