Textbook(s)
Data structures books
We do not require you to purchase any particular textbook. But, you should use a textbook to study more in depth the topics that are discussed in class. The list below contains some recommended titles. During the semester we will suggest readings from some of them. You do not need to read every chapter from every book.
Most of the books in this list are accessible through NYU libraries for either download or online access. For the books available through O'Reilly online access, you can either start at the NYU library page or login to the site directly using Single-Sign-On (SSO) option with your NYU credentials. Some books are provided as open books through their publisher's or author's websites.
Open DSA is an open source project whose goal is to provide online course materials for a wide range of Data Structures and Algorithms courses. It has been funded by two National Science Foundation grants: TUES program grant DUE-1139861 and EAGER program grant IIS-1258571.
Think Data Structures,
Allen B. Downey,
Open book.
(accessible through NYU libraries, or O'Reilly online access,
or download a PDF from Greenteapress website ).
Codeless Data Structures,
Armstrong Subero,
(accessible through NYU libraries or O'Reilly online access).
Algorithms in Java,
Robert Sedgewick,
(accessible through NYU libraries or O'Reilly online access).
Open Data Structures An Introduction,
Pat. Morin
(accessible through NYU libraries or book's site).
Guide to data structures : a concise introduction using Java,
James T. Streib, Takako Soma
(accessible through NYU libraries).
Data structures & algorithms in Java,
Robert Lafore
(accessible through NYU libraries or O'Reilly online access).
Java reference books
Introduction to Java Programming, 11th Herbert Schildt, O'Reilly online access (sign in using Single-Sign-On option with your NYU credentials) or start from NYU Libraries page for the book |
|
Think Java: How To Think Like a Computer Scientist, Chris Mayfield, Allen Downey, Optional Java resource Open book - available online |
|
Java, Java, Java: Object Oriented Problem Solving, Ralph Morelli, Ralph Walde, Optional Java resource Open book - available online |
|
Introduction to Java Programming, any edition Daniel Liang, This is your cs101 textbook. It is a good resource for refreshing the Java material. |
Prerequisites
Passing CSCI.UA.0101 with a grade of C or better.
You are expected to know and remember the material from CSCI.UA.0101 course. If you took the course a few semesters ago and/or do not remember parts of the material, start reviewing it during the summer/winter break.
If you took an equivalent of this course at a different school, you need to make sure that you are familiar with Java. We assume you know enough Java to read and write fairly large programs right at the beginning of the semester.
Grading
Your grade will be based on:
- 2 exams (15% midterm exam, 20% final exam): online exams completed individually
- 3-5 take-home quizzes (24% total): online 30 minute quizzes completed individually
- 4-7 programming projects (27% total): several programming projects completed individually
- participation and progress (14% total): taking active part in class discussions (asking and answering questions on the course discussion forum), completing assigned readings, tutorials, activities, etc., and self-assessment exercises, actively participating in recitations and completing group and individual work
Grades will be determined using the following scale:
A 95-100
A- 90-95
B+ 87-90
B 83-87
B- 80-83
C+ 76-80
C 72-76
D 65-72
F less than 65
The grade of Incomplete is reserved for students who, for legitimate and documented reason, miss the final exam. The grade of Incomplete will not be given to student who started falling behind in class. Those students should withdraw from the class or switch to Pass/Fail option.
Absences (excused and unexcused)
We generally do not take attendance during the lectures, although, if you miss too many sessions, we will notice.
The take-home quizzes and exams can be made up only in case of an excused absence with appropriate documentation.
If you will miss a take-home quiz or an exam due to a religious observance, please familiarize yourself with University Calendar Policy on Religious Holidays and talk to the instructor well in advance to come up with alternative arrangements.
You will not be able to excuse an absence weeks after it happens. You should contact the instructor as soon as you are able (you will need to provide appropriate documentation).
In general, make sure you talk to your instructor about any missed assessments as soon as possible to determine if they can be made-up.
Recitations
Recitations are the times to have most of your questions answered. These could be questions about upcoming projects, material covered during the prior week or the weekly labs. They are also a chance for you to work with a group of students from the class to solve some problems together.
Weekly Labs
Each week you will be given a lab to work on. You should review the lab instructions before your weekly recitation so that you can discuss any questions and issues during the recitation.
The weekly labs can be retrieved any time during the week in which they are assigned but you should review them prior to the recitation session for which you are registered.
During the recitation session you may work on parts of the lab that may not be published until the actual recitation meeting. This will be small-group work and the submission for that part, if any, will be made as a group (keep in mind, that a small-group means two to four students, not one).
Programming Projects
Programming projects will be given on a regular basis. In general, they will be due 7-10 days after they are assigned. They will require you to write and, often, read and understand significant amount of code.
The programming projects should be completed individually and they should be your own work.
Late and missed programming projects:
For each project you will have a 5 hour buffer window after the due date.
You can submit or resubmit the project during this time without any point
penalty.
The late project submissions lose 20% of their original score for each day they are
late. If the project has multiple parts, the late penalties apply to the entire project
not only the parts that are submitted late. If you submit the project 5-24 hours late,
the maximum score is 80 (instead of 100). If you submit the project 24-48 hours late, the maximum
score is 60 (instead of 100), etc.
Broken programming projects:
If you hand in a program that does not compile or crashes when it is run, you will get a grade of zero on it. As you are working on your code, make sure that it compiles and does what you expect it to do. Test frequently, not only after you write hundreds of lines of code. It makes more sense to comment out broken pieces of the code and submit incomplete implementation of the project, instead of submitting a program that does not compile or run.
No programming projects can be accepted after the last day of classes.
Exams and Quizzes
There will be two timed online exams: midterm and final. They will be given during the class time (midterm) or during the university scheduled time (final). Those exams are synchronous.
In addition there will be several online quizzes (30 minute each). You will be able to complete them at any point during a fixed 24hr period.
All online quizzes and exams must be completed individually by you with no assistance of any other people, except for the instructor and proctors (in case of the synchronous exams).
Academic Integrity
This course follows the university and departmental policies on academic integrity:
Our main philosophy is that you need to be honest and fair to yourself, other students in the class and the instructional stuff.
We know that interactions with your classmates can facilitate deeper understanding of the subjects and provide invaluable lessons. We also know that in the real world large programming projects are rarely implemented by individuals. Finally, we know that in the real world you are rarely asked to take timed exams and be graded on them. But you are in the process of preparing for the real world, and you need to prove to yourself and to others that you can be a valuable contributor to a group project or a team.
All your work that is submitted for grading in this class has to be your own, unless otherwise specified. If you receive any help from a human or use any non-human resources, you need to acknowledge that in your submissions.
Regret clause
If you violate the rules of academic integrity when submitting work for this class, but bring it to the attention of the instructor within 48 hours of your submission, we will impose only local sanctions (i.e., failing or reduced grade on a given assignment), but we will not refer your case for further disciplinary actions (except in the case of repeated violations).
Here are examples of fair and not fair actions that a student may take. This is not an exhaustive list and should serve as examples of behaviors rather than a complete definition.
Fair Actions
- Working and completing a weekly lab with other students and specifying the name of all those involved as authors (when submissions are expected).
- Discussing problem sets and assignments with other students in a natural language (i.e., English or any other spoken language, not Java) and acknowledging such discussions in your submission.
- Discussing problem sets and assignments with tutors and instructional stuff and acknowledging such discussions in your submission.
- Incorporating a short fragment of code (a few lines) that you find in the course suggested resources or other online resources and acknowledging it in your submission.
- Sharing code with others (possibly your classmates) that illustrates concepts and techniques discussed in this course as long as this code is not a solution (or a partial solution) to one of the assigned problems.
Not Fair Actions
- Working and completing a weekly problem set and adding names of students who did not participate in the group work as authors (when submissions are expected).
- Splitting the problem set problems between multiple students and submitting as a group. (Each member of the group has to participate in solving every problem.)
- Making your solutions available to others (publicly or privately) prior to the end of the semester. (This includes posting solution on a discussion forum, in a public repository, etc.)
- Asking a classmate to see their solutions prior to the last date at which submissions are accepted (this may be different than the due date).
- Guiding a classmate in their work by providing all or most of the details needed to produce a solution.
- Failing to acknowledge any form of human help in the submission.
- Failing to acknowledge any non-human resources used in order to complete the submission.
- Asking any human (other than the instructional stuff) for help during an exam or a quiz.
- Looking at another student's work during an exam or a quiz.
- Submitting work that was completed by someone else for a problem set, a programming project or an exam.
- Submitting work that was completed by someone else and then modified by you for a problem set, a programming project or an exam.
Topics Covered
(not necessarily in this order)
- Java features: abstract classes, interfaces, inheritance, polymorphism, generics, iterators, exception handling, file I/O
- Recursion
- Worst case asymptotic running time analysis
- Abstract data types
- Lists, stacks, queues
- Trees (binary and binary search trees, AVL trees)
- Sorting algorithms (merge sort, quicksort)
- Priority Queues
- Hashing and hash tables
Tentative schedule:
For detailed schedule, see the Content page on NYU Brightspace.
Academic Email Etiquette
-
Check the school email address on a regular basis. You can simply forward its content to another email account that you use regularly.
-
Use your school's email account to send emails to professors, instructors, TA's, graders, administrators, etc. It is a violation of federal law, FERPA - the Family Educational Rights and Privacy Act to have an email conversation about school-related matters using a non- school account because there is no proof that it is not spoofed and might be insecure. (Email sent from your school's account requires an authenticated login, it satisfies FERPA's written consent requirement. However because security measures for other email systems are not as strict or verifiable, an email received another mail accounts would NOT satisfy FERPA requirements.)
-
Start your email with proper salutations! Use the correct titles (Professor, Dr., Dean, etc.) and spell first and last names correctly. If you are on the first name basis with your instructors, use their names, not "Hey". For example: "Dear Professor Drummer" or "Dear Robert", not "Hey Bob".
-
Sign your name under the body of your email, otherwise you expect people to read emails from anonymous.
-
Do not write everything in upper-case letters. Do not write everything in lower-case letters.
-
Make sure you included everything you wanted before hitting send. Don't send three emails one after another because you forgot something in the first one.
-
Proofread the text in your email before sending it. Most of the email clients check for typos, but they cannot tell if your email makes much sense. Read it, before you send it.