THIS PAGE IS PROVISIONAL. Document hand1.pdf contains the LATEST information about this course. Content might change through the first day of classes!


Intensive study of the fundamentals of data structures and algorithms. Presents the definitions, representations, processing algorithms for data structures, general design and analysis techniques for algorithms. Covers a broad variety of data structures, algorithms and their applications including linked lists, various tree organizations, hash tables, strings, storage allocation, algorithms for searching and sorting, and a selected collection of other algorithms.

1.1 Contact Information

INSTRUCTOR: Alex Gerbessiotis E-MAIL: alexg+cs610@njit.edu
OFFICE: GITC 4213, 4th floor TEL: (973)-596-3244
OFFICE HOURS: Mon and Fri 4:00-5:30pm    
OFFICE HOURS: Also by appointment Mon/Wed/Fri    
ASSISTANT: TBA on course web-page    
CLASS HOURS: Mon 6:00-9:05pm, Room KUPF 205    

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

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


1.2 Course Administration

Prerequisites
CS 505 or CS 335, and completion of all bridge course requirements.

Textbook
Algorithm Design: Foundations, analysis, and internet examples. M. T. Goodrich and R. Tamassia. Wiley, 2001, ISBN 0-471-38365-1. We abbreviate it in class as GT.

CourseWork:
3 exams (including the final). Programming-based homeworks.

Grading Scheme:
1000 points = HW(200) + Ex1 (333) + Ex2 (137) + Ex3(333). If a student collects 200 or more homework/programming points, 200 points will be added to the total; 199 or fewer programming points will be discarded.

HW1-3
3 or more assignments will be handed out. Each one is worth 100 points. They can be done in C, C++, or Java and will be tested on afsconnect1.njit.edu or afsconnect2.njit.edu.

Practice PS
Four comprehensive problem sets PS1-4 will be periodically posted along with their solutions. Exam 2 will be based on these problem sets; the other two exams might also borrow ideas from them.

Exams
Dates in Course Calendar; all exams in classroom. Exam 2 is closed-everything. The other two exams are open-textbook only; you may bring a hardcopy of the textbook but you may not borrow one during the exam. Exam1 (midterm) is on Mar 10, 2hours, 333 points. Exam2 (quiz) is on Apr 14, 60min, 137 points. Exam3 (final) is on May 12, 2hours, 333 points.

Due Dates
Programs MUST be received by email before noon-time the day they are due; 30 points subtracted every 24-hour period starting with Monday noon-time. We strongly recommend that you use an NJIT email account to email your code; if you do not use one, do not complain about potential loss of emails (or NJIT's blocking of them). Read Handout 2 for details and the homework itself.


2.1 Course Objectives and Outcomes

Objective 1
Understand and formulate the input-output relationship of computational problems, and formulate the requirements, data and operations of abstract data types (ADT). data structures.
Objective 2
Learn, Understand and be able to describe data structures that represent the mathemtical model underlying an ADT.
Objective 3
Learn how to describe, derive and determine, the asymptotic performance of algorithms and data structures.
Objective 4
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 5
Learn how to compose more complex algorithms using as building blocks the fundamental algorithms introduced in class.
Objective 6
Learn how to compose more complex algorithms using the algorithmic design techniques introduced in class.
Outcome 1
Be able to accurately specify the input/output relationship of computational problems, and describe correctly fundamental ADTs.
Outcome 2
Be able to accurately specify the operations of fundamental ADTs and the data structures underlying them; be able to correctly describe the performance of algorithms for the operations on these data structures.
Outcome 3
Be able to asymptotically compare functions using $o,O,\omega,\Omega, \Theta$.
Outcome 4
Be able to solve recurrences using the master, the iteration/recursion tree, and the substitution method.
Outcome 5
Become familiar with a variety of algorithms for sorting, selecting and searching data and their performance characteristics (eg, running time, stability, space usage) and be able to choose the best one under a variety of requirements.
Outcome 6
Be able to understand fundamental algorithms and data structures and their performance and be able to trace their operations for problems such as sorting, searching, selection, operations on numbers, polynomials and matrices, and graphs.
Outcome 7
Be able to understand fundamental algorithm design techniques and understand how to use them to solve algorithmic problems.
Outcome 8
Be able to use the fundamental algorithms introduced in class to design algorithms for more complex problems and analyze their performance.
Outcome 9
Be able to use the design techniques and algorithms introduced in class to design algorithms for more complex problems and analyze their performance.


3.1 Tentative Course Calendar

Spring 2014
Week Mon Exams HW or PS Comments
W1 1/27   HW1out,PS1*  
W2 2/3      
W3 2/10   PS2*  
W4 2/17   HW2out  
W5 2/24   HW1in  
W6 3/3      
W7 3/10 Exam1   Midterm Exam
W- 3/17     Spring Break
W8 3/24   HW2in,PS3*  
W9 3/31   HW3out  
W10 4/7      
W11 4/14 Exam2 PS4*  
W12 4/21      
W13 4/28   HW3in  
W14 5/5      
W15 5/12 Exam3   Final Exam

* 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 with indicative chapter pointers to GT. The lecture summaries contain detailed correspondence to chapters of the textbook.


Topics to be covered

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.


Course Syllabus: Policies and 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 HW
There are three scheduled programming assignments and not all are needed to collect the 200 points for the course. Plan ahead of time and submit early. No extensions are granted for any reason, medical or otherwise; only a snow cancellation may delay things.
MISSING EXAM
If you miss EXAM2, then EXAM 3 will be used to determine a grade. No make-up will be given. For the other two exams valid documentation must be forwarded to the DEAN OF STUDENTS 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.
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.
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 may 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 later about grading.
Grades
Check the marks in a written work and report errors promptly. {\bf Make sure you report such problems to the grader or the instructor within two weeks from receipt} but {\bf 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). 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 completes the minimum programming requirements should expect a passing grade (C or better). 900 points or more are usually required for an A including robust programming work.
Incomplete
A grade of I(incomplete) is given in rare cases where work cannot 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. passing the course before the absence and satisfying 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 mental effort. In addition to University penalties, when a violation is detected and confirmed, the course grade will be reduced by one level (a C+ would become a C).
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 610 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!
Alexandros Gerbessiotis 2013-12-20