CSCI-UA 102 (Data Structures)

Syllabus for CSCI-UA 102 sec 10, Professor Klukowska

Instructor Information

Course Information


Course Description

This course covers use and design of data structures, which organize information in computer memory. Topics covered include data structures (lists, stacks, queues, graphs, binary trees, binary search trees, hash tables), 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.


Course Objectives & Learning Outcomes

This section outlines the key knowledge and skills you'll acquire by successfully completing this course. The primary goal is to provide a comprehensive understanding of fundamental data structures and algorithms, emphasizing the underlying concepts so you can apply them in any programming language, not just Java, even though the programming language we will use in this course is Java. We will explore how to analyze and solve computational problems efficiently.


Communication, Asking Questions, Getting Help

If you have questions related to the course materials or assessments:

If you have questions regarding your grades or some personal issues


Assessments and Grading

The grade for this course will be determined according to the following formula:

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 amd Resources

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 old 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. 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

Java reference books

Other Resources


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 during 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 all 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 when you can benefit from the course most and succeed in its completion.

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.

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. Such submissions will result in incorrect grading of your project and you will, likely, end up with a lower grade than you would have otherwise. We will not be revising project grades because of your errors in the form submission.

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

Any student who requires academic accommodations should register with the Moses Center early in the semester so that we can provide these accommodations for the assessments. Students may not be able to receive proper accommodations if they register with the Moses Center within just a few days of the timed assessment.

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.

Generative AI Policy

The rise of generative AI tools like Gemini, ChatGPT, Copilot, and many others is fundamentally changing the landscape of computer science and beyond. Given their ubiquity, it is increasingly difficult to avoid their use. In this class, we will not ban these tools; instead, we will attempt to show you how to use them to your benefit rather than to your detriment.

Using AI to do all of your coding work for you will be a detriment to your learning. This approach will leave you unable to perform on exams, succeed in technical interviews, or be a reliable contributor on projects where you are expected to be an expert. True mastery in this field comes from a deep, hands-on practice and understanding of the material, not from effective prompting.

Instead, we encourage you to use AI as a learning partner, leveraging its capabilities in the following ways:

Keep in mind that exams and other assessments in this class will not be given with access to AI tools, so you need to be able to write complete programs, implement parts of given programs, answer questions and suggest solutions to problems on your own without the help of any tools.

Further resources:

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

Not Fair Actions


Topics Covered

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.