CSc 345 (Analysis of Discrete Structures) Syllabus
Summer 2014

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: MTWR 9:00AM-10:30AM, GS 701
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 object-oriented 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
Class dates: June 9, 2014 - Start of classes
August 13, 2014 - End of classes
Final Exam: WEDNESDAY, August 13, 2012, 9:00 a.m. - 11:00 a.m. at GS 701. The final is comprehensive, required, and will be given on this date at this time. Schedule your travel plans accordingly.
Do note that the final exam will be two hours instead of the regular one and a half hour the class usually takes.

Class Personnel:

Name Office Email (.arizona.edu) Office Hours
Instructor Qiyam Tung GS 710 qwvako@email MTR 2PM - 3PM, W 3PM - 5PM
TA Sankar Veeramoni GS 721 sankar@email TW 1:30PM - 2:30PM

If you cannot make it to office hours, then you can contact me to make an appointment.

Information Resources:

Homepage: http://www.cs.arizona.edu/classes/cs345/summer14/
Textbook: A Practical Introduction to Data Structures and Algorithm Analysis, Edition 3.2 (Shaffer, self-published), 2012. Note that this book is free for downloading (follow that link).
Your CSc 245 textbook would be a useful reference (for proofs, in particular). Most likely, you used the Rosen book, Discrete Mathematics and its Applications
Discussion: We will use Piazza to discuss concepts and high-level questions about assignments.

Piazza is useful for keeping everyone on the same page (e.g. an ambiguous requirement in an assignment is clarified in the post).

As such, you are responsible for keeping up-to-date with Piazza posts. Failure to take a clarification into account for an assignment is not a valid excuse.

You may use it to discuss high-level ideas or ask for clarification from your peers about a particular homework problem. You may NOT use it to ask or post solutions to homework assignments. Additionally, it may prove useful as a place to prepare for an exam.

While posting solutions to homework problems is not permitted, you are free to post your own problems and solutions in preparation for an exam. If you are unsure whether your post is OK to post to everyone or not, e-mail me first.
Grade Record: We will use D2L for recording and calculating grades.
D2L has many features, but we will only use it to store grades and submit assignments. I will not check my D2L inbox so please do not send me any e-mail through D2L. Use Piazza to contact us.
Lecture Recordings:
I will be using Panopto to record lecture videos. You can find the link by by logging in to D2L -> clicking on "Content" -> clicking on "Link to Recordings". This will open the Panopto page. Note that you will need Silverlight to run it, so it will not work on a Linux machine.

Course Objectives and Expected Learning Outcomes:

Topics and Subtopics Sections In Text Sample Learning Objectives Date
1. Review Week 1 and 2
a. Mathematics and Proofs 2 • Know summation, sequence, and logarithmic identities
and knowing the basics of proofs.
b. Basic Data Structures 4 • Identify basic operations and efficiencies.
• Implement to solve basic tasks.
2. Algorithm Analysis 3 Week 1 and 2
a. Step counting • Understand efficiency on an operation-by-operation basis.
b. Asymptotic Analysis • Understand definitions for Big-O and related function sets.
• Be able to prove whether a function belongs to a particular set of functions.
3. Sorting and Searching 7 Week 3 and 4
a. Internal Sorting • Know the most common sorting algorithms, including insertion,
selection, shell, quicksort, and merge sort
b. External Sorting • Know how to sort large sets of data
c. Linear Searching and Hashing • Compare searching ordered and unordered sequences
• Describe the characteristics of a good hashing function
• Describe efficient implementations of hash tables and operations
4. Search Trees 5 and 13 Week 5 and 6
a. Binary Search Trees • Summarize basic properties of BST
• Compare and contrast implementations
b. AVL and Splay Trees • Learn operations and efficiencies of AVL and splay trees
• Distinguish from BSTs
c. 2-3 Trees • Understand how to balance a 2-3 tree
• Be able to compare and contrast with other trees
5. Heaps 5.5 Week 6
• Understand how the node are added and removed
• Be able to sort using a heap
6. Graphs 11 Week 7 and 8
a. Structure • Understand basic operations and implementations
b. Common algorithms • Understand how to find the minimum cost spanning tree (MCST)
and solve the single source shortest path (SSSP) problems.
7. Introduction to Algorithms 16 Week 8
• Be able to categorize algorithms by their families
8. Computation and its Limits 17 and lecture Week 8 and 9
a. Uncountability and the Halting Problem • Be able to describe the relation between uncountability and the halting problem.
b. Complexity classes and P vs. NP • Name algorithms for each category
c. Finite State Machines (Automata) • Be able to express languages as regular expression and as FSMs.

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

Important Dates (rough schedule):

Date Assigned Due
June 9 Homework 1
June 10 Participation 1
June 12 Participation 1
June 16 Homework 2 Homework 1
June 17 Participation 2
June 19 Participation 2
June 23 Homework 2
June 26 Day of Midterm 1
June 30 Homework 3
July 1 Participation 3
July 3 Participation 3
July 7 Homework 4 Homework 3
July 8 Participation 4
July 10 Participation 4
July 14 Homework 5 Homework 4
July 15 Participation 5
July 17 Participation 5
July 21 Homework 6 Homework 5
July 24 Day of Midterm 2
July 28 Homework 7 Homework 6
July 29 Participation 6
July 31 Participation 6
August 4 Homework 8 Homework 7
August 5 Participation 7
August 7 Participation 7
August 11 Homework 8
August 13 Day of Final

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://deanofstudents.arizona.edu/codeofacademicintegrity
• The Arizona Board of Regents list of Prohibited Conduct: https://azregents.asu.edu/rrc/Policy%20Manual/5-303-Prohibited%20Conduct.pdf
• The Arizona Board of Regents Student Code of Conduct: https://azregents.asu.edu/rrc/Policy%20Manual/5-308-Student%20Code%20of%20Conduct.pdf
In short: don't
I expect you all to complete all assignments individually unless explicitly stated otherwise. The links above list unacceptable behaviors. Having said that, I do encourage you all to discuss the high level topics and topics such as the assignment requirements. If you are unsure of what you are going to do is unacceptable or not, ask me first.

Grades and Grading:

Online section

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.


If this page looks familiar, that's because it was based on Dr. McCann's CS345 page.