Data Structures and Algorithms

Code: CS 610 J31
Semester: Summer 2021
Course Time and Location: Wednesday 05:30-10:00 pm

Mode: Convergent Learning
Location: 101 Hudson Street, Suite 3610, Jersey City
The course is also broadcasted online. Details can be found on Canvas.
Online Meeting Location:  Webex Classroom 

Instructor: Ioannis Koutis
Email: ikoutis+cs610@njit.edu

Office Hours:  Before class begins (4:30-5:30)  
Appointment Slots: Google Calendar: for other times, please email me

Course Assistant: Jingyi Gu
Email: jg95@njit.edu

Student-Friendly Course Description
From data organization and retrieval to social networks and mapping solutions, algorithms have revolutionized software, which in turn has changed the economy and our lives. This course introduces you to a core set of ideas and techniques that underlie a multitude of existing algorithms and are commonly used as building blocks in the design of new algorithms. You will also gain exposure to issues of computational efficiency that are of paramount importance in the development of software products and time-critical applications. The course is centered around a hands-on project that helps you acquire practical experience with algorithms for network analysis. Emphasis is also given to boosting your computational problem-solving skills via algorithmic problems that appear in programming interviews by top companies in the tech and finance sectors. |

 

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.


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, and in-place algorithms.
3. Greedy algorithms, an introduction to graphs
4. Hashmaps and Divide-and-Conquer, geometric Problems, Matrix Multiplication
5. Connectivity, Median, and QuickSort
6. Weighted spanning trees, union-find operations, amortized analysis
7. Strong connectivity, graph traversals, topological sorting
8. Dynamic programming, path discovery, and counting
9. Data structures supporting fast dynamic updates (balanced binary search trees)
10. Current and advanced topics on graph algorithms (e.g. Page Rank, flows)
11. Advanced numerical algorithms (e.g. FFT, Primality, Cryptography, Gradient Descent)
12. Reductions, NP-completeness

Textbook
Buying a textbook is not required. We will occasionally use material from the following textbook and alternative readings.

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
[20%]. There will be 6-7 homework assignments.
Mini-Project-A  [20%].
Mini-Project-B  [20%].
Participation: [5%]
Midterm [20%].  
Final [20%].  Cumulative.  

The exam will be done using LockDown Browser +  Webcam Monitor.

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 with the graduate grade legend.

Lateness Policy: We will adhere strictly to the deadlines for assignments and mini-projects.

Important Dates

June 23: Midterm (open books and notes)
Final: Last week of the semester

FYI: The NJIT academic calendar for Summer 2020.

History of minor syllabus revisions:
05/22/21: current  

Course Policies
Email
The 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.

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. The 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 coursework 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 a 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 a 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