DISCLAIMER/NOTE: This is an automatic conversion of the PDF document hand1.pdf; in case there
are inconsistencies between this online document and hand1.pdf/hand1.ps the latter will
be followed and considered correct. This online page is for your convenience only.
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.
Contact Information
INSTRUCTOR: |
Alex Gerbessiotis |
E-MAIL: |
alg610 AT cs.njit.edu |
OFFICE: |
GITC 4213, 4th floor |
TEL: |
(973)-596-3244 |
OFFICE HOURS: |
Mon and Wed 10:30-11:30am and Thu 4:30-5:30pm |
|
|
OFFICE HOURS: |
By appointment some other time on
Mon/Tue/Thu |
|
|
ASSISTANT: |
TBA on course web-page |
|
|
CLASS HOURS: |
Thu 6:00-9:05pm, Room TBA |
|
|
Course Web Page: http://www.cs.njit.edu/~alexg/courses/cs610/index.html
The following also works: http://web.njit.edu/~alexg/courses/cs610/index.html
Print Handout 1 from Web-page and compare the printout to this document! They
must be identical.
Course Administration
- Prerequisites
- CS 505, or CS/CIS  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 in class this edition as GT.
- CourseWork:
- 3 exams (including the final). A variety of programming-based homewo
rks.
- Grading scheme:
- 1000 points = HW(167) + Ex1 (167) + Ex2 (333) + Ex3(333).
If a student collects 167 or more programming points, 167 points
will be added to the total; 166 or fewer programming points will be discarded.
- HW1-4
- 4 or more assignments will be handed out. Each one is worth 90 points.
Although two of them can be done in Java or C or C++, at least two of the remaining ones
will require the use of just C or C++. Plan accordingly if you only know Java.
Doing all of them is not a requirement; you only
need about 167 points which can be collected from two such assignments.
- Practice PS
- Four comprehensive problem sets PS1-4 will be periodically
posted along with their solutions. Exam 1 will be based on these problem sets;
the other two exams might also borrow ideas from them.
- Exams
- Dates in Course Calendar. Exam 1 is closed-everything. The other
two exams are open-textbook only; you can bring your own copy of the textbook but
you may not borrow one during the exam.
Exam1 is on Feb 21, 1hour, 167 points.
Exam2 is on Mar 13, 2hours, 333 points.
Exam3 is on May 8, 2hours, 333 points.
- Due Dates
- Programs MUST be received by email before 6pm the day they are due;
45 points
subtracted every 24-hour period starting 6pm on Thursday. 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).
Extra NOTES HW referes to work performed at home (programming assignments)
PS refers to Practice Problem Sets with solutions provided for your convenience.
Week Thu Assignment Other Comments
**** **** ********************* **************************************************
W1 1/24 PS1* HW1out
W2 1/31
W3 2/7 HW2out
W4 2/14 PS2* HW1in
W5 2/21 Exam1
W6 2/28 HW3out
W7 3/6 HW2in
W8 3/13 Exam2
W- 3/20 SPRING BREAK! No classes
W9 3/27 PS3* HW3in
W10 4/3 HW4out
W11 4/10
W12 4/17 PS4*
W13 4/24 HW4in
W14 5/1
W15 5/8 Exam3 Examination Week
********************************************************************************************
* 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
T1 :Ch1,5.2 : Introduction (insertion-sort, fibonacci sequences),
Algorithm Analysis (Asymptotic Growth of functions, recurrences)
T2 :Ch1,4.1,5.2 : Algorithm Design Techniques (Incremental, Divide-and-Conquer)
Sorting(selection-sort,bubble-sort,merge-sort).
T3 :Ch2.1-2.3 : Elementary Data Structures and Trees. Tree traverals.
Ch4.2 Union-find operations.
T4 :Ch2.4,9.3 : Heaps and Priority Queues. Greedy Algorithms and Huffman coding.
T5 :Ch4 : Quick sort. Complexity of sorting. Sorting in linear time
(radix-sort, bucket/count-sort). Selection.
T5 :Ch2.5-2.7 : Hashing.
T6 :Ch3 : Binary Search Trees and Balanced Binary Search trees.
m-way trees, 2-3-4 trees, B-trees.
T7 :Ch5 : Integer operations (addition and multiplication).
Matrix operations (addition and multiplication). Strassen's method.
Dynamic Programming and chained matrix multiplication.
T8 :Ch6 : Graphs and their representation. Graph traversals (DFS,BFS).
Strongly connected components. Topological sorting.
T9 :Ch7 : Weighted graph problems. Shortest-path problems (Dijkstra's).
All-pairs shortest paths and transitive closure (Floyd-Warshall).
Spanning trees (Prim's and Kruskal's algorithms).
T10:Ch9 :String and Pattern matching algorithms.
T11:Ch10 :Fundamental algorithms involving numbers. RSA.FFT.
T12:Ch13 :P and NP. NP-completeness.
Any modifications or deviations from the posted 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 Policies
- Written Work
- Handwritten or typed solutions must be readable, clear, concise and complete.
This applies to all written work, exam or otherwise.
DO NOT USE pencils to write down your solutions; if you decide to use a pencil
do not complain later about grading.
- Grading
- Written work will be graded for conciseness and
correctness. Use formal arguments. Be brief and to the point.
Label solutions with problem/subproblem number clearly.
Code must be ANSI compliant and
compile on the test platform/compiler, otherwise the assigned grade will be 0.
Check relevant handout for more information on the programming assignments.
Programming problems will be graded based on test instances
decided by the grader on a test platform (Windows PC or Unix machine) of
his choice; it most likely will be an AFS machine. Do not expect partial credit
if your code fails to run on all test instances and you do not provide clear
documentation of its bugs. Read Handout 2 for programming guidelines.
- Extensions
- No extension will be granted for the programming
assignments for any reason other than the one described in the Due Dates
section.
- 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
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).
- Final Grade
- 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.
- Collaboration
- Students who turn in solutions (programming or otherwise) that
are derived from solution outlines of past assignments/homeworks,
were obtained through the Internet, or are
a product of another student's work, risk severe punishment,
as outlined by the University.
The work you turn in MUST BE your own personal work, composed and written
by you. If you talk a problem with a fellow student
cite this clearly in your homework (name the fellow student before the
solution of the problem in question). Your work will then be
compared to the other student's work to verify that your solution was
written by you and reflect your own personal effort.
If you don't report it, it will be considered a violation of the course rules.
You are not allowed to exchange code for the programming part of a
homework.
Collaboration of any kind is NOT allowed in the in-class exams.
Open-textbook refers to the textbook by Goodrich and Tamassia (GT).
Students are not
allowed to exchange textbooks, or anything else
including erasers, pencils, calculators etc, during the exams.
- Internet Assistance
- Posting of class material on the Internet is prohibited.
Class material is protected under US copyright laws. If you post a programming assignment
to certain sites (eg. Rent-a-coder) for assistance this constitutes a violation of
copyright laws; THIS IS THE CASE EVEN IF you cut-and-paste the text of the assignment
to avoid detection or punishment .
- 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!