CSc 345 Analysis of Discrete Structures


Time and place Lectures: Tuesdays and Thursdays 2:00-3:15am, Chavez 110
Section: Friday 11:00-11:50am, Chavez 110
Instructor Stephen Kobourov, Gould-Simpson 715


Office hours Tuesday 3:30-4:30pm, Thursday 3:30-4:30pm, and whenever my door is open.
Teaching Assistants Jay Patel, GS 710
phone: (520) 621-4089
email: jaypatel@cs.arizona.edu
Office Hours: Monday 4:30-5:30pm, Wednesday 4:30-5:30pm

Shirley Palani, GS 710
phone: (520) 621-4089
email: shirley@cs.arizona.edu
Office Hours: Thursday 9:00am-10:00am, Friday 9:00-10:00am

Updates

Announcements and updates

Description The emphasis of this course is on data structures and efficient implementations of algorithms that use them. In the process of learning and practicing methods of data structures and algorithm design, we will see many examples of important algorithms.

Some of the data structures we will study are stacks, queues, trees, tries, and heaps. Algorithms considered will include sorting, searching, and hashing. We will also learn about graphs, graph algorithms, asymptotic notation, and algorithm analysis.

Prerequisites Grade of C or better in CS 245, or MATH 243, or permission of the instructor.
Required text Algorithm Design by Goodrich and Tamassia, Wiley, 2002.
(While $90 at Amazon.com, this textbook is also available used for about $35 at places like ABEBooks.com.)
Optional text There are lots of data structures textbooks out there. If you plan to take CS445, I suggest "Introduction to Algorithms" by Cormen, Leiserson, Rivest and Stein.
Homework Assignments Homework Assignment 1 Assigned 08/27/09; Due 09/08/09. Solutions
Homework Assignment 2 Assigned 09/08/09; Due 09/17/09. Solutions
Homework Assignment 3 Assigned 09/17/09; Due 09/28/09. Solutions
Homework Assignment 4 Assigned 09/29/09; Due 10/07/09.
Homework Assignment 5 Assigned 10/13/09; Due 10/22/09. Solutions
Homework Assignment 6 Assigned 10/22/09; Due 11/03/09. Solutions
Homework Assignment 7 Assigned 11/03/09; Due 11/17/09. Solutions
Homework Assignment 8 Assigned 11/17/09; Due 12/01/09.
Syllabus The course is organized into eight parts. After each topic below are the relevant chapter numbers from the text. Not all material covered in class will be in the textbook (e.g., Bloom Filters). The syllabus below is only an outline and very likely to change.

I   Background

  • Introduction: Abstract Data Types, asymptotic notation (1)
  • Elementary Data Structures: linked lists, stacks, queues (2)

II   Trees and Heaps

  • Trees and Binary Trees: representations, traversals (2)
  • HeapSort, Priority queues: building and maintaining heaps (2)

III   Balanced Search Trees

  • Search trees and Skip Lists: querying, insertion, deletion (3)
  • Variants: AVL, Splay, Red-Black: properties, rotations (3)

IV   Sorting

  • Simple Sorting and Quicksort: description, performance, analysis (4)
  • MergeSort and Radix sort: description, performance, analysis (4)

V   Hashing

  • Hashing: open and closed hashing (2)
  • Bloom Filters: description, performance

VI   Advanced Data Structures

  • Union-Find: disjoint set operations (4)
  • Implementations: Performance and efficiency (4)

VII   Graphs

  • Representations: adjacency list, adjacency matrix (6)
  • Searching: Breadth-first search, depth-first search (6)

VIII   Graph Algorithms

  • Single Source Shortest Path (7)
  • All Pairs Shortest Path (7)
Exams There will be one midterm exam and one comprehensive final exam:
  • Midterm Exam: Tuesday October 13, 2:00am-3:15pm.
  • Final Exam: Thursday December 17, 2:00-4:00pm.
Grading
50%   Homework Assignments
20%   Midterm Exam
30%   Final Exam
Your final grade will be based on the percentage of all available points that you receive. To give you an idea of how percentages might translate into letter grades, here is a typical example. I do not claim that the grade cutoffs for this class will be the same. These cutoffs are merely to give you an idea of how I have graded in the past. I reserve the right to fail any student who has a failing average for either assignments or exams.
  • A: 91-100
  • B: 81-90
  • C: 66-80
  • D: 50-65
  • E: 0-50
Homework Assignments There will be about 8 homework assignments. A written description of each homework assignment will be posted on the class webpage.

Late homework will not be graded for credit. Written homework is due at the start of class on the designated date and programming assignments are due at 11:59pm on the designated date. Assignments turned in after the deadline are not accepted and result in a zero for that assignment. Yes, this lateness policy is harsh. Why? Because in the past, those who have fallen behind have had a devil of a time catching up. So we are trying to prevent you falling behind. In the past, I have had students complain that they could have handed in something substandard on time and gotten more points than if they had handed in something really good a little late. Too bad. It is up to you to plan your time carefully and get your work in on time! You have been warned. I will not entertain complaints. If you have extenuating circumstances, talk to me as early as possible. If you speak with me well before the due date, requests will be considered reasonably. The closer to the due date it gets, the less likely I am to give you extra time.

Writing guidelines for the homework assignments should be observed. Neat and concise solutions are required in order to receive full credit for your solutions. If you cannot solve a particular problem, state this clearly in your write-up, and write down only what you know to be correct; rambling at length about ideas that don't quite work may cause additional points to be deducted.

Programming guidelines should also be observed.

Instructions for the turnin program.

Extra credit: Most homework assignments will suggest extra credit work. Extra credit in this course will be tallied separately from regular scores. If you end up on the borderline between two grades at the end of the course, extra credit will count in your favor. However, failure to do extra credit will never be counted against you, as grades are assigned on the basis of regular scores. You should do extra credit if you find it interesting and think that it might teach you something. On the other hand, it is not wise to skimp on the regular assignment in order to do extra credit.

Academic Integrity Any work that is submitted by a student for credit is expected to be that student's, and that student's alone. You may discuss your homework assignments with your classmates, the tutor available during tutorial hours, and with me. In fact, I recommend discussing ideas and approaches to problems with your classmates. However, you should write up your own written homework solutions and should not read or copy the solutions written by others (in this or previous terms). For more details, see the Computer Science Departmental Course Policy on Collaboration and the University of Arizona Code of Academic Integrity.

Any attempt to pass off someone else's work as one's own is considered to be cheating. Using material from a textbook, journal, or other such "external" source without proper acknowledgment, is considered to be cheating. Cheating will not be tolerated: cheating or helping another student cheat will result in a failing grade for this course. If you have any questions about academic integrity and how it relates to CSs 345, please come speak with me.

Attendance Attendance will be expected, but not recorded. Students are fully responsible for all material presented or assigned in class. For this reason, attendance is strongly recommended.
Newsgroup Check the newsgroup cs.course345 on the server news.cs.arizona.edu frequently, as this is where the class personnel will post assignment clarifications, due date changes, etc. In addition, students are allowed and encouraged to post (and answer) questions. Information on configuring mail clients (e.g., Thunderbird) to access the CS news server can be found here.
Communications Every day of the week, either the instructor or the TAs have office hours -- stop by if you have questions about lectures, homework, etc. If the question is about grading, please see the person who did the grading (TAs for homework, instructor for exams). When emailing us use the cs345@cs.arizona.edu alias to ensure that all of us get the message. We will attempt to reply to email and newsgroup postings from students within 24 hours. This means that if you ask a question in the evening before an assignment is due you may not get a reply before the due date and time.
Students with Disabilities I encourage students with disabilities, including "invisible" disabilities such as chronic diseases and learning disabilities, to discuss with me any appropriate accommodations that I might make on their behalf.