Syllabus for CSCI-UA 102 sec 5, Professor Klukowska
Instructor Information
- Professor Joanna Klukowska
- Email: joannakl@cs.nyu.edu
- Recitation Instructors:
- Satya Chilale (sec 6, sec 61)
- Daniel Jin (sec 62, sec 65)
- Chenfeiyu Wen (sec 64)
- Vincent Xu (sec 63)
- JK Office Hours
- in person: Mondays 9:30 AM - 11:00 AM (423 CIWW)
- on Zoom (see Brightspace for links): Thursdays 1:00 - 2:30 PM
- Recitation Leaders Office Hours
- posted on Brightspace
Course Information
- CSCI-UA 102 Data Structures
- 4 credits
- Lectures: Mondays/Wednesdays 8:00 - 9:15 AM
- Recitations: Friday (different times depending on the recitation section)
- Brightspace
- Ed discussions (accessible through Brightspace as well)
- Course website
- Exam dates (all subject to change if significant schedule changes are required):
- Midterm exam (paper-based part): Wednesday, Oct 16 (during regular lecture time)
- Midterm exam (coding part): Friday, Oct 18 (during regular recitation time)
- Final exam (coding part): Wednesday, Dec 11 (during last recitation time, note that NYU is going to follow Friday schedule on that day)
- Final exam (paper-based part): Monday, Dec 16, 10:00 - 11:50AM (during the CAS scheduled final exam period)
- Prerequisites: Passing CSCI.UA.0101 with a grade of C or better.
You are expected to know and remember the material from CSCI-UA 101 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. - Testing out of the course: If you are familiar with the material for this course (because you self-learned it or took a class elsewhere), you can test out of the course by taking a placement exam. See the Placement page at the CS department website for more details.
Course Description
This course covers use and design of data structures, which organize information in computer memory. Topics covered include data structures (stacks, queues, linked lists, binary trees, binary search trees, etc.), how to implement them in a high-level programming language (Java), how to analyze their effect on algorithm efficiency, and how to use and modify them.
Communication, Asking Questions, Getting Help
If you have questions related to the course materials or assessments:
- post them on the course discussion forum (Ed). The posts shoud be public unless they reveal part of the answer for a graded assessment.
- visit the tutors during tutoring hours (available in-person and remotely at different times of the day)
- visit instructors' office hours (schedule available on Brightspace)
If you have questions regarding your grades or some personal issues
- post them as a private post on the discussion forum or send a direct message to the relevant instructor using the Ed platform. (Avoid emails as they often get lost in the steam of other things.)
- visit instructors' office hours (schedule available on Brightspace)
Assessments and Grading
The grade for this course will be determined according to the following formula:
- Participation and Progress, 10%
This category will be assessed based on taking an active part in class discussions (asking and answering questions on the course discussion forum, reading posts made on the discussion forum by other students and instructors), completing assigned readings, tutorials, activities, etc., and self-assessment exercises, actively participating in recitations, and completing group and individual work, completing class polls and pop-quizzes during the lectures and recitations. Several of these grades (about one fourth) will be dropped to account for student absences due to late registration, illness, holiday observances, family/personal emergencies, or any other circumstances. - 2 Exams: 20% midterm exam, 30% final exam
Exams will be in-person and synchronous (may be switched to online and/or asynchronous if the need arises), and completed individually. No exam grades are dropped. All exams must be completed individually by you with no assistance of any other people (except for the instructor and proctors) or technology. Each exam has two parts: paper-based part and coding part. Both parts are timed. - 3-5 take-home quizzes, 20%
The take-home quizzes will be online, asynchronous, and completed individually. Each quiz will take approximately 30-minutes and will be offered at any time during a 24-hour period. No take-home quiz grades are dropped. All take-home quizzes must be completed individually by you with no assistance of any other people or technology. - 4-6 Programming Projects, 20%
Several programming projects will be given during the semester. The programming projects should be completed individually. No programming project grades are dropped. The programming projects should be completed individually and they should be your own work.
Course Grade
The final course grade will be assigned as follows:
Score | Letter Grade |
---|---|
95-100 | A |
90-95 | A- |
87-90 | B+ |
83-87 | B |
80-83 | B- |
76-80 | C+ |
72-76 | C |
65-72 | D |
< 65 | F |
The grade of Incomplete is reserved for students who miss the final exam or the last project after
completing all other coursework in the semester (the reasons for missed exam will need to be verified
and approved by the Dean Of Students).
The grade of Incomplete will not be given to students who started falling behind in class for any reason.
Those students should withdraw from the course or switch to Pass/Fail option.
Course Materials
Brightspace and the Course Website
You can access all course related materials through Brightspace page for this course.
In addition, you may find some links to the course slides and labs at the course website.
Textbook(s)
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.
Here is a listing of chapters in different books that discuss different topics covered in this course: reading list.
Data Structures Books
- 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).
- 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, (accessible through NYU libraries or O'Reilly online access).
- 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. Some older editions may be available through NYU Libraries.
Other Resources
- Tutoring:
- Assistance with strengthening your writing: NYU Writing Center
- 24/7 technology assistance: IT Help Desk
- Support for personal and health-related issues at the Wellness Exchange:
- by phone (212) 443-9999 (24/7 confidential calls),
- website: http://www.nyu.edu/999
Recitations and Labs
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 from the weekly labs together.
The recitations are essential part of the course. You are expected to attend them. They are a chance for you to learn the material and collaborate with your peers. They are NOT optional part of this course.
Weekly Labs
(Almost) every 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.
During some of the recitation session you will get a chance to work on parts of the lab with other students and with guidance of the recitation instructor.
Some parts of the weekly labs will be submitted and will contribute to the "participation and progress" part of your grade for this course. To get the credit for this part, you must submit it before the due date.
Course Policies
This course follows CAS Academic Policies that can be found at https://cas.nyu.edu/academic-programs/bulletin/policies/academic-policies.html.
Attendance
This is an in-person synchronous class and you are expected to attend the lectures and recitations.
Missing a class or two is reasonable and often unavoidable, but missing more than five course meetings will likely result in decreased understanding of the course content and, hence, lower scores.
If, for any reason, you need to miss a lot of class meetings, you should contact cas.deanforstudents@nyu.edu for verification and guidance for an extended absence period. Extended absences often result in students inability to make-up missed material and assessments. You should consider withdrawing from the class and attempting it again in the future semester.
Missed Assessments
If you miss an assessment due to a religious observance, illness, family emergency, or any other reason beyond your control, you need to notify your instructor ahead of time (in case of a planned absence) or as soon as possible (in case of an unplanned emergency absence). Trying to excuse/explain the absence two weeks after it happened will not work.
-
To account for any missed in-class quizzes or polls, recitation activities or a lab assignments, several (approximately one fourth) lowest scores in the participation and progress category will be dropped at the end of the semester. All reasons for missing something in this category are treated in exactly the same way: absence due to illness, religious observance, late registration, oversleeping or …. If you miss one of the assessments from this category, you do not need to notify us.
-
If you miss one of the take-home quizzes, the part of the grade based on take-home quizzes will be based on the remaining take-home quizzes. You need to notify us about a missed take-home quiz as described above, otherwise the grade for such a quiz will count as zero.
If you miss more than one take-home quiz, you need to discuss it with the instructor immediately. You will not be excused from more than one quiz for any reason. -
If you miss the midterm exam, the final exam will be counted in its place. You should contact cas.deanforstudents@nyu.edu for verification of the reason for a missed exam.
-
If you miss the final exam, you will receive a grade of incomplete in the course. You will need to take an alternative make-up exam at the start of the following regular semesters (either spring or fall) at the time and place chosen by the instructor. You should contact cas.deanforstudents@nyu.edu for verification of the reason for a missed exam.
-
If you miss the due date for one of the programming projects, refer to the section below.
Late 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. You do not need to use your freebie days (see below) if you submit your assignment during this 5-hour buffer window.
Each student is granted seven freebie days at the start of the semester. The freebie days can be used for any project except for the first one and the last one. If you are unable to submit a programming project on time due to religious observance, illness, family emergency, or any other reason beyond your control, you can use your freebie days to avoid point deductions for lateness on the assignment.
To use your freebie days, submit the project as soon as possible after the due date passes and then complete the Freebie Days Request form (https://forms.gle/gSqPWKjMwi72nVvx7).
Note: You are responsible for keeping track of how many freebie days you use and how many you still have. You are responsible for submitting the form as soon as you submit your final version of the project. Do not submit the form multiple times for the same project.
Freebie days are not transferable and they expire at the end of the semester.
Once you run out of freebie days, the late project submissions lose 10% 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 90 (instead of 100). If you submit the project 24-48 hours late, the maximum score is 80 (instead of 100), etc.
No programming projects will be accepted after the last day of classes.
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 an incomplete implementation of the project, instead of submitting a program that does not compile or run.
Disability Disclosure Statement
New York University is committed to providing equal educational opportunity and participation for students of all abilities. We work with NYU students to determine appropriate and reasonable accommodations that support equal access to a world-class education.
Students requesting academic accommodations are advised to reach out to the Moses Center for Student Accessibility as early as possible in the semester for assistance.
Henry and Lucy Moses Center for Student Accessibility
Telephone: 212-998-4980
Website: http://www.nyu.edu/csd
Email: mosescsd@nyu.edu
Wellness Statement
In a large, complex community like New York University, it's vital to reach out to others, particularly those who are isolated or engaged in self-destructive activities. Student wellness (https://cas.nyu.edu/content/nyu-as/cas/academic-programs/student-wellness.html) is the responsibility of us all.
The NYU Wellness Exchange is the constellation of NYU’s programs and services designed to address the overall health and mental health needs of its students. Students can access this service 24 hours a day, seven days a week: wellness.exchange@nyu.edu; (212) 443-9999. Students may also call the Wellness Exchange hotline (212-443-9999) or the NYU Counseling Service (212-998-4780) to make an appointment for single session, short-term, or group counseling sessions.
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, emailing them to other students, 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
- Review of advanced Java topics:
- File IO
- Exception handling
- Class inheritance
- Polymorphism
- Interfaces
- Java generics
- Recursion and (optionally) recursive backtracing
- Linear search and binary search
- Sort algorithms:
- Review of quadratic sorts (selection sort, insertion sort, possibly bubble sort)
- Mergesort
- Quicksort
- Introduction to algorithmic performance analysis, Big O
- Lists
- Array-based list
- Linked list
- Doubly linked list (optional)
- Circular linked list (optional)
- Stacks using array as storage and using linked list as storage
- Queues using array as storage and using linked list as storage
- Deque (double ended queue) ) optional
- Trees
- Binary trees
- Binary search trees
- AVL trees (optional)
- General trees
- Introduction to Graphs
- Hash tables
- Priority queues and binary heaps (optional)
- Heapsort (assuming that binary heaps are covered) (optional)
See the Tentative Weekly Schedule for approximate times when topics will be covered. All dates there are tentative, but should be a good indicator or the course timing.