Fall 2004
Dr. Herbert Tesser x2696
Room: Science 326
Email: tesser@marshall.edu
Office
hrs. Mondays
Tues 3:00 – 4:30
Wed.
Other times by appointment
IS 621 introduces the study of abstract data types (ADTs) and algorithms. The course builds on previous courses in programming. In this course we will:
This course introduces students to the design and implementation of data structures. These include arrays, stacks, queues, linked lists, heaps, trees and some work on graphs. We will also discuss analysis of algorithms, sorting, hashing, and memory allocation.
Students who successfully complete the course will:
Text: Abstract Data Types OR Visual Basic Algorithms
Authors: Dale, N. and Walker, H. Stephens, R.
Publisher Heath ISBN: 0-669-40000-9 Wiley, ISBN 0-471-24268-3
Supporting Texts (not required but it is highly recommended that you have at least one of the following texts)
Algorithms, Data Structures and Problem Solving with C++, by Weiss, M.A., Addison-Wesley, ISBN: 0-8053-1667-1
Or Data Structures and Algorithm Analysis in C, Weiss, M. A., Addison-Wesley, ISBN: 0-201-49840-5
Fundamentals of Computing II, by Tucker, A., et. al., McGraw Hill, ISBN: 0-07-065502-2
and the old standby – it might be out of print:
Fundamentals of Data Structures, by Horowitz. E. and Sahni, S., Computer Science Press,
ISBN: 0-914894020-X
This course is designed to be a three-credit course with three lecture hours per week and some laboratory experience.
The course will meet on Monday nights.
Several short quizzes and a midterm will be given during class.
There will be homework and projects assigned. Graded material will be returned during class hours.
Do!
This is a course dense with information content. It is necessary to come to class. If you can learn it on your own, save the money for tuition. I’m not a stickler about taking attendance, but … (fill in words-to-the-wise here).
The course is intended to be computer-language-independent. Homework and assignments may be submitted in any of the following languages: Visual Basic, C, C++, or JAVA (must be pure JAVA). While I’d like to keep things language independent, I won’t accept COBOL, Jupiter, Atlas, or any machine language.
Make certain that programs and media submitted are virus free. You should submit source code with any special compiler options noted. In general, try to use ANSI standards when applicable.
All work must be handed in before the end of class on the day it is due. At my discretion, late assignments will be penalized 10% of the maximum for each day late.
In extraordinary circumstances, I may accept late work without penalty. I will want documentation for the reason for lateness. The decision whether to assess a penalty rests with the instructor.
The graded elements of the course are:
Homework and Assignments 25%
Term exam(s) 40%
Final exam 35%
The final grade may involve a “curve”. I expect a grade above 90% will earn an “A”, between 80 and 90, a “B”, between 70 and 80, a “C”. Below 70% will earn an “F”.
There won’t be any makeup for exams. If you miss an exam you must have a verifiable, well-documented excuse. If I accept the excuse one of two things will happen:
· you will get an incomplete and be given an extra project which will have to be completed within a month of the end of class, or
· Your grade will be computed without the exam and scaled based on all your other work.
The instructor will choose which option applies.
If the excuse is not accepted, you will get a zero grade for the missed exam.
You know what you shouldn’t do. Don’t do it! If you are in doubt check with
me beforehand
Sharing ideas is one of the benefits of the educational setting. You are encouraged to work with no more than one classmate on homework and assignments. However, each participant must sign the document submitted. It is expected that all participants have contributed (approximately) equally to the collaboration.
All work on exams must be the product of individual effort.
|
Week |
Chapter |
Topic |
Homework Assignments |
Due Date |
|
8/23 |
|
Introduction, Concepts of Abstraction, Specification, Applications, and Realization |
|
8/30 |
|
8/30 |
|
Analysis of Algorithms,
Big O notation, typical growth rates, recursion, Common Examples (binary search, |
Ch. 2 {2,7,17} TBA |
9/13 |
|
9/6 |
|
Labor Day |
|
|
|
9/13 |
|
Generality in Algorithms, Language |
|
9/20 |
|
9/20 and 9/27 |
|
Abstract Data Types (ADT), specification, representation and notation, Examples (lists, stacks) |
|
TBA |
|
10/4 |
|
Exam |
|
|
|
10/11 |
|
Queues |
|
10/18 Proj.1 due |
|
10/18 |
|
Arrays – one and multi-dimensional, sequences. |
|
10/25 |
|
10/25 |
|
Examples: string searching, sorting (e.g. quicksort, mergesort) |
TBA |
TBA |
|
11/1 |
|
Introduction to trees, binary trees, heaps, Examples: expression trees, |
|
11/15 Proj 2 due |
|
11/8 |
|
Exam |
TBA |
TBA |
|
11/15 |
|
Binary trees, search trees, heaps, Examples and applications |
TBA |
TBA |
|
11/22 |
|
Static and Dynamic trees, |
|
|
|
11/29 |
|
Review and how to use session |
|
Proj. 3 due |
|
12/6 |
|
Final Exam |
|
|
[1] Copyright ©2001, 2002, 2003 Herbert Tesser as to this syllabus and all lectures. This syllabus, all lecture notes, and other materials are protected under copyright. You are prohibited from selling, lending, or giving notes provided in this course to or by any person or commercial firm without the express written permission of Dr. Herbert Tesser.