New Jersey Institute of Technology
Ying Wu College of Computing
Computer Science Department


Data Structures and Algorithms
Code: CS 610-103
Semester: Fall 2019
Course Time and Location: Thursday 6:00-8:50pm (Kuprfian Hall 205) 
Recitation Time and Location: TBA

Instructor: Ioannis Koutis
Office: GITC 4314
Email: ikoutis+cs610@njit.edu  [remember to include +cs610 to avoid delivery problems]

Office Hours: Wednesday: 3:00-4:00, Thursday: 3:00-4:00 and by appointment. To arrange for an appointment, please e-mail the instructor. Office hours will not be held on official University breaks and closures. In case of an unlikely office hour cancellation, a notice will be posted on canvas, as soon in advance as possible.
 

Course Assistant: Yunzhe Xue
Email:
yx277@njit.edu
Office Hours: TBA

Course Management
All course activities will be managed on Canvas.


Catalog Course Description
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. Programs are assigned to give students experience in algorithms, data structure design and implementation. Prerequisites: CS 114 or CS 241 or equivalents. 


Tentative Topics

1. Asymptotic analysis, O, Ω, Θ notation, recursion, induction, recurrences
2. How to think about data structures: a problem-based approach. Simple data structures, heaps, hashing, in-place algorithms.
3. Greedy algorithms, an introduction to graphs
4. Divide-and-Conquer, geometric Problems, matrix Multiplication
5. Connectivity, weighted spanning trees,
union-find operations, amortized analysis
6. Strong connectivity, graph traversals, topological sorting
7. Dynamic programming, path discovery and counting
8. Current and advanced topics on graph algorithms (e.g. Page Rank, flows)
9.
Data structures supporting fast dynamic updates (balanced binary search trees)
10. Advanced numerical algorithms (e.g. FFT, Primality, Cryptography, Gradient Descent)
11. Reductions, NP-completeness



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.


Alternative Readings:
T.C.Cormen, C.E.Leiserson, R.L.Rivest, and C. Stein. “Introduction to Algorithms”, 3rd edition, MIT Press, ISBN-10 : 0262033844. We abbreviate it in class as CLRS.
S. Skienna, "The algorithm design manual", Springer, ISBN-10: 1849967202S.

Additional material such as lecture slides and notes will be posted on Canvas.


Coursework and Evaluation

Homework Assignments [15%]. There will be 5 homework assignments, approximately one every two weeks.

Mini-Project [15%]. The mini-project will be announced by the second week of classes. 

Mini-Midterm [10%]. Open book and notes. You can use any book and notes you bring into the exam. You are not allowed to use a computer or borrow notes from others.

Midterm [20%]. Open book and notes. You can use any book and notes you bring into the exam. You are not allowed to use a computer or borrow notes from others.

Final Exam [30%]. Cumulative. The final exam will consist of two parts. Part 1 will be closed-books and notes, but questions will come directly from the homework assignments [10%]. Part 2 will be similar to midterms [20%].

Letter Grades.  The conversion of raw grades will be based on grouping the raw grades into clusters and then assigning a letter grade to each cluster. The letter grade assignment will be in accordance to the graduate grade legend (https://www.njit.edu/registrar/policies/grading.php). This implies that there is no limit on the percentage of students who can get any given letter grade (everyone can get an A).

Lateness Policy. Each student starts the semester with a total budget of 72 hours of combined delay. If the budget is exceeded, 2% will be subtracted from the delayed assignment for each hour of delay.


Important Dates

September 26: Mini-midterm
October 24: Midterm
TBA by registrar: Final

November 26: Tuesday, but class meets.
December 12: Thursday, but class does not meet.

FYI: The NJIT academic calendar for Fall 2019.


History of minor syllabus revisions:

08/31/18: current
  


Course Policies

Email
Use of your NJIT email is strongly encouraged to avoid delivery problems.

Canvas Announcements
All course announcements will be posted on Canvas. So, check it regularly!

Canvas Discussion Forums
We will use Canvas to have informal and friendly conversations about topics related to the course, including assignments, problems, ideas, etc. You are encouraged to participate. Please be absolutely assured that any question or idea is welcome; even if you are afraid it may be silly, it can lead to interesting and beneficial discussions.

Mobile Devices
Turn-off and place away any cell phones, or other mobile devices, including laptops (unless the instructor explicitly permits you otherwise).

Assignment Delivery
Be careful to read and follow any formatting and delivery instructions that come with each assignment.

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.

Grade Corrections
Check the grades in course work and report errors promptly.
Please try and resolve any issue within one week of the grade notification. 

Absenteeism
If you miss a class, it’s up to you to make up for lost time. Missing two exams leads to an automatic F in the course. If you miss one exam you must contact the Dean of Students (DOS) within 2 working days from the day the reason for the absence is lifted with all necessary documentation. If DOS approves, your missing exam grade will be set equal to the average of the non-missing exam grades.

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 unexpected absence for other serious reasons. A student needs to be in good standing (i.e. passing the course before the absence) and receives a provisional I if there is no time to make up for the documented lost time; a letter (or email) with a timeline of what is needed to be done will be sent to the student. Note that for most cases an I would be resolved within few days, not months and not the following semester! Not showing up in the final will probably get you an F rather than an I.

Collaboration and External Resources for Assignments
Some homework assignment problems will be challenging. You are advised to first try and solve all the problems on your own. For problems that persist you are welcome to talk to the course assistant or the instructor. You are also allowed to collaborate with your classmates and search for solutions online. But you should use such solutions only if you understand them completely (admitting that you don’t understand something is way better than copying things you don’t understand). Also make sure to give the appropriate credit and citation.

Collaboration in the mini-Project and Exams
Such collaboration is strictly prohibited. Any submitted code (even few lines) obtained through the Internet or otherwise, or is product of someone else’s work or is common with another student submission, in the same or other section/course, risks severe punishment, as outlined by the University; all parties of such interaction receive automatically 0 and grade is lowered by one or two levels.

Academic Integrity
Academic Integrity is the cornerstone of higher education and is central to the ideals of this course and the university. Cheating is strictly prohibited and devalues the degree that you are working on. As a member of the NJIT community, it is your responsibility to protect your educational investment by knowing and following the academic code of integrity policy that is found at:

http://www5.njit.edu/policies/sites/policies/files/academic-integrity-code.pdf.   

Please note that it is my professional obligation and responsibility to report any academic misconduct to the Dean of Students Office. Any student found in violation of the code by cheating, plagiarizing or using any online software inappropriately will result in disciplinary action. This may include a failing grade of F, and/or suspension or dismissal from the university. If you have any questions about the code of Academic Integrity, please contact the Dean of Students Office at dos@njit.edu