CS-435-001
Syllabus
Catalog
Description
Advanced
topics in data structures and algorithms, involving sequences,
sets, and graphs such as searching, sorting, order statistics,
balanced search tree operations, hash tables, graph
traversals, graph connectivity and path problems. Algebraic
and numeric algorithms. Performance measures, analysis
techniques, and complexity of such algorithms.
Student-friendly
Description
Algorithms and data structures
affect the lives of billions of people daily. Think about it
this way: if you have ever used a cell phone then you have
been a user of several algorithms that route calls, decode
information, remove noise, sort data, or move graphics around
fast. This course introduces undergraduate students to
notions and techniques that are used as `building blocks' in
the design of algorithms.
We will study runtime analysis,
correctness proofs and specific algorithms, using as
motivation problems that appear in programming interviews. We
will also discuss problems that seem to be impossible to be
solved efficiently, posing one of the most challenging
problems of our time.
Contact
Information
Instructor: Ioannis
Koutis
Email: ikoutis+cs435@njit.edu
Office:
GITC 4314
Course
Time and Location: Monday and Wednesday
11:30-12:50pm (KUPF203)
Office
Hours: Monday
1:00-2:00, Wednesday: 3:00-4:00 and by appointment
Course
Assistant: Qianwen
Ye
Email: qy57@njit.edu
Office
Hours: Thursday
4:00-5:00pm
Prerequisites
and
Textbook
Prerequisites: CS
241, CS 288
Textbook:
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.
Alternative
Readings:
S. Skienna, "The algorithm
design manual", Springer, ISBN-10: 1849967202S.
Dasgupta, C. Papadimitriou, U. Vazirani. “Algorithms”,
McGraw-Hill Education, ISBN-10: 0073523402.
Additional
material
such as lecture slides and notes will be posted on Moodle
Coursework
and
Evaluation
Homework
Assignments [12%]. There will be 5 homework
assignments. Only the best 4
assignment grades will be used in the weighted
average, each contributing 3%. This means that you
have the flexibility to skip one assignment. Try to
make wise use of the option!
Mini-Project
[18%]. There will be one nearly semester-long
programming project. We will be slowly building
the required components during the semester
following certain milestones. The project will be
announced after the first midterm. Evaluation will
include a short presentation to the
instructor.
Midterm
Exam A [20%]. Open book and open
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
Exam B [20%]. Open book
and open 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 using the k-means method, and then
assigning a letter grade to each cluster. The letter grade
assignment will be in accordance to the undergraduate 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.
Tentative Course Schedule
Homework Dates:
Hw1: out on 09/10, due on 09/19
Hw2: out
on 10/01, due on 10/10
Hw3: out on 10/15, due on 10/24
Hw4: out on 11/05, due on 11/14
Hw5: out on 11/19, due on 11/28
Miniproject:
out on 10/01 due on 12/10
Exam
Dates:
Midterm 1: 09/26
Midterm 2: 10/22
Final: (date and time set by registrar)
Any modifications will be done in consultation with the
attending students and will be announced on Moodle.
Tentative
Topics
1. The RAM model, Asymptotic Running Time
Analysis, Recurrences, Brute Force Solutions, Proofs of
Correctness.
2. Greedy Algorithms, Huffman Encoding, Binary
Trees.
3. Problem Modeling and Representations.
Graphs. Spanning Trees. Graph Traversals. Graph
Decompositions. Heaps.
4. Statistics, Sorting, Selection. Divide-and-Conquer,
Recursion. Randomness. Hashing.
5. Dynamic Algorithms, Red-Black Trees, AVL Trees.
6. Dynamic Programming, Shortest Path and Walk Counting
Problems, Matrix Multiplication, Strassen's matrix
multiplication.
7. Problems with Graphs and Strings.
8. ΝP-Hardness, Reductions, Coping with Hardness.
Course
Policies
Email
Use of your NJIT email is strongly encouraged to avoid
delivery problems.
Moodle Announcements
All course announcements will be posted on Moodle. So,
check it regularly, or even better subscribe to the
corresponding forums to receive e-mail notifications.
Moodle Discussion
Forums
We will use Moodle 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.
Exam Conflicts
CS435 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.
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/
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
Learning
Outcomes
LO1. Be able to understand the input and
output specifications of a problem, the relationship between
input and output and identify, define, and describe the
algorithmic requirements that formulate a solution for that
problem. [ABET-1]
LO2. Be able to asymptotically compare functions using
o,O,ω,Ω,Θ, and be able to solve recurrences using the master,
the iteration/recursion tree, and the substitution method.
LO3. Be able to understand fundamental algorithms and data
structures for problems such as sorting, searching, selection,
operations on numbers, polynomials and matrices, and graphs, and
be able to trace their operations.
LO4. Be able to identify the performance characteristics of
algorithms and data structures introduced in class, and be able
to select among multiple solutions to meet desired needs.
[ABET-1]
LO5. Be able to derive and describe the asymptotic performance
of algorithms and data structures. [ABET1]
LO6. Be able to design and implement some of the data structures
and algorithms introduced in class or augmentations of them
following a given set of provided requirements and
specifications. [ABET-2], [ABET-6]
LO7. Be able to communicate effectively and describe in writing
algorithm operations and reason about their behavior and
performance succinctly. [ABET-3]
LO8. Be able to compose more complex algorithms and data
structures using as building blocks the fundamental algorithms,
data structures, or algorithmic design techniques.