THIS PAGE IS BEING UPDATED. The hand1.ps or hand1.pdf documents contain the latest information about this course.

DISCLAIMER/NOTE: This is an automatic conversion of the PDF document hand1.pdf; in case there are inconsistencies between this online document and hand1.pdf/hand1.ps the latter will be followed and considered correct. This online page is for your convenience only.

Sequential and parallel algorithms for numerical and combinatorial problems will be discussed. The use of randomization in the solution of algorithmic problems will be explored. Applications to be considered will include string matching, polynomials and FFT algorithms, sorting networks, algebraic computations and primality testing and factoring, matrix operations, randomized algorithms for sorting and selection, and data compression. Search-indexing data structures (inverted lists) will be examined. Web ranking algorithms such as Google's PageRank, and Kleinberg's HITS will also be discussed. Topics in computational geometry will be examined.

Contact Information

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

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

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

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


Course Administration

Prerequisites
CS 610.

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.

Other
R. Motwani and P. Raghavan. `` Randomized Algorithms'', Cambridge University Press.

CourseWork
Five homeworks HW1 to HW5 each one worth 250 points. The best 4 of 5 only count, so you can miss one. Programming problems related to the material covered in class will be given; you can substitute points gained from programming for regular points. Bonus points can also be gained.

Grading scheme
1000 points is the target maximum. You are to be given at least a C if you collect at least 500 points, at least a B if you collect 650 points, and an A if you collect at least 850 points.

Exams
There are no exams.

Extra work
Bonus points and programming assignments can be used.

Due Dates
Written homeworks are due by the beginning of a class. Programs must be received by email by midnight the same day.

Late work
25% per day starting from 6:05pm for homeworks and 00:05 for programming assignments. No exceptions (only 4 of the 5 count towards the final grade). No emailing of late homework!


Tentative Course Calendar

Week        Wed   Homework Status
****        ****  **********************************
W1          9/ 5                 
W2          9/12  HW1 out         
W3          9/19                   
W4          9/26  HW2 out     HW1 in
W5         10/3                        HW1 returned 
W6         10/10  HW3 out     HW2 in
W7         10/17                       HW2 returned
W8         10/24  HW4 out     HW3 in
W9         10/31                       HW3 returned
W10        11/7   HW5 out     HW4 in
W11        11/14                       HW4 returned
W12        11/28              HW5 in 
W13        12/5                        HW5 returned 
W14        12/12                      
W15        12/19                       
***************************************************

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 demand and circumstances (eg. weather).

AL3 : Fundamental Computing Algorithms  (15 hours)
AL8 : Advanced Algorithmic Analysis     (10 hours)
AL6 : Complexity                        ( 3 hours)
AL9 : Cryptographic Algorithms          ( 5 hours)
Al10: Geometric algorithms              ( 3 hours)
AL11: Parallel algorithms               ( 6 hours)

Topics to be covered

T1 : AL3  : Representation of Polynomials, Polynomial evaluation with and without preprocessing.  
            Lower bounds for polynomial evaluation. Exponentiation. Polynomial algorithms for multiplication (Karatsuba's Algorithm). 
T2 : AL8  : Polynomial Interpolation and Convolution. DFT and FFT and FFT implementations. Applications to information hiding.
T3 :AL8/9 : Arithmetic algorithms (eg. Euclid's algorithm) and the bit model, solution of modular equations, 
            Chinese Remainder Theorem, Power raising through repeated squaring, primality testing (Miller-Rabin algorithm), 
            Pollard's rho method for integer factorization.  Public key cryptography and the RSA cryptosystem.
T4 : AL11 : Comparison networks, zero-one principle for sorting, bitonic and odd-even merge sort. 
T5 : AL11 : The PRAM model for parallel computation. Parallel algorithms for arithmetic problems and sorting. Parallel prefix.
T6 : AL3  : Matrix operations, Strassen's algorithm for matrix multiplication, boolean matrix multiplication, 
            solution of linear equations and matrix inversion. Complexity Results.
T7 : AL3  : Algorithms for string matching. Rabin-Karp. Knuth-Morris-Pratt. Boyer-Moore.
T8 : AL9  : Randomization and its application: Sorting, Selection and Number Theory 
T9 : AL3  : Data Compression (Huffman coding).
T10: AL8  : A quick overview on hashing.
T11: AL6  : Complexity classes (P,NP,RP,BPP,ZPP)
T12: AL10 : Geometric Algorithms
T13: AL8  : Google's PageRank and Kleinberg's HITS algorithms; Inverted Indexes.

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
Handwritten or typed solutions must be readable, clear, concise and complete for the homeworks. 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.
Extension policies
Discussed on page 1. Note that 4 out of 5 homeworks only count.
Grade questions
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 should expect a passing grade. A student who collects at least 850 points will definitely get an A. The instructor reserves the right to push a student's grade up based on that student's quality of his/her effort and/or quality of homework solutions.
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.
Mobile Devices
Mobile phones/devices and/or laptops/notebooks MUST BE SWITCHED OFF during class or be made noise-free.
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 667 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!