April 23: Assignment 6 solutions are available online.

If you wish, you may download a printable version of the Syllabus.

- Michael Goldwasser
- Email:
`mhg@cs.luc.edu` - Office: DH 319 Lake Shore Campus
- Phone: (773) 508-2883
- Hours:
- Tuesdays, 5:00-5:45pm
- Thursdays, 12:00-1:00pm (Note the change from original syllabus)
- or by appointment

- Introduction to Algorithms, Second Edition
- Thomas H.Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
- Copyright 2001
- ISBN:
- 0-07-013151-1, McGraw-Hill

- Text's Websites:

The text should be available both at the Barnes and Noble campus bookstore, as well as Beck's Bookstore, or various online book vendors. A list of other useful reference books is included below.

A solid background in formal mathematics will prove invaluable for this course, in that we will argue rigorously about the correctness and performance of almost every algorithm and data structure we introduce. The ability to write clear and formal proofs will be relied upon heavily throughout the course.

Many of our algorithms will need to use more basic data structures as building blocks, and although we will try when possible to review the earlier material, we expect that students will have seen many of these concepts previously.

The assignments will generally be of the ``pen and paper'' variety,
due at the beginning of a class meeting. **They will be
challenging.** You will have at least two weeks per assignment and we
strongly suggest that you utilize the entire period in developing your
solutions.

The policies on collaboration, academic honesty and late assignments are outlined later in this handout.

You should not discuss such problems with anyone other than the instructor, nor should you search for direct or indirect assistance from any outside references.

Even in this situation, students must not
search for direct or indirect assistance
from any outside references. Furthermore, **the write-up of your
solutions must still be done individually, in entirety.**

Our philosophy is that there are two distinct stages in working on each problem. First is reaching a point where you understand how to solve the problem, and second is formally writing up your solution in a clear way for a reader to understand.

For problems where we allow collaboration, you are only allowed to collaborate on the first of these stages. Discussions with your peers are very helpful in understanding new material, and working through the puzzle of a new problem. You may therefore feel free to discuss with classmates general ideas, approaches, examples or stumbling blocks while trying to understand a homework problem.

However, when it comes time to write up your solutions, you may not discuss this in any way with others, nor may you use anyone else's written solution as a guide. Our goal is that you will eventually be able to understand the problem so clearly that you are then able to lock yourself in a room with a blank piece of paper and produce a clear written explanation of your solution.

When you do collaborate with classmates, you must work in groups of at
most __four__ students, and must write the names of all
collaborators for that problem at the beginning of your solution.

When it comes to learning and understanding the __general
material__ covered in class, you may certainly use other references
and you may have discussions with other students in this class or
other people from outside of this class.

For written homework assignments, you must strictly follow the guidelines given in the policy on collaboration. For either designation of problems, you must not use or search for direct or indirect solutions using any outside references, including but not limited to:

Any violations of the general Loyola policy or the policies outlined in this handout will be dealt with severely. Penalties will apply as well to a student who is aiding another student. Any such violations will result in a minimum penalty of a zero on the given assignment which cannot be dropped, and severe or repeated violations will result in an immediate failing grade in the course. Furthermore all incidents will be reported in writing to both the department and the appropriate dean.

Homeworks will always be assigned so that they are due at the beginning of a class meeting. In order to keep students up-to-date on the material (and to allow prompt return of graded material), students are most strongly encouraged to turn in all assignments on time. Printed solution sets will generally be distributed the same day assignments were due.

Late homeworks will be accepted, however with penalty. A late homework will be penalized 20% immediately and an additional 10% for each day that has expired beyond the deadline. Please keep in mind that the policy on Academic Honesty still applies, and thus students submitting late assignments must not use the distributed solution sets either directly or indirectly.

The ``acceptable'' level of detail depends very much on what we are asking you to do in a given problem. Anything that is directly related to the ``focus'' of the particular problem should be proven clearly. In doing so, you may omit proofs of facts which have been seen earlier in this course, or which have clearly been assumed to be part of the prerequisite courses. A reasonable expectation is that your proofs would be clear to a a typical student of this class who is familiar with the course material, but not familiar with the particular problem.

Regarding material covered in prerequisite courses, only assume as
``obvious,'' things which we may safely assume that everyone knows and
which are not the focus of the problem you are solving. For example,
if you are designing an advanced algorithm and you need to sort *n*
items, then of course you may simply say that this can be done in *O(n
log n)* worst case time, without explanation. If you have a sorted
array of *n* items and you want to locate an item, you can simply
state that you will use binary search, and this required *O(log n)*
time.

Solutions should be neat and legible. While you should not feel obligated to recopy your work to make it picture perfect, you should do your scratchwork elsewhere.

- The Design and Analysis of Computer Algorithms
- Alfred V. Aho, John E. Hopcroft and Jeffrey D. Ullman
- Addison Wesley, 1974
- ISBN 0-201-00029-6

- Data Structures and Algorithms
- Alfred V. Aho, John E. Hopcroft and Jeffrey D. Ullman
- Addison Wesley, 1983
- ISBN 0-201-00023-7

- Programming Pearls (second edition)
- Jon Bentley
- Addison Wesley, 1999
- ISBN 0-201-65788-0
- Supplemental Website

- Computers and Intractability: A Guide to NP-completeness
- Michael R. Garey and David S. Johnson
- W. H. Freeman & Co, 1979
- ISBN 0-7167-1044-7

- Data Structures and Algorithms in JAVA (second edition)
- Michael T. Goodrich and Roberto Tamassia
- John Wiley & Sons, 2001
- ISBN 0-471-38367-8

- Algorithm Design: Foundations, Analysis and Internet Examples
- Michael T. Goodrich and Roberto Tamassia
- John Wiley & Sons, 2001
- ISBN 0-471-38365-1

- Approximation Algorithms for NP-Hard Problems
- Dorit S.\ Hochbaum
- PWS Publishing Company, 1997
- ISBN 0-534-94968-1

- The Art of Computer Programming, Volume 1: Fundamental Algorithms (third edition)
- Donald E. Knuth
- Addison Wesley, 1997
- ISBN 0-201-89683-4

- The Art of Computer Programming, Volume 2: Seminumerical Algorithms (third edition)
- Donald E. Knuth
- Addison Wesley, 1998
- ISBN 0-201-89684-2

- The Art of Computer Programming, Volume 3: Sorting and Searching (second edition)
- Donald E. Knuth
- Addison Wesley, 1998
- ISBN 0-201-89685-0

- Randomized Algorithms
- Rajeev Motwani and Prabhakar Raghavan
- Cambridge Press, 1995
- ISBN 0-521-47465-5

- Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching (third edition)
- Robert Sedgewick
- Addison Wesley, 1998
- ISBN 0-201-35088-2
- Note: Similar book exists for C and Java

- Algorithms in C++, Part 5: Graph Algorithms (third edition)
- Robert Sedgewick
- Addison Wesley, 2001
- ISBN 0-201-36118-3
- Note: Similar book exists for C and upcoming for Java

- An Introduction to the Analysis of Algorithms
- Robert Sedgewick and Philippe Flajolet
- Addison Wesley, 1995
- ISBN 0-201-40009-X

- Data Structures and Network Algorithms, CBMS 44
- Robert Endre Tarjan
- SIAM, 1983
- ISBN 0-89871-187-8

Last modified: 23 April 2003