Textbook: Data Structures & Algorithm Analysis in JAVA Second Edition
By Mark Allen Weiss
Published by Addison-Wesley, 2006
Course Description: (Four Credits) The design of data structures for representing information in computer memory. Topics include: Abstract data types and their implementations; Stacks; Queues; Priority queues; Dictionaries; Sorting; Recursion. For more details, please see the list of topics at the end of this syllabus.
Prerequisites: The prerequisite for this course is Introduction to Computer Science I (V22.0101). You must have received a C or better in this course. If you received a C-, D, or an F, you will not be allowed to continue. If you have not taken that course you must see me in order to take a placement exam.
Grades: Your grade will be based on approximately six programming assignments, two midterm examinations, and a final examination. The programming assignments (and possible quizes) will count for 20% of your grade; the two midterm exams will count for 20% each, for a total of 40%; and the final exam will count for 40%.
E-mail Accounts: All students are required to have e-mail addresses, and e-mail will be used extensively for communication with the course tutors, and for submitting the homework assignments. Your e-mail headers and mailing list subscription information must clearly display your name. Do not use an alias instead.
Class mailing list: It is an absolute requirement of this class to join the class mailing list. All important annoucements will be sent to the class mailing list.
E-tutors and Computer Assignments: Our class has been assigned an e-tutor. E-tutors are upper-level undergraduate students with exceptional academic records. They are available by e-mail to help you with questions about the computer assignments, to evaluate your submissions, and to steer you in the right direction when help is needed. Solutions to assignments must be submitted by e-mail, on or before the due date. Your e-tutor will send you an e-mail giving a numerical grade for your program. The e-tutor will run the final program on various inputs, so it is important that the program work correctly for any choice of input.
Remember that although the e-tutor is there to help you, but is also helping many other students, so limit your e-mail communication to a reasonable amount. If you are have much difficulty with the programs, you should ask your instructor and/or TA for assistance.
Cooperation, Acknowledgments and Cheating: You are expected to do your own work. It is fine, in fact often very helpful, to work cooperatively with other students, but the work you submit should be your own. If you get an idea from another student, or from a tutor, that you use in your work, this is OK, but you must acknowledge that person in the program comments. When you turn in an assignment, you are saying that you have done this work yourself. See the Computer Science Department's Academic Integrity statement. Disciplinary action will be taken against those who violate the rules.
Students who spend little time on the homework invariably do poorly on exams and end up with a poor final grade.
Topics: This is a tentative list of the topics we will cover (note: most chapters will NOT be covered in their entirety):
- (Ch. 1.3) Recursion
- (Ch. 2) Asymptotic Analysis of Algorithms: We will just scratch the surface as we look at the efficiency of some of our structures and algorithms
- (Ch. 3) Lists, Stacks and Queues
- (Ch. 4) Trees
- (Ch. 6) Heaps
- (Ch. 7) Sorting
- (Ch. 5) Hashing
- (Ch. 10.1.2) Huffman Codes