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 | 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:
| Programs | = | 30 | % | total |
| Homeworks | = | 20 | % | total |
| 2 Midterm Exams | = | 32 | % | total |
| Comprehensive Final Exam | = | 18 | % | |
| Total | = | 100 | % |
I use the common 90-80-70-60 grading scale. It's possible that final grade cutoffs will be lowered a little (from 90% to 88.5% for the bottom of the 'A' range, for example) but they will never be raised. I make such determinations only at the end of the term, after the final exam has been graded.
Attendance at the weekly section meetings is optional. Why? Because of the odd scheduling, we frequently have students who have a class that conflicts with the section meeting. Please attend if you are able to do so! The TAs will use the section to work additional examples, cover new topics related to lectures, answer questions about assignments, return and go over homeworks, programs, and exams, etc.
The Department of Computer Science labs in Gould-Simpson 228 and 930 will be available for your use for the programming assignments. Many students find it convenient to work on the assignments at home; I expect that all of the software we use in this class will be freely (and legally!) available for you to download and install on your home computer, or you can remotely connect (e.g., using PuTTY) to the lab systems from home. If you do decide to use a system outside of our department's control for your work, it's your responsibility to learn how to set it up and use it effectively. In addition, you'll be required to electronically transfer ("turnin") the source code to us before the due date. Expect us to compile and run your programs from the command line using Sun's JDK under Linux to verify their completeness and correctness, so be certain that your programs run completely and correctly in the lab before you submit it. (Why do we run them in this fashion? Simple -- we can automate some if not all of the execution of test cases this way, which makes grading easier and more consistent.)
Java 1.5.0 or later, unless otherwise specified.
My code documentation and style guidelines are available from the class web page. Documenting code is not the most enjoyable activity you'll ever experience, but it is important to do, and to do well. Program documentation/style is worth 25 - 30% of your score on a program.
For ease of grading, in addition to the electronic submission, we will require the submission, on the due date and time, of a physical, printed, on paper copy of your program source code. We do this because it is easier to write comments about your documentation (and programming style) on paper, and more useful to write such comments next to the appropriate portions of the program.
Each programming assignment will have a clearly stated due date and time. Typically, the time will be five minutes after the start of lecture on the due date. Electronic submissions received after that time will be considered late. Programs submitted within the first 24 hour period after the due date and time are considered to be one day late. Submissions received within the next 24-hour period are two days late, etc. Any day of the week, including Saturdays, Sundays, and all holidays, count as days for the purpose of determining lateness.
At the start of the term, you are granted five no-penalty late days for use on programming assignments only. Each time a program is submitted late, you will lose no points until you have exhausted your late days. When your late days have been exhausted, you will lose 20% per day that the program is late. After five such deductions, your score for that program will be zero.
For example, if a program is due at noon on the 12th but you submit your code at 12:30 p.m. on the 13th, it is considered to be two days late. If you had three late days remaining, you'd lose two of them but would still be able to earn full credit on the assignment if it works correctly and is well-structured and well-documented. If you had only one late day remaining, you'd lose it and 20% (that is, your program will be graded out of a maximum of 80%).
Late days used are determined by the times of your electronic program submissions. Late hand-in of program printouts will likely result in a point penalty.
Final detail: No matter how many late days you have saved, we do not plan to accept any programs after 11:59 p.m. on Reading Day. (By that point, you need to focus on your final exams.)
You are expected to thoroughly test your programs before submission to verify that they handle the expected variety of inputs properly. If your program does not successfully perform the required tasks, you should not submit it for grading. In most cases, you would be better served by using a late day or two so that you can submit a complete program, rather than losing points.
Should your program fail to perform properly when tested, points will be deducted based on the severity and quantity of the errors. The deductions for each type of error will be determined for each programming assignment and will be applied consistently to all submitted programs. If you feel that a program was graded improperly, please see the grader to discuss your concerns.
To help you master the course concepts more fully than is possible by implementing programs, we will also be assigning a few written homework assignments.
We expect your written work to have your answers clearly marked, to include sufficient detail to enable us to follow your reasoning, and to be legible so that we can easily read your words, understand your explanations, and decipher your diagrams. Difficulties in these or any related areas will likely result in a loss of points.
You are encouraged (but, at least initially, not required) to learn and use the scientific document preparation package LaTeX 2e to typeset your homework submissions. Not only will this help you produce readable answers, you will be ready for future classes and research papers that require the use of this tool. LaTeX 2e tutorials and samples will be provided.
On the due date, turn in what you have accomplished, whether or not it is complete. Late days may not be used on homework assignments; they are available for programming assignments only. If you feel that you deserve an extension of the due date based on exceptional circumstances, contact me and I will consider your request.
Each problem will be worth a certain number of points. A complete, correct, and legible answer will receive full credit. We will award partial credit to incomplete and/or semi-legible answers when appropriate. Homeworks that are not submitted by the due date will receive no points. If you feel that your homework was graded improperly, please see the grader to discuss your concerns.
Exam formats will be fairly consistent throughout the semester. Exams will consist primarily of short answer and problem-solving questions, but code-writing questions are also possible. The use of calculators or other electronic devices is NOT permitted on exams unless warranted by special circumstances.
I expect all students to take the exams at the announced exam times. I give make-up exams only in extreme circumstances. I decide if a circumstance is "extreme." For example, being in a documented car accident on the way to the exam is likely to count as an extreme circumstance. Circumstances that are not considered to be extreme include losing a cell phone, breaking up with a significant other, forgetting to set/heed an alarm clock, having a runny nose, etc. Please be aware that missing a midterm exam isn't necessarily a disaster; see below.
I will schedule midterms when I feel that we've reached suitable points in the lecture material. Midterms will focus on the material covered in class, on the homeworks, and by the programs since the time of the previous midterm (or the start of the term in the case of the first midterm). As new material in this class usually builds upon the old, you should expect that your knowledge of material covered by previous exams will be necessary for success on subsequent exams.
Regrade Requests: After midterm exams are graded, they will be returned to you and you may keep them. We will also review the exam, either in class or in section. If you feel that your exam was graded improperly, prepare a brief memo that explains which problems concern you and why. Submit your exam (not a copy) and the memo to me. I will regrade the entire exam, paying particular attention to the problems you highlighted in the memo. Because errors in grading can cause scores to be too high as well as too low, it is possible that your grade will go down as a result of the regrade. Be sure to review your entire exam before you ask for a regrade.
The final exam will be given at the time stated in the class schedule. (I have also placed it near the beginning of this syllabus. If you see that I have listed the exam time incorrectly, please let me know.) The final will be comprehensive and will have a format similar to that of the midterms. If you miss the final under less than extreme circumstances, you will receive a score of zero for the final.
At the end of the semester, I will replace your lowest midterm exam score with a percentage-equivalent copy of your final exam score, but only if the final score is higher than at least one of your midterm scores. (Thus, this is a potential bonus but never a penalty.) I do this to reward you for demonstrating an improved mastery of the material over the course of the semester. However, it can also help you if you should miss a midterm because your car broke down, your alarm clock didn't go off, you had a disfiguring zit, or any other non-extreme quirk of fate. Please note that should you miss multiple midterms under sub-extreme circumstances, you will definitely get a zero for those additional missed midterms.
If room capacity permits, leave a seat vacant between you and your neighbor. If need be, we will reseat students before or even during an exam to maintain an honest evaluation environment for all students.
Miscellaneous Class Policies:
The instructor and the TAs will attempt to reply to email and newsgroup postings from students within 24 hours. This means that if you wait until the evening before an assignment is due to send or post a question, you may not get a reply before the due date and time. There's a classic sentence that covers this: A failure to plan on your part does not constitute an emergency on our part. We want to help, but like you, we have tasks other than email that require our attention.
There will be no opportunities for extra credit points. Use your time to concentrate on doing well on the assigned work. If your grade in this class is important to you, start taking this class seriously now, not just after you do poorly on the first exam. Additional late days for assignments may be offered as incentives under special circumstances.
| See Also: | • Accommodation of Religious Observance and Practice: http://dos.web.arizona.edu/uapolicies/ouap4.html#religion |
All holidays or special events observed by organized religions will be honored for those students who show affiliation with such religions, Absences pre-approved by the UA Dean of Students office will be honored. No matter the reason for missing class, the student is always responsible for the missed material.
| See Also: | • Audit Policy: http://catalog.arizona.edu/2007-08/policies/audit.htm |
If you are auditing this class, you may attend lecture and you may attend your assigned weekly section. You can turn in programs and homeworks only if the TAs agree to accept them. You may not take exams.
Miscellaneous University Policies:
| See Also: | • Spring 2008 Dates and Deadlines: http://www.em.arizona.edu/datesDeadlines/datesDeadlines.aspx?t=081 |
If you find yourself thinking about dropping this (or any other) class, first make sure that that's what you really want to do. Chatting with me, a TA, or your academic adviser may help. If you drop within the first four weeks of the semester, there will be no notation on your transcript; it will be as though you'd never enrolled. During the fifth through the eighth weeks, a drop will be recorded on your transcript. You will receive a "WP" (withdrawn passing) only if you were passing the class at the time of your drop. After the eighth week, dropping becomes a challenge, because you need to explain to me and to your dean why you were unable to drop the class during the first half of the semester.
| See Also: | • Office of Curriculum and Registration Grading Policy Manual: http://www.registrar.arizona.edu/gradepolicy/incomplete.htm |
| • UA General Catalog's Grades and the Grading System: http://catalog.arizona.edu/2007-08/policies/grade.htm |
The university's course catalog contains all of the details about incompletes, but here's the key sentence:
| The grade of I may be awarded only at the end of a term, when all but a minor portion of the course work has been satisfactorily completed. |
To qualify for an incomplete, a student must have maintained a passing grade for the class until the term is nearly complete, and then, due to an unusual and substantiated cause beyond the student's control, the student is unable to complete the class work. In short, you can't get an "I" just because you aren't happy with your grade.
| See Also: | • UA Disability Resource Center Student Services: http://drc.arizona.edu/learn/index.html |
| • UA SALT Center: http://www.salt.arizona.edu |
The university and the Disability Resource Center (DRC) have asked all instructors to include the following text in class syllabi:
| If you anticipate issues related to the format or requirements of this course, please meet with me. I would like us to discuss ways to ensure your full participation in the course. If you determine that formal, disability-related accommodations are necessary, it is very important that you be registered with Disability Resources (621-3268; drc.arizona.edu) and notify me of your eligibility for reasonable accommodations. We can then plan how best to coordinate your accommodations. |
Additional help is available from the UA Strategic Alternative Learning Techniques (SALT) Center. SALT provides fee-based services for students with various learning disabilities.
Under the guidelines of the Rehabilitation Act of 1973 and the Americans with Disability Act of 1990, students are obligated to notify the school that they need accommodation.
| See Also: | • UA Policy on Threatening Behavior by Students: http://policy.web.arizona.edu/~policy/threatening.pdf |
If you're upset with me or a TA, please come talk with us about your concerns. The university takes a very dim view of antisocial behaviors on campus.
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.