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, and have a chance of passing the course once the final exam or the last programming project is completed (students need to request the grade of incomplete in the course on Albert).
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. Some of the labs will be assessed based on completion, but most of the time, we will select part of the lab to be graded based on correctness.


Course Policies

This course follows CAS Academic Policies that can be found at https://bulletins.nyu.edu/undergraduate/arts-science/academic-policies/.

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 the instructor and the Dean of Students in your school for guidance on 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

When you submit the programming project before the posted due date, you will receive 5 bonus points for that project.

Anybody can submit the code for the project for additional five days after the official due date. There will be no point deductions for projects submitted within that five-day window. No submissions will be accepted after these additional five days pass.

The graders will start grading once all submissions are made.

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.

In order to receive accommodations for assessments in this course, you need to request them at least seven days prior to such an assessment. Setting up accommodations and scheduling with Moses Center takes time.

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:

Whenever you use AI tools in your learning, question the correctness of the results. It should be your learning partner and you need to know why certain data structures, algorithms and programming language features are used. You need to be able to explain the answers and code that it produces.

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.

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.