"I think that I shall never see a poem as lovely as a tree", Joyce Kilmer PHILADELPHIA UNIVERSITY COMPUTER INFORMATION SYSTEMS IS31 Algorithms and Data Structures (course by appointment – independent study form required) FALL 2005 Professor: Dr. Les M. Sztandera Office: 22 Gibbs Hall Tel: (215) 951-5356 Office hours: Tuesdays 5:30pm-6:30pm and Tuesdays/Thursdays 8:30am - 9:30am Weekly meetings to monitor progress: Thursdays 12:30pm-1:00pm Electronic mail: SztanderaL@PhilaU.edu Web page: http://faculty.philau.edu/SztanderaL Mailbox: Gibbs Hall Catalogue description: Study of advanced programming techniques and data representations, including recursion, stacks and queues; packaging data abstraction; advanced searching and sorting; files; binary search trees; analysis of algorithms and computational complexity; advanced data structures. Programming assignments will be submitted. The course replaces CS31. Prerequisites: IS10 Course objectives: To gain an understanding of algorithms, data organization and data abstraction. Familiarity with computability theory concepts, with programming languages used as a vehicle for expressing algorithmic ideas. Textbook: W. Collins, Data Structures, Mc-Graw Hill, 2003, 0-07-236965-5 References: lecture notes Grading: Midterm.........................................30% Homework Assignments............................10% Programming Projects............................30% Final Exam......................................30% Exams will be closed book and open notes. Grading Scale: Grading will be done on a straight scale as follows: 90-100....................................A 87-90.....................................A84-87.....................................B+ 80-84.....................................B 77-80.....................................B74-77.....................................C+ 70-74.....................................C 67-70.....................................C64-67.....................................D+ 60-64.....................................D 0-60......................................F Course policies: i) ii) iii) iv) v) vi) vii) Students must have taken the specified prerequisites for this course, or explicitly have the permission of the professor to take this course without them, in order to be enrolled. Deadlines for all assignments will be enforced. There is a penalty 10% per day for the late submission. In general, no late material will be accepted unless the work cannot be completed on time because of illness or other emergencies beyond the control of the student. No make-up examinations will be offered. If a student wishes to drop it is the student's responsibility to do so by the deadline. Academic dishonesty will not be tolerated. The submission of unoriginal or plagiarized work will result in a grade of zero (0) for the first offense, and an automatic grade of F for the course will be assigned for the second offense. This policy applies to all participants. Questions regarding the debugging of programming assignments will not be answered over the telephone. For such questions, bring a program listing as well as any other material (such as sample runs) that illustrates the problem over to the professor's office. I generally have an "open door" policy with respect to seeing students. My office hours are guaranteed times when I will be in my office, unless otherwise announced in class. I am willing to see students at other times by appointment and will see walk-ins if I am not busy. Walk-in visits should be limited to emergencies and quick questions only; if you have more to discuss please come to my office during office hours or make an appointment so I can make my plans accordingly. The following paragraphs summarize University and School policy on incompletes: An incomplete is given only for an exceptional reason for not completing the course (e.g., serious illness or other emergencies beyond the control of the student). Any such reason must be fully documented before an incomplete can be given. Any request for an incomplete grade must be approved by the Dean of the School. In the unlikely case that an incomplete is given, it must be made up with me. It is not possible to "sit in" on another faculty member's course and have that person give me the grade to turn in. (Any student attending any Computer Information System course must be registered for the course he/she is attending.) As a result of University and School rules concerning incompletes, incompletes in the Department of Computer Information Systems are rarely given. Course Outline: 1. Introduction a) Overview b) Why Study Algorithms? 2. Algorithm Design a) How to Design an Algorithm b) Example 1: Fibonacci Numbers c) Example 2: Matrix Addition 3. Static Data Structures a) Overview b) Arrays c) Ordered Lists d) Stacks e) Example Calculator f) Queues 4. Recursion a) Introduction b) Factorial Numbers c) Fibonacci Numbers d) Writing Recursive Functions e) Use of Recursion 5. Dynamic Data Structures a) Introduction b) Linked Lists with and without Pointers c) List Processing d) Stacks Revisited e) Dynamic Memory Allocation f) Simulation Example g) Doubly Linked Lists h) Generalized Lists 6. Trees a) Basic Principles b) Binary Trees c) Balanced Trees d) Threaded Binary Trees e) Applications of Trees 7. Graphs and Digraphs a) Introduction b) Internal Representation c) Traversals d) Spanning Trees e) Shortest Path Algorithm 8. Searching a) Introduction b) Sequential Searching c) Searching Ordered Tables d) Hashing 9. Sorting Techniques a) b) c) d) e) f) g) 10. Introduction Bubble Sort Selection Sort Insertion Sort Quicksort Heapsort Mergesort Advanced Data Structures a) Red Black Trees b) Decision Trees