CSc 345 (Analysis of Discrete Structures) Syllabus
Spring 2008


[Catalog] == [Personnel] == [Resources] == [Outline] == [Dishonesty] == [Grades] == [Class Policies] == [University Policies] == [Caveat]


General Catalog Information:

Description: Introduction to and analysis of algorithms and characteristics of discrete structures. Course topics include algorithm analysis techniques, recurrence relations, structural induction, hierarchical structures, graphs, hashing, and sorting.
Lecture: Tuesdays and Thursdays, 9:30 a.m. - 10:45 a.m., CHVEZ 111
Recitation: Fridays, 12:00 p.m. - 12:50 p.m., CHVEZ 111
The recitation section is run by the TA(s). Its purpose is to give you the opportunity to work on more examples that tie in with the lecture topics, to ask questions about things you saw in recent lectures that you didn't fully understand, and to get clarifications on homework and programming exercises. Other things will happen in section, too, such as returning and reviewing homework assignments.
Prerequisite(s): CSc 127B (Introduction to Computer Science, 2nd Semester) or CSc 227 (Program Design and Development); CSc 245 (Introduction to Discrete Structures) or MATH 243 (Discrete Mathematics in Computer Science); or consent of instructor.
In particular, you are expected to know the Java programming language; to be able to design, code, and debug programs consisting of hundreds of lines of code; to understand and use basic common algorithms (e.g., sorting) and data structures (e.g., stacks); and to understand and write formal proofs.
Credits: 4
Final Exam: Tuesday, May 13, 2008, 8:00 a.m. - 10:00 a.m. The final is comprehensive, required, and will be given on this date at this time. Schedule your travel plans accordingly.

Class Personnel:

Name Office Email Phone Fax Office Hours
Instructor Lester I. McCann, Ph.D. G-S 809 mccannl@acm.org 621-3498 621-4246 T 2-4pm; W 3:30-4:30pm; F 3-4pm
TA Swaminathan (Swami) Sankararaman G-S 710 swami@cs.arizona.edu 621-4089 621-4246 M 1:30-2:30pm; T 4-5pm
TA Tapasya Patki G-S 710 tpatki@cs.arizona.edu 621-4089 621-4246 T 1-2pm; W 11am-12pm

The weekly recitation section is lead by the graduate teaching assistants (TAs). The TAs successfully completed this or a similar class (or classes) and know the material well. TAs are paid by the university to help me help you learn the material. In addition to leading the section each week, each TA helps with the grading of homeworks, quizzes, exams, and programs, and meets with me regularly to discuss the class and to plan future activities. TAs are there to help you; please seek out their help when you feel you need it.

It is possible to meet with us outside of office hours. Please contact us to make an appointment.

Information Resources:

Homepage: http://www.cs.arizona.edu/classes/cs345/spring08/
Textbook: Algorithm Design (Goodrich, Tamassia), Wiley, 2002.
You may also find Discrete Mathematics and its Applications 6/e (Rosen), McGraw-Hill, 2007, to be a handy reference.
Newsgroup: cs.course345 on the server news.cs.arizona.edu. Check this newsgroup 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. See http://www.cs.arizona.edu/computer.help/policy/newsgroups.html for information on configuring mail clients (esp. Pine and Thunderbird) to access the CS news server.

Course Objectives and Expected Learning Outcomes:

Topics and Subtopics Sections In Text Sample Learning Objectives
1. Review
a. Basic Data Structures 2.1, 2.2, 3.1 • Identify basic operations and efficiencies
• Implement to solve basic computing tasks
b. Mathematics and Proofs 1.3 • Know summation, sequence, and logarithmic identities
• Identify and follow the logic of fundamental varieties of proof
• Construct complete proofs of conjectures
c. Relevant Features of Java 1.5 Lecture • Recognize the utility of these additions
• Construct programs that appropriately employ these additions
2. Algorithm Analysis
a. Step-Counting and Code Profiling Lecture • Identify which algorithm components are most responsible for efficiency
• Use a code profiler to identify inefficient code
b. Asymptotic Analysis 1.1, 1.2 • Know and apply Big-O and related concepts
• Perform asymptotic analysis of algorithms
c. Recurrence Relations 5.2, Lecture • Demonstrate ability to solve recurrence relations
• Know and apply the Master Theorem
3. Graphs
a. Representation 6.1 -- 6.4 • Compare and contrast adjacency lists and matrices
b. Graph Algorithms 7.1 -- 7.4 • Perform and implement BFS and DFS traversals
• Describe and apply SSSP algorithms and MCSTs
4. Sorting
a. Internal Sorting 4.1 -- 4.7 • Demonstrate mastery of common algorithms
• Identify algorithm strengths and weaknesses
b. External Sorting 14.1.3, Lecture • Use external sorting to solve large data arrangement problems
5. Hashing
a. Internal Hashing 2.5 • Describe the characteristics of a good hash function
• Describe efficient implementations of hash tables and operations
b. External Hashing Lecture • Apply hashing principles to the operation of disk--based hashing
6. Search Trees
a. Review of Binary Search Trees 3.1 • Summarize basic properties and operations of BST
• Compare and contrast implementation options
b. AVL and Splay Trees 3.2, 3.4 • Distinguish these structures from BSTs
• Show understanding of basic operations
• Demonstrate ability to create efficient implementations
c. Optimal Binary Search Trees Lecture • Describe Optimal BSTs
d. 2-3, 2-3-4, 2-3-4-...-n Trees 14.1.2, Lecture • Contrast these trees with BSTs and their kin
• Understand extension to B-trees
• Decide when to use trees or hashing for searching
7. Heaps
a. Binary Heaps 2.4, 2.6 • Know operations and preferred implementation
• Apply heaps to sorting
b. Additional Varieties of Heaps Lecture • Describe d-heaps, leftist heaps, etc.
8. Algorithm Families
a. Backtracking, Approximation, etc. 5.1 -- 5.3, 13.5 • Categorize algorithms by family of common solution algorithm
9. Finite State Machines & Reg. Expr.
a. Languages Lecture • Define languages using regular expressions
b. Finite Automata Lecture • Define FSMs
• Represent FAs with transition diagrams
10. P, NP, and Undecidability
a. P vs. NP 13.1 -- 13.4 • Define P, NP, NP-Hard, and NP-Complete
• Name algorithms from each category
b. Undecidable Problems Lecture • Distinguish solvable and unsolvable problems

Topics may be added, removed, or reordered as time and circumstances dictate.

Academic Dishonesty (i.e., Cheating):

See Also: • The Department of Computer Science Course Policy on Collaboration: http://www.cs.arizona.edu/policies/collaboration.html
• The University of Arizona Code of Academic Integrity: http://dos.web.arizona.edu/uapolicies/cai1.html
• The Arizona Board of Regents list of Prohibited Conduct: http://www.abor.asu.edu/1_the_regents/policymanual/chap5/chapter_v.htm#5-303
• The Arizona Board of Regents Student Code of Conduct: http://www.abor.asu.edu/1_the_regents/policymanual/chap5/chapter_v.htm#5-308

Most, if not all, assignments in this class will be individual assignments, to be worked on outside of class. All individual work assigned to you in this class is to be completed only by you. It is not acceptable for you to `borrow' (a.k.a. steal, copy, coerce, etc.) solutions or parts of solutions from other people or have other people write part or all of your solutions for you. However, it IS acceptable (and encouraged!) for students to help one another understand the assignment requirements and to help one another track down logic errors in exercises. In short, do your own work, but feel free to discuss problems with each other. Of course, you may always ask me or a TA, but don't expect that we'll just hand you solutions; we'll make you work for them.

The class policy on cheating is simple: If we determine that your work was turned in by another student, or we determine that you turned in the work of another person or persons, all students involved will receive at minimum a zero on that entire assignment. Additional sanctions are possible should additional information come to light. The CS department exchanges information about academic integrity violations with the office of the Dean of Students. If you have a history of violations, the penalty is likely to be much worse than just a zero on the assignment. Multiple violations in this class will result in a failing grade at minimum. I take academic dishonesty very seriously, as you should be able to tell; we expect you to take it just as seriously.

If you are not familiar with them, please take the time to read the references linked above. Ignorance of the policies is not an acceptable excuse for their violation. For your convenience, here is the section of the University's Code of Academic Integrity entitled "Prohibited Conduct":

Conduct prohibited by the Code consists of all forms of academic dishonesty, including, but not limited to: cheating, fabrication, facilitating academic dishonesty, and plagiarism as set out and defined in the Code of Conduct, ABOR Policy 5-308-E.10 and F.1; submitting an item of academic work that has previously been submitted without fair citation of the original work or authorization by the faculty member supervising the work; modifying any academic work to obtain additional credit in the same class unless approved in advance by the faculty member; failure to observe rules of academic integrity established by a faculty member for a particular course; and attempting to commit an act prohibited by this Code. Any attempt to commit an act prohibited by these rules shall be subject to sanctions to the same extent as completed acts.

The bottom line: Do your own work. If you have any doubts, please come talk with us -- before you do anything you might regret.

Grades and Grading:

Miscellaneous Class Policies:

Miscellaneous University Policies:

Caveat:

The above schedules, policies, and procedures are subject to change. Whenever possible, changes will be announced to the class before the on-line version of this document is altered.