CSCI-UA 480 (Algorithmic Problem Solving)

Textbook(s) - ALl Optional


Competitive Programming, 3rd edition,
Steven Halim, Felix Halim,
optional
Programming challenges : the programming contest training manual
Steven S. Skiena, Miguel A Revilla,
accessible through NYU Libraries
Guide to competitive programming : learning and improving algorithms through contests,
Antti Laaksonen,
accessible through NYU Libraries
Principles of Algorithmic Problem Solving,
Johan Sannemo,
preliminary draft of the book, available through the author's site
Algorithmic problem solving, 2011
Roland C. Backhouse,
accessible through NYU Librarires

Useful Resources


Prerequisites


Topics Covered (exact list of topics will depend on how quickly or slowly we will go through the material)


Grading


Your course grade will be based on:

The letter 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 or missed earlier exams or assignments. Those students should withdraw from the class or switch to Pass/Fail option.

Paper Exams

There will be two paper based exams. All exams are cumulative, timed and synchronous. You are expected to write algorithms (in a programming language independent fashion) and apply given algorithms (no coding).

Missing a paper exam: If you miss the exam 1, the exam 2 score will count for both. If you miss the exam 2, you will receive a grade of incomplete in the course and you will need to take the exam 2 during the first week of the spring semester.

Coding Exams

There will be three coding exams: two during the regular lecture time and the third during the time allocated for the final exam. These will be timed and synchronous exams and you will have to code in a controlled environment with limited access to resources other than your own knowledge.

Missing a coding exam: If you miss the exam 1, or the exam 2, the score will be replaced by exam 3. If you miss the exam 3, you will receive a grade of incomplete in the course and you will need to take the exam 3 during the first week of the spring semester. You cannot miss more than one of the coding exams.

Weekly Problem Sets

Each week you will have a problem set to solve (several problems of varying difficulty). You should expect 12 problem sets with 5 problems each. (These numbers may be adjusted if there are significant changes to the course scheduling.) Fifty highest scoring problems will count towards your course grade. There will be no late submissions on problem sets for any reason (this is why we will be dropping ten lowest scores). We will try to avoid having due dates that conflict with major holidays, but it is not always possible. The only late submissions will be allowed at the start of the semester to accommodate students who may be joining the class after the due date for a problem set.

Video Presentation

For each problem set, there will be several students who will need to submit a video presentation of their solution for one of the week's problems. These will be graded on completeness and clarity of the explanation, and consistency of the explanation with the submitted code. Each week we will randomly pick a number of students to submit such a video. If you wish, you can volunteer for a given week, but we will restrict the number of volunteers.

If you are not satisfied with the score that you receive for your video submission, you can submit another video for a different problem (assigned to you in the later time). The second grade will count towards your course grade.

In-class Activities, Polls, and Pop-Quizzes

There will be a number of paper-based pop-quizzes, polls and other types of activities during the regular lectures. We will drop one quarter of these grades to account for any absences.

Online Contests

You need to participate in one or more of the regular contests hosted on Codeforces. You need to submit passing solutions to five different problems (in a single contest or in multiple ones). Your solutions need to be submited while the contest is active, not after the contests concludes. Think of this as practice of your skills in the real world.

More details on which contests and problems qualify will be provided later.

Check the calendar of contests on Codeforces site for upcoming contests. There are contests added on a regular basis.

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 hope that you will 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 be given with no 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 Policy


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. But to benefit from those lessons you need to be a participant in the team and not just a taker.

All your work that is submitted for grading in this class has to be your own, unless otherwise specified. You need to acknowledge any help that you receive on the assignments 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

Academic Email Etiquette