CS333-A0 Algorithms (Fall 2009)

Department of Computer Science

SUNY at Binghamton

Instructor:

Dr. Lijun Yin

Time:

T, R  10:05am-11:30AM

Location:

Science Building 2 (room 140)

Office:

T18

Office Hours:

T, R (9:00am – 10:00am)

Email:

lijun@cs.binghamton.edu

Web Page:

http://www.cs.binghamton.edu/~lijun/CS333_Fall2009/2009Fall_CS333.html

TA:

Mr. Nitin Deshmukh" nitin.deshmukh@gmail.com; "Shawn Canavan" <scanava1@binghamton.edu>

Office Hours:

Nitin Deshmukh: W: 2:00pm – 4:00pm Office: T5  (Engineering Building)

Shaun Canavan:  M, W: 1:00pm – 2:00pm  at N1 (Engineering Building)

Lab Session (ACT 50)

R: 11:40am – 1:05pm (Science Library 310)

Email:

nitin.deshmukh@gmail.com; scanava1@binghamton.edu

Blackboard

http://blackboard.binghamton.edu

Course Description

Analysis of common algorithms for processing strings, trees, graphs and networks. Comparison of sorting and searching algorithms. Algorithm design strategies: divide and conquer, dynamic, greedy, backtracking, branch and bound. Introduction to NP-completeness and parallel algorithms.

 

Prerequisites: CS240 and Math314.

 

Textbooks Recommended

We will be using the following major books as texts: 

  • [1] T. Cormen, C. Leiserson, R. Rivest and C. Stein, Introduction to Algorithms. (Second Edition). McGraw-Hill. 2001 (ISBN: 0-07-013151-1).
  • [2] R. Neapolitan and K. Naimipour, Foundation of Algorithms Using C++ Pseudocode (Third Edition). Jones and Bartlett, 2004 (ISBN: 0-7637-2387-8)

References:

  • [3] Neapolitan R. and Naimipour K., Foundation of Algorithms Using C++ Pseudocode, (Second Edition). Jones and Bartlett, 1998 (QA9.58 .N43 1998) (on reserve)
  • [4] Baase S, Computer Algorithms- Introduction to Design and  Analysis, 3rd , Addison-Wesley, 2000. (QA76.6 B25) (on reserve)
  • [5] Skiena S. S., The Algorithm Design Manual, Springer-Verlag 1998. (QA76.9.A43S55, on reserve)
  • [6] Sedgewick Robert, Algorithms in Java parts 1-4, 3rd edition, Addison Wesley, 2003 (QA6.73.J38 S4, on reserve)
  • [7] Sedgewick Robert, Algorithms in Java part1 5, 3rd edition, Addison Wesley, 2004 (on reserve)
  • [8] Sedgewick Robert, Algorithms in C++ parts 1-4, 3rd edition, Addison Wesley, 2002 (on reserve)
  • [9] Sedgewick Robert, Algorithms in C++ part1 5, 3rd edition, Addison Wesley, 2004 (on reserve)
  • [10] Brassard, Gilles, Fundamentals of Algorithmics, 1st ed. Prentice Hall, Aug. 1996 (QA9.58 .B73, on reserve)

Requirements

Your grade will be based on the following criteria:

  • Assignments (Theory and Programming) (41%)
  • Quizzes (10%)
  • Class attendance (4%)
  • Mid-term exam (20%)
  • Final exam (25%)

Computer Facilities

The assignments must be done on Bingsuns with C/C++.

Syllabus

Please note that this syllabus is approximate, and subject to change.

Date

TopicS

READINGs

AssignmentS

LABS

9/1

Introduction

[1] Ch.1 and Class Notes(1)   

 

 

9/3

Analysis and problem size

[1] Ch.2 and Class-notes(2) 

 

 

09/8

Cont’d and counts

[2] Ch.1.1-1.3, class-notes (3)

 

 

09/10

Asymptotic growth functions

[1] Ch. 3 and Class-notes(4-5)

[2] Ch.1.4

 

 

 Assignment 1

 Sample Input/Output

 

Review of basic searching algorithms (sequential, binary); sorting algorithms (merge-sort, exchange sort, …)

Review of mathematical induction, logarithms, sums of series.

[1] Chapter 3, 51-56,  Math review
[1] Appendix A           Induction

09/15

Asymptotic growth functions and proving correctness

 

[1] Ch.2 17-19 and Class notes (6)

 

 

09/17

Recurrence

[1] Ch.2 17-19 and class notes (7-8)

 

Review of growth function and recurrence

 

09/22

Recurrence (cont’d)

[1] Ch. 4

 

 

09/24

Divide and Conquer

[1] Ch.7; [2] Ch.2  Class notes(9-10)

 

Assignment 2

 

Review of Assignment 1

 

9/29

Cont’d

 [1] 33.4 and supplemental material

   

 

Quiz-1

 

10/1

Cont’d and Heap sort

[1] Ch.6; [2] Ch. 7.6

Class notes(11-12)

 

Review of Quiz-I

10/6

Dynamic Programming and Optimality

[1] Ch.15

[2] Ch.3  Class notes (13-14-15)

 

 

10/8

LCS

 

 Assignment 3

 

 

 

10/13

Floyd Algorithm

 

 

 

 Review of Assignment 2

 

10/15

Binary search trees and Memoization

[2] Ch.3.1

[2] Ch.3.2, Ch.3.5

 

[1] Ch.15

 

Quiz-II

10/20

Cont’d and

Graphs

[1] Ch.22

Class-notes (16-17-18)

 

 

10/22

Graphs traversals

[1] Ch.22

 

Review  of Quiz-II

Review of Assignment 3

 

10/27

Cont’d

 

 

 

10/29

Greedy

[1] Ch.16;  [2] Ch.4

Class-notes (19)

Assignment 4

Prepare for mid-term

 

 

11/3

Cont’d

 

  

 Mid-term exam

11/5

Prim’s algorithm

 

[2] Ch.4.1, Ch.4.2

[1] Ch.23.2

Class-notes (20-21)

 

Review of mid-term exam

 

 

11/10

Disjoint union set and Kruskal's algorithm

[1] Ch.21, Ch.23.2

[2] Ch.4.1, Appendix C

Class notes (22-23)  

 

 

11/12

Cont’d and Amortized Analysis

Class notes (23b)

 Assignment 5

 

11/17

Dijkstra’s algorithm

 

[1] Ch.24.3

[2] Ch.4.2 

Class note (24)

 

 

Review of Assignment 4

11/19

Knapsack Problem

 [2] Ch.4.5; [1] Ch.16.2

Class note (25)

 

 

11/24

Backtracking

Branch and bound

[2] Ch.5 and Class notes (26)   

 

[2] Ch.6.1.2

 

 

12/1

 NP-Completeness

[2] Ch.9

Class notes (27-28)

  Assignment 6

Review of Assignment 5

 

Quiz-III

12/3

NP-Completeness

[2] Ch.9

 

 

Quiz –III    (review)

12/8

Traveling Salesman problem

 

 

Approximation algorithm and Parallel algorithm (wrap-up)

[2] Ch.3.6, Ch.9.5.1

Class notes (29-30)

 

 

[2] Ch.9.5.1, Ch.11

 

Review of Assignment 6

 

Review questions for final exam 

 

 

12/10

Cont’d

 

 

 

 

12/16

Final Exam

 

 

Final Exam

12/16/2009

11:00

13:00

EB N25

Advice

·        The standard rules on plagiarism apply.  Late assignments will not be accepted (unless approved by the instructor).

·        Students must take each quiz and exam on the scheduled date and time.

·        It is important to attend all the classes and lab sessions. The purpose of  lab sessions is to

    • Clarify the material taught during the regular lectures (Please prepare questions to ask during Lab)
    • Reinforce the understanding of concepts discussed in the lectures
    • Review solutions of the homework assignments
    • Provide additional examples of applying various algorithms
    • Provide students with opportunities to present and discuss their work
    • Provide supplemental material

·        The criteria of grading theory assignments are based on (1) correctness; (2) clearly written and analysis, and (3) correct solutions which would result in efficient code.

·        The criteria of grading programming assignments are based on (1) correctness of solution and the analysis (including a general explanation of the main algorithm, justification of the data structure used, computation time analysis), (2) efficiency in terms of time and space, and (3) readability of the code (including comments on functions, variables and major operations, etc.)  TA will post grades in blackboard for CS333 (http://blackboard.binghamton.edu/)

  • Read the recommended chapters and class-notes for each lecture; Start working on your assignment early; Prepare well for the quizzes and exams. Good luck!