THIS PAGE IS PROVISIONAL. The hand1.ps or hand1.pdf documents contain the LATEST information about this course.


A course on algorithms and data-structures. Methods for the analysis of algorithms are introduced, algorithms for sorting, searching, and selection, and data structures that support fast and efficient information retrieval are presented (hashing, heaps and priority queues with applications to data compression, binary search trees, red-black trees). Greedy algorithms and dynamic programming-based techniques are introduced in the context of graph algorithms. Graph algorithms for traversals (depth-first, breadth-first), shortest-path problems, and spanning tree algorithms are also introduced. Introduction to NP-completeness.

Contact Information

INSTRUCTOR: Alex Gerbessiotis E-MAIL: alg435 AT cs.njit.edu
OFFICE: GITC 4213, 4th floor TEL: (973)-596-3244
OFFICE HOURS: Mon and Wed 10:00-11:00am, Mon 4:00-5:30pm    
OFFICE HOURS: By appointment some other time on Mon/Tue/Wed    
ASSISTANT: TBA on course web-page    
CLASS HOURS: Mon, 6:00-9:05pm, KUPF 206    

Course Web Page: http://www.cs.njit.edu/~alexg/courses/cs435/index.html

The following also works: http://web.njit.edu/~alexg/courses/cs435/index.html

Print Handout 1 from Web-page and compare the printout to this document! They must be identical.


Course Administration

Prerequisites
CS 114, CS 241 (the previous Math 226 has been phased out).

Textbook
T.C.Cormen, C.E.Leiserson, R.L.Rivest, and C. Stein. ``Introduction to Algorithms'', second edition, McGraw-Hill, ISBN : 0-07-013151-1. We abbreviate in class this second edition as CLRS.

CourseWork:
4 exams (including the final); programming assingments.

Grading scheme:
1000 points = PA(120)+ Ex1 (100) + Ex2 (333) + Ex3 (114) + Ex4(333). If a student collects 120 or more programming points,120 points will be added to the total;119 or fewer programming points will be discarded.

PA1-3
3 programming assignments will be handed out. Each one is worth 120 points. Doing all of them is optional but strongly recommended; programming points will enhance your final grade as long as you collect at least 120 of them.

Practice PS
Eight problem sets PS1-8 will be periodically posted along with their solutions. Exams 1 and 3 will be based on these problem sets.

Exams
Dates in Course Calendar. Exam 1 is closed-everything. The other three exams are open-textbook only. For the final, you might bring in class a clean copy of Handout 5 on red-black trees in addition to the textbook. Exam1 is on Mon Sep 28, 45mins, 100 points. Exam2 is on Mon Oct 12, 2hrs, 333 points. Exam3 is on Mon Nov 16, 45mins, 114 points. Exam4 is on Mon Dec 14, 2hrs, 333 points.

Exam Conflicts
This is a high-numbered course. In case of multiple exams on a same day, this exam has priority even if it is the last exam of the day.

Due Dates
Programs MUST be received by email by midnight the day they are due. No late work is accepted since there are given three assignment and the complete solution of just one can satisfy the point requirements.


Week  Mon         Assignment/Comments              
****  ***         ********************************
W1    8/31        PS1*       PA1-3out  
W2    9/ 7                            
W3    9/14        PS2*               
W4    9/21        PS3*
W5    9/28        Exam1,     PA1in
W6    10/5        PS4*               
W7    10/12       Exam2,     PA2in
W8    10/19       PS5*
W9    10/26       PS6*
W10   11/2        PS7*                  
W11   11/9       
W12   11/16       Exam3,     PA3in              
W13   11/23       PS8 
W14   11/30                         
W15   12/7        
W15   12/14       Exam4
*************************************************

* Problem Sets (PS) with solutions are not for credit.

The following describes a tentative list of topics that is intended to be covered in class. The code Ti refers to a topic. A topic may spread over one or more lectures. The code ALi refers to the ACM Computing Curricula 2001 topic description code. In parentheses, we provide an approximate number of hours per topic. Hour coverage may change depending on circumstances (eg. class pace, weather). Minimum time requirements of the topics covered are. AL1 (Basic algorithmic analysis):4, AL2 (algorithmic strategies): 6, AL3 (fundamental computing algorithms):12, AL6 (the complexity classes P and NP) optional.


Topics to be covered

T1 : AL1(1)/AL2(1)/AL3(1): Introduction, Algorithm Design Techniques (Incremental, Divide-and-Conquer)
T2 : AL1(2)/AL2(1)       : Sorting Algorithms (Insertion, Selection, BubbleSort, MergeSort)
                           Asymptotic growth of functions 
T3 : AL1(3)              : Recurrences
T4 : AL3(3)              : Brief Review on elementary data structures (Stacks, Queues, Trees, Lists)
T5 : AL2(2),AL8(1)       : HeapSort, PriorityQueues, Huffman Coding, and QuickSort 
                           (Worst-case and Average-case analysis)
T6 : AL3(2),AL8(1)       : Non comparison-based Sorting (Count-Sort, Radix-Sort, and Bucket-Sort). 
                           Lower bounds on comparison-based sorting. 
T7 : AL3(3)              : Selection. Selection in Linear Time.
T8 : Midterm.
T9 : AL3(3)              : Hashing, Balanced Binary Search Trees ( Red-Black Trees).
T10: AL2(2),AL3(1)       : Dynamic Programming and Chained Matrix Multiplication,Arithmetic Oprtns
T11: AL3(2),AL8(1)       : Union Find Algorithms; Introduction to Graph Algorithms
T12: AL2(1)AL3(2)        : Depth First Search,Breadth First Search,Minimum Spanning Trees.
T13: AL3(3)              : Shortest path Algorithms (Dijkstra and Floyd-Warshall)
T14: AL6(3)              : NP-completeness.

Any modifications or deviations from the posted dates, will be done in consultation with the attending students and will be posted on the course Web-page. It is imperative that students check the Course Web-page regularly and frequently.

Course Policies

Written Work
DO NOT USE pencils to write down your solutions; if you decide to use a pencil do not complain about grading.
Programs
Code must be ANSI compliant and compile on the test platform/compiler, otherwise the assigned grade will be 0. Check relevant handout for more information on the programming assignments.
Grading
Written work will be graded for conciseness and correctness. Use formal arguments. Be brief and to the point. Label solutions with problem/subproblem number clearly. Programming problems will be graded based on test instances decided by the grader on a test platform (Windows PC or Unix machine) of his choice. Do not expect partial credit if your code fails to run on all test instances. Do not expect partial credit if your code does not compile. Excess Programming points can be used to boost your exam grade (we account them separately).
Extensions
No extension will be granted for the programming assignments for any reason.
Grades
Check the marks in a written work and report errors promptly. Make sure you report such problems to the grader or the instructor within two weeks from receipt but no later than the Reading Day. If you believe a grade you received for the solution of a problem is not representative of your effort talk to the grader first and then to the instructor (if different).
Final Grade
The final grade is decided based on the 0 to 1000 point performance with an adjustment made based on programming assignment performance. A student who collects at least 500 points and completed the minimum programming requirements should expect a passing (C or D). 800 points or more are usually required for an A. The instructor reserves the right to push a student's grade up based on that student's quality of his/her programming effort.
Collaboration
Students who turn in solutions (programming or otherwise) that are derived from solution outlines of past assignments/homeworks, were obtained through the Internet, or are a product of another student's work, risk severe punishment, as outlined by the University. The work you turn in MUST BE your own personal work, composed and written by you. If you talk a problem with a fellow student cite this clearly in your homework (name the fellow student before the solution of the problem in question). Your work will then be compared to the other student's work to verify that your solution was written by you and reflect your own personal effort. If you don't report it, it will be considered a violation of the course rules. You are not allowed to exchange code for the programming part of a homework. Collaboration of any kind is NOT allowed in the in-class exams. Open-textbook refers to the textbook by Cormen Leiserson Rivest and Stein. Students are not allowed to exchange textbooks, course-notes or anything else including erasers, pencils, calculators etc.

Mobile Devices
Mobile phones/devices and/or laptops/notebooks MUST BE SWITCHED OFF before the class exams. Switch off noisy devices (eg mobile phones) before you enter the classroom for a lecture.

Email/SPAM
Send email from an NJIT email address. NJIT spam filters or us will filter other email address origins. Do not send course email to the instructor's email address unless there is a good reason (eg. you don't want the grader to read the email). Include CS 435 in the subject line then.

The NJIT Honor Code will be upheld; any violations will be brought to the immediate attention of the Dean of Students. Read this handout carefully!