CSCI 3110 - Summer 2019
Design and Analysis of Algorithms I


Instructor: Christopher Whidden
Office: CS 315
E-mail: cwhidden [at] dal.ca
Web page: http://www.cs.dal.ca/~whidden/CSCI3110
   
TA: Yuhan Fu (yh831319 [at] dal.ca)
Marker: Mozhgan Saeidi
Marker: Younan Gao

Class: TR 2:35-3:55 in DUNN 117
Tutorial: F 11:35-12:25 in DUNN 117
Office Hours: R 1:00-2:00 in CS 315
    and by appointment
       
Office Hours: M 11:00-12:00 in Learning Centre
    starting May 27
       
       

     
Online Syllabus: http://www.cs.dal.ca/~whidden/CSCI3110/syllabus.pdf

Notes:

This class covers techniques for the design and analysis of efficient algorithms and data structures. Topics include asymptotic analysis, divide and conquer algorithms, greedy algorithms, dynamic programming, data structure design, optimization algorithms, and amortized analysis. The techniques are applied to problems such as sorting, searching, identifying graph structure, and manipulating sets.

There are two prerequisite courses, CSCI 2110: Data Structures and Algorithms and CSCI 2112: Discrete Structures I, and you are expected to know the basic data structures and proof techniques from those courses. There is no real programming in this course. We will design efficient algorithms in high-level pseudocode and then analyze these algorithms to formally prove their correctness and efficiency.

The course is divided into 8 topics. The first one gives a general introduction to algorithm design, motivates it, and highlights a few central questions one can (and should) ask about a problem and an algorithm solving it. Along the way, we will review the mathematical skills you will need in this course and which you should have acquired in CSCI 2112. The next six topics introduce different paradigms for the design of algorithms, more or less in increasing order of difficulty. The final topic revolves around the question whether all problems can be solved efficiently using computers. More precisely, we will provide evidence that certain problems probably cannot be solved efficiently.

Textbook

Introduction to Algorithms (3rd edition) by T. Cormen, C. Leiserson, R. Rivest, and C. Stein
MIT Press (ISBN 9780262033848)

Assignments

Assignments are posted online on Tuesdays and are due in class on the due dates. Unfortunately, the Faculty of Computer Science is no longer offering drop boxes.

The best 8 of 10 assignment marks are counted.

    Posted Due
Assignment 1 Solutions May 14 May 23
Assignment 2 Solutions May 21 May 28
Assignment 3 Solutions May 28 June 4
Assignment 4 Solutions June 4 June 11
Assignment 5 Solutions June 11 June 18
Assignment 6 Solutions June 18 June 25
Assignment 7 Solutions June 25 July 2
Sample Midterm Solutions    
Midterm Solutions      
Assignment 8 Solutions July 9 July 16
Assignment 9 Solutions July 16 July 23
Assignment 10 Solutions July 23 July 30
Sample Final Solutions    

Topics and Tentative Schedule

Introduction   May 7  
Fundamentals Annotated May 7, 9  
Graph Algorithms Annotated May 14, 16, 21, 23  
Greedy Algorithms Annotated May 23, 28, 30, Jun 4, 6  
Divide and Conquer Annotated Jun 11, 13, 18  
Dynamic Programming Jun 18, 20, 25, 27  
Midterm Review   July 2  
Midterm Exam (in-class)   July 4  
Data Structures Annotated July 9, 11, 16 Lecture Notes
Randomization Annotated July 16, 18  
NP hardness Annotated July 23, 25  
Final Review   July 30  
Final Exam   Early August  

Class Notes

These notes are from Dr. Norbert Zeh teaching this course in a previous term. They are provided for review or if you have difficulty taking notes of your own.

Stable Matching
Efficient Algorithms
Graph Algorithms
Greedy Algorithms
Divide and Conquer
Dynamic Programming

Tutorials

Tutorials are on Fridays. A TA will show solutions to some practice questions related to recent lectures and current assignments. About one week before each tutorial, these practice questions will be posted on the course web page. The solutions will not be posted so you are encouraged to attend the tutorials and discuss the practice questions with the TA.

Tutorial 0 May 10 Hash tables and red-black trees are Chapter 11 and 13 of the textbook
Tutorial 1 May 17  
Tutorial 2 May 24  
Tutorial 3 May 31  
Tutorial 4 June 7  
Tutorial 5 June 14  
Tutorial 6 June 21  
Tutorial 7 June 28  
No Tutorial July 5  
Tutorial 8 July 12  
Tutorial 9 July 19  
Tutorial 10 July 26  

Evaluation

Assignments 40%  
Mid-Term 20% July 4 (In-class)
Final 40% Aug 3 1:00-4:00 McCain Scotiabank Auditorium

There will be about 10 assignments but only the best 8 assignments count, each with equal weight.
The final exam will be 3 hours long in early August; it is scheduled by the registrar.

If your final exam score is higher than the midterm exam score, your final exam score will be used in place of your midterm exam score. Then the final grade is A * 40% + max(M*20%+F*40%, F*60%)

The grade conversion scale in Section 17.1 of the Academic Regulations, Undergraduate Calendar will be used to determine the letter grade. Note that as of 2015, a minimum grade of C must be achieved in all required CS courses.

Late Policy

Late assignments are not accepted because they delay posting and discussing solutions and add extra time for marking.

If you are unable to write one or more assignments for valid, documented reasons such as a serious illness then your final exam score can be used to cover the marks for missing course work. Please contact the instructor if this applies to you.

Missed Exams

If you miss an exam, you will be given the opportunity to sit the exam at a later date. You must, however, present a good reason why you were not able to sit the exam at the regular scheduled time. Also, unless there are a large number of students who missed the regularly scheduled exam, make-up exams are oral exams, during which you will be asked to use a whiteboard to show your solutions. A teaching assistant or additional faculty members may be present during any oral exam.

Withdraw Dates

The last day to withdraw without a “W” is June 5th and the last day to withdraw with a “W” is July 5th.

Collaboration

You are allowed (but not required) to form study groups to work on homework assignments, and each group may have up to three students. Students in the same study group must hand in a joint assignment. No form of collaboration, however, will be allowed between students who are in different study groups. Collaboration between different groups will be treated and handled as plagiarism. After each assignment, you are free to start/disband/switch study groups for the next assignment, as long as you follow the above policy.

Academic Integrity

At Dalhousie University, we respect the values of academic integrity: honesty, trust, fairness, responsibility and respect. As a student, adherence to the values of academic integrity and related policies is a requirement of being part of the academic community at Dalhousie University. You can find more details on Dalhousie University's Academic Integrity web site: http://academicintegrity.dal.ca. More university required texts can be found in the online syllabus of this course.