Spring 2003
CIS
22/622
Data structures
Instructor Rave Harpaz
Email rbharpaz@sci.brooklyn.cuny.edu
Home page http://acc6.its.brooklyn.cuny.edu/~rbharpaz
Office 5316NE
Telephone 718-9515527
Office hours Before and after class, Mon+Wed 13:00-14:00
Textbooks Required
“Data
structures using C and C++ 2nd edition “
(by Langsam, Augenstien, Tenenbaum)
Any C++ book,
“Beginning C++” (by Ivor Horton) recommended
Attendance Although class attendance is not mandatory, you are responsible for whatever is done in class. While our textbooks cover most basic concepts, class is your only source for the specifics that will allow you to learn the material – and pass the class. Make sure you get the notes and assignments if you miss a class. You should get at least one other students phone number.
Grading Your grade will be determined by your performance on 3 in-class examinations and a number of programming assignments. Attendance is not mandatory but class participation will also be taken into account.
These will contribute to your grad as follows:
Programming assignments 20 %
Mid term #1 25 %
Mid term #2 25 %
Final exam 30 %
There will be a total of 5-6 programs assigned throughout the semester. Your programs will run on PC’s using any C compiler (Visual C++ Ver.6.0 or higher recommended) or on the Unix platform (up to you).
The programs will be assigned roughly every two weeks. Typically, each program will be due two weeks after it is assigned. There will be a penalty for lateness, 10 % per week late. Each program will be graded and returned to you, usually within a week.
All handouts and assignments are posted on my web page. You are
responsible to download them before each class meeting !!!
· Course overview
· CIS 15 review – advanced array and string handling, pointers, struct types, dynamic memory allocation, function parameter passing, the preprocessing phase, macros, header files, separate and conditional compilation, file I/O.
Mastering the review topics is essential in
order for you to proceed with the main topics of this course, without a thorough
understanding of these topics you will encounter difficulties with the
technical details (code) that are necessary to implement the concepts covered
in class.
· Introduction to data structures and ADT’s.
· Stacks – concept, applications, array implementation in C, infix/postfix/prefix expressions.
·
Recursion
· Queues – concept, array implementation in C, priority queues
· Introduction to C++ for data structures – A tutorial will be handed out and covered in class. The topic will be summarized by a C++ implementation of stacks.
· Linked lists – concept, nodes, linked lists, stack and queues as linked lists, ordered linked lists, array implementation, dynamic implementation, C++ implementation of: dynamic linked lists, dynamic stacks and queues.
· Advanced list structures, C++ implementation – introduction to Inheritance in C++, sorted linked lists, priority queues, list iterators, circular lists, doubly linked lists.
· Trees – concept, binary trees, traversing binary trees, expression trees, binary search trees, implementation in C and C++, array implementation, deleting from binary trees, threaded binary trees, general trees and forests.
· Sorting – efficiency considerations, O notation, bubble sort, quick sort, selection sort, insertion sort, binary tree sort, merge sort, heap sort, radix sort.
· Searching – search algorithms, index structures, hashing.