CS477/677: Analysis of Algorithms

Spring 2020

General Information Course Description Syllabus Assignments/Grading Announcements



Instructor: Monica Nicolescu

E-mail:monica@cse.unr.edu
Office:SEM 239
Phone:(775) 784-1687
Office hours: Tuesday 10am-noon, Thursday 9:30-10:30am, and by request

Teaching assistant: Tawfiq Chowdhury

E-mail:mtawfiqc@nevada.unr.edu
Office: Lab C in ECC, SEM
Office hours: Friday: 10am-noon

Time and Place

Tuesday, Thursday: 1:30-2:45pm, MIKC 107

Required Textbook

Introduction to Algorithms, Third Edition, 2009.
Authors: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein



Course description

The design and analysis of algorithms is the core subject matter of Computer Science. Given a problem, we want to (a) find an algorithm to solve the problem, (b) prove that the algorithm solves the problem correctly, and (c) prove that we cannot solve the problem any faster. Designing an algorithm for a computational problem involves knowledge of the problem domain, a thorough knowledge of the data structures that are available and suitable and no small measure of creativity. This course concentrates on the above problems, studying useful algorithmic design techniques, and methods for analyzing algorithms.

Prerequisites

CS 302 with a "C" or better; CS 365 or EE 291.



Syllabus [PDF]

Following are the topics that will be discussed, listed in the approximate order in which they will be covered.
  • Introduction/Mathematical Foundations (Chapters 1, 3, Appendix A)
  • Recurrences (Chapter 4)
  • Sorting Algorithms (Chapters 2, 8)
  • Randomized Algorithms (Chapters 5, 7, 9)
  • Data Structures (Chapters 6, 11, 12, 13, 14)
  • Greedy Algorithms (Chapter 16)
  • Dynamic Programming (Chapter 15)
  • Graph Algorithms (Appendix B4, Chapters 22, 23, 24, 25)
  • Selected Topics (Chapters 28, 30, 31, 34, 35)

Class schedule

The topics presented and the lecture notes for each class will gradually be posted below as we cover them in the class. The assignments and their due dates will also be posted in this table. Please check this web page regularly for updates.

For homework submission please include a typed cover sheet with your name, section number and homework number. It would be desired to type the rest of your homework, but handwriting will be accepted. You can find instructions about writing your homework with LaTeX at LaTeX Project. A template for writing your homework solution with LaTeX has been kindly provided by Nolan Warner (download).


Date Topic Readings Assignments

Jan 21

Introduction Chapter 1, Appendix A ---

Jan 23

Asymptotic notations [notes] Chapter 3 ---

Jan 28

Induction, solving recurrences [notes] Chapter 4 Hw1

Jan 30

Solving recurrences [notes] Chapter 4 ---

Feb 4

Solving recurrences, analysis of sorting algorithms [notes] Chapter 2 Hw2

Feb 6

Analysis of sorting algorithms [notes] Chapter 2 ---

Feb 11

Analysis of sorting algorithms, Mergesort [notes] Chapter 7 Hw3 [Submission]

Feb 13

Quicksort Chapter 9 ---

Feb 18

Quicksort, The selection problem [notes] Chapter 8 ---

Feb 20

The selection problem, Sorting in linear time Chapter 13 Hw4

Feb 25

Heaps Chapter 13, 14 ---

Feb 27

Red-black trees Chapter 14, 15 Hw5
Mar 3 OS-Trees, Interval Trees Chapter 15 ---
Mar 5 Mid-term review [notes] --- ---
Mar 10 MID-TERM --- ---
Mar 12 Mid-term review, Dynamic programming Chapter 15 ---
Mar 24 Dynamic programming Chapter 15 ---
Mar 26 Dynamic programming Chapter 16 ---

Mar 31

Dynamic programming Chapter 16 ---
Apr 2 Dynamic programming [notes] Chapter 16 Hw6
Apr 7 Greedy algorithms Chapter 16 ---
Apr 9 Greedy algorithms [notes] Chapter 22 ---
Apr 14 Greedy algorithms, Graph algorithms Chapter 22 ---
Apr 16 Graph algorithms Chapter 22, 23 Hw7
Apr 21 Graph algorithms Chapter 23 ---
Apr 23 Graph algorithms Chapter 23 Hw8
Apr 28 Number theoretic algorithms Chapter 23 ---
Apr 30 NP-Completeness, Approximation Algorithms Chapter 25 ---
May 6 Final Review Chapter 25, 35 ---

May 7

12:10-2:10pm

Final Exam: comprehensive, with emphasis on material after mid-term

--- ---



Assignments and grading

Homework assignments: There will be approximately 8 homework assignments. The homeworks and their due dates will be posted on the course web page. Homeworks are due on their specified date at the beginning of the class. Some assignments will contain extra-credit problems and some may have a programming component. For each assignment the undergraduate students are required to solve the problems labeled U-required, while graduate students are required to solve all the problems. For the assignments that include extra-credit problems, the undergraduate students can earn extra-credit by solving either the extra-credit or the graduate level problems.

Please make sure that you have a CS department computer account - you will need it for the programming assignments. You can obtain a CS department account by filling out the account registration form at the CS department.

Late policy: each late homework will incur a 10% penalty for each day of delay, but no homeworks may be submitted later than 3 days after the deadline.

Academic integrity: Students are encouraged to study together, however each student must individually prepare his/her solutions. Cheating or plagiarism are not permitted and will be sanctioned according with the UNR policy on Academic Standards. You should carefully read the section on Academic Dishonesty found in the UNR Student Handbook (copies of this section are on-line). Your continued enrollment in this course implies that you have read it, and that you subscribe to the principles stated therein.

Exams: there will be one mid-term and one final exam. Both exams will be closed books, closed notes. Permission to take exams on other dates than scheduled will not be given, except for extreme medical emergencies.

Grading policy (tentative, subject to change):
Homework: 35%
Mid-term: 30%
Final exam:30%
Class participation:5%




Announcements

Announcements regarding the assignments or other updates will be sent via Canvas. Please check the e-mail account you have on file with MyNevada, as this is the address I will use to contact you. If needed, implement e-mail forwarding.