Computer Science 257

Data Structures

Catalog Description

Recursion, data abstraction, algorithm design and analysis, and the implementation of large programs.


Chris Parrish
Office: Woods Laboratories 120

Time and Location

Tuesday, Thursday, 8:00 a.m.
Final Examination: 14 Dec 2001, 2 p.m.
PC Lab in DuPont Library and Linux Lab in WL136

Course Topics and Schedule

CprS 257 Schedule and Class Notes, by Marcia Clarkson
CprS 257 In-Class Programming Workshops, by Chris Parrish


Data Abstraction and Problem Solving with C++, Walls and Mirrors, Second Edition,
Carrano, Helman, and Veroff; Addison Wesley, 1998

Course Objectives

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.

Course Format

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.


homework 30%
programs 20%
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 next assignment.

Honor Code

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 two absences.