THIS PAGE IS PROVISIONAL. Document hand1.pdf contains the LATEST information about this course. This page will be UP-TO-DATE after the first day of classes. Before that day, consult hand1.pdf as the information below might be that of a previous semester.


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). Arithmetic algorithms. Greedy algorithms and dynamic programming-based techniques are introduced in the context of graph algorithms, arithmetic algorithms and text compression. Graph algorithms for traversals (depth-first, breadth-first), shortest-path problems, and spanning tree algorithms are also introduced. String matching algorithms. Introduction to NP-completeness.

1.1 Contact Information

INSTRUCTOR: Alex Gerbessiotis E-MAIL: alg435@cs.njit.edu
OFFICE: GITC 4213, 4th floor TEL: (973)-596-3244
OFFICE HOURS: Mon 4:45-6:00pm and Thu 10:00-11:30am    
OFFICE HOURS: By appointment Mon/Wed/Thu    
ASSISTANT: TBA on course web-page    
CLASS HOURS: Mon 2:30-3:55pm, Thu 4:00-5:25pm, Rm: KUPF208 (Used to be FMH 404)    

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


1.2 Course Administration

Prerequisites
CS 114, CS 241. (Math 226 has been phased out as a prerequisite and is marginally acceptable.)

Textbook
T.C.Cormen, C.E.Leiserson, R.L.Rivest, and C. Stein. ``Introduction to Algorithms'', 2nd edition, McGraw-Hill, ISBN : 0-07-013151-1. We abbreviate it in class as CLRS. Note that a 3rd edition was published in Fall 2009; you might use it but the official textbook THIS SEMESTER is still the 2nd edition. All references in class/notes will be to the 2nd edition. Differences between the two are minor, and mainly on page numbers.

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

Grades:
1000 points = PA(134)+ Ex1 (100) + Ex2 (333) + Ex3 (100) + Ex4(333).

PA1-3
3 programming assignments(PAs) will be handed out. Each one is worth 134 points. You get 134 points credit towards the final grade as long as you collect 134 or more points from any combination of the three PAs (you can do one, or two, or all, completely, or in part); 133 or fewer will gain you 0 points towards the final grade.
PA Dates
Programs MUST be received by email before midnight of the day indicated in the calendar. Submit early, do not wait until the very end; you might get sick, you might get called for jury duty. The indicated date is the last day we must receive your submission, and we will acknowledge it promptly by email. Follow Handout 2 for compliant forms of an email submission. No late work is accepted since one programming assignment can still satisfy the programming assignment requirement. Plan ahead of time, and submit early.

Practice PS
Approximately eight problem sets PS1-8 will be periodically posted along with their solutions. Exams 1 and 3 will draw from these problem sets for some or all of their problems.

Exams
Dates in Course Calendar. Exam 1 is closed-everything. The other three exams are open-textbook only. You may bring a copy of the textbook but you are not allowed to borrow one during the exam. For the final, you may also bring in class a clean copy of Handout 5 on red-black trees in addition to the textbook. Exam1 is on Thu Feb 18, 45min, 100 points. Exam2 is on Thu Mar 11, 75min, 333 points. Exam3 is on Thu Apr 15, 45mins, 100 points. Exam4 is on ??? May ??, 2hrs, 333 points (check with the Registrar).

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


2.1 Course Objectives and Outcomes

Objective 1
Learn how to describe the asymptotic performance of algorithms and data structures.
Objective 2
Learn how to derive and determine the asymptotic performance of algorithms and data structures.
Objective 3
Learn how fundamental algorithms and data-structures operate, and understand their characteristics. Be able to choose among a variety of similar ones based on problem/program specification and requirements.
Objective 4
Learn how to compose more complex algorithms using as building blocks the fundamental algorithms introduced in class.
Objective 5
Learn how to compose more complex algorithms using the algorithmic design techniques introduced in class.
Outcome 1
Be able to asymptotically compare functions using o,O,omega,Omega,Theta.
Outcome 2
Be able to solve recurrences using the master, the iteration/recursion tree, and the substitution method.
Outcome 3
Become familiar with a variety of sorting algorithms and their performance characteristics (eg, running time, stability, space usage) and be able to choose the best one under a variety of requirements.
Outcome 4
Be able to understand fundamental algorithms and data structures and be able to trace their operations for problems such as sorting, searching, selection, operations on numbers, polynomials and matrices, and graphs.
Outcome 5
Be able to identify the performance characteristics of fundamental algorithms and data structures for problems such as sorting, searching, selection, operations on numbers, polynomials and matrices, and graphs.
Outcome 6
Be able to understand fundamental algorithm design techniques and understand how to use them to solve a variety of algorithmic problems.
Outcome 7
Be able to use the fundamental algorithms introduced in class to design algorithms for more complex problems and analyze their performance.
Outcome 8
Be able to use the design techniques introduced in class to design algorithms for more complex problems and analyze their performance.


2.2 Topics to be covered

Section 2.2 of the previous page contains 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.


3.1 Tentative Course Calendar

 
Week** Mon Thu PS with Solutions PA Comments
W1   1/21 PS1* PA1-3out  
W2 1/25 1/28 PS2*    
W3 2/1 2/4 PS3*    
W5 2/8 2/11 PS4*    
W4 2/15 2/18+ Exam1-Thu PA1in An exam date is marked with +
W6 2/22 2/25 PS5*    
W7 3/1 3/4 PS6*    
W8 3/8 3/11+ Exam2-Thu PA2in  
W- 3/15 3/18     Spring Recess; no classes
W9 3/22 3/25 PS7*    
W10 3/29 4/1      
W11 4/5 4/8 PS8*    
W12 4/12 4/15+ Exam3-Thu PA3in  
W13 4/19 4/22      
W14 4/26 4/29      
W15 5/3       5/6 -5/12 is exam week
W16     Exam4   Check with Registrar for exam day

* Problem Sets (PS) with solutions are not for credit. ** In this calendar, a week starts on a Thursday

Any modifications or deviations from these 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.


3.2 Absenteeism

MISSING CLASS
If you miss a class and there is no EXAM or PA due it's up to you to make up for lost time.
MISSING PA
There are three scheduled programming assignments and only one is needed to collect the 134 points for the course. Plan ahead of time and submit early; do not wait until the last PA or the last moment to submit. No extensions are granted for any reason, medical or otherwise.
MISSING EXAM
If you miss an exam and there is a valid documentation for your absence, such documentation must be presented within 3 working days from the day the reason for the absence is lifted. The maximum accommodation will be the number of missing days to the exam date. If you miss Exam1 or Exam3, then the Exam2 or Exam4 grade will be used respectively in such a case; no makeup will be provided for Exams 1 and 3.

4.1 Course Policies
Programs
Code must be ANSI compliant and neither hardware-specific nor OS-specific. Check Handout 2 for more information on the programming assignments. Programming problems are graded based on test instances decided by the grader on a test platform of the grader's choice (e.g. AFS). Do not expect partial credit if your code fails to run on all test instances unless you accompany your code submission with a detailed bug report.
Extensions
As stated earlier, no extension will be granted for the PAs for any reason. Therefore do no try to act opportunistically i.e skip PA1 and PA2 and aim at doing PA3 completely and correctly to collect 134 points. You might get sick for the period leading to PA3 or called for jury duty or something else might occur and we will grant you no extension for that, even if you have proper documentation.
Grading
Written work will be graded for conciseness and correctness. Use formal arguments, be brief and to the point, and write clearly. Material covered in class and appearing in the relevant notes and chapters of the designated textbook can be used without proof. Excess Programming points can be used to boost your course grade (we account them separately). DO NOT USE pencils to write down your solutions; if you decide to use a pencil do not complain about grading.
Grades
Check the marks in written work and report errors promptly. Resolve any issue related to Ex1-Ex3 and PA1-3 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). For programming assignments an email with your grade is sent back to you by replying to the email submission of the PA. The final grade is decided based on a 0 to 1000 point scale. A student who collects at least 500 points and completes the minimum programming requirements should expect a grade of C or better; 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 significant programming effort.
Incomplete
A grade of I (incomplete) is given in rare cases where work can not be completed during the semester due to documented long-term illness or absence (e.g. unexpected national guard duty). A student needs to be in good standing (i.e. is passing the course otherwise before the absence and have satisfied programming requirements) and receives an I if there is no time to makeup for the documented lost time. Not showing up in the final will probably get you an F rather than an I.
Collaboration
Collaboration of any kind is NOT allowed in the in-class exams. Students who turn in code obtained through the Internet or otherwise, or is product of another person's/student's work, risk severe punishment, as outlined by the University. The work you submit must be the result of your own effort.

Mobile Devices
Mobile phones/devices and/or laptops/notebooks MUST BE SWITCHED OFF (NOT JUST SILENCED) before the class exams. Switch off noisy devices also before class.

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 (e.g. you don't want the grader to read the email or it's urgent and you believe the instructor will respond faster). 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!