From Mohammed J. Zaki

IntroAlgorithms: Syllabus

CSCI 2300 - Introduction to Algorithms

Syllabus and Class Policies

1. Course Overview

This course presents fundamental ideas and techniques of modern algorithm design and analysis. After completing this course, students should be able to analyze and design efficient algorithms for a variety of computational problems. Students will learn a variety of algorithm design techniques, how to apply them to different problems, and how to choose which technique should be used for which problem.

Learning Outcomes

The goal of this course is to provide a strong foundation in algorithms and data structures in preparation for jobs in industry or for more advanced courses. Algorithms are the basic language of computer science. After taking this course, you, the student, should be able to:

Textbook

The required course textbook is Algorithms by Dasgupta, Papadimitriou, and Vazirani. See also the textbook errata.

Although the lectures will mostly be drawn from the textbook, we will still cover things that do not appear in the text, and the textbook includes material that we will not cover in class. You are responsible for the content of the lectures as well as any assigned readings. You may also find the following books useful for reference and for different perspectives:

Pre-requisites

The pre-requisites for this course are CSCI 1200 and 2200. We will assume that everyone has seen the material in these courses, and will use it as necessary.

The labs involve programming, and you are expected to be a competent programmer coming in -- the lectures will not discuss any code. The TAs and undergraduate mentors can provide some help on programming issues in lab. The textbook also does not deal with programming issues. You may want to consult your textbooks from previous courses.

2. General Class Policies

Website and Announcements

We will make extensive use of Piazza and the course website. You are responsible for checking the course website regularly for announcements and course materials, as well as your e-mail for communications related to the class.

Lectures

Students are highly encouraged to attend all classes. You are responsible for all material covered and announcements made in lecture.

Laptops and Electronic Devices

No laptops or other electronic devices are allowed in lecture. Even if you are diligently taking notes on your laptop, the bright screen and the activity is extremely distracting to the people behind you. Because of this, "movie theater" rules apply: no laptops, phones, or other devices with a screen on them should be out during lecture. Students who continually disrupt the class will be asked to leave.

Exams

There will be two midterm exams in class (see the class schedule for the exact dates), and a comprehensive final exam during finals week. All exams are open-textbook and open-notes. We will not provide make-up exams unless the absence is excused by the Dean of Students. Any students with special circumstances must notify the instructor during the first two weeks of class.

Grading

The two midterm exams will each count for 25% of your final grade, the final exam for 30%, the homework/labs/recitations for 20%. We will give an approximate grade breakdown right after each exam, and grades will be posted online. If there is any error with your recorded grades, you must notify the instructor within one week of the grade being posted.

Regrades

Any request to re-evaluate a grade must be made within one week of the return date of the homework or exam in question. You must explain why you think your grade should be changed in writing, and submit your request to an instructor or a TA, together with the original problem solution. The second grade will remain. Your entire assignment or exam will be regraded and your grade may go up or down, or it may stay the same.

Policy on Academic Integrity

Student-teacher relationships are based on trust. For example, students must trust that teachers have made appropriate decisions about the structure and content of the courses they teach, and teachers must trust that the assignments that students turn in are their own. Acts which violate this trust undermine the educational process. The Rensselaer Handbook of Student Rights and Responsibilities defines various forms of Academic Dishonesty and you should make yourself familiar with these.

In this class, you are allowed (and encouraged) to discuss homework and lab problems with other members of the class, and to formulate ideas together. However, everyone must write up their assignments completely separately, and include the names of everyone you discussed the assignment with. When working on lab assignments, you may discuss general approaches to the problem, but you may not look at anyone else's code or show your code to them: all the actual programming must be done entirely on your own. Failure to write the solution to a homework or lab completely on your own will be considered a breach of academic integrity. You may not copy (or near-copy) a solution from another, or use resources other than the class notes or the class textbook. Use of materials other than the class textbooks, including any material found on the Internet or material from previous versions of this course, is a clear breach of academic integrity and will be punished severely. No collaboration, or any electronic devices, is allowed during exams. Violating the above policy will result in the final grade being reduced by a letter and a 0-grade for the assignment for both parties. Depending on the circumstances, harsher penalties may be used, including a failing grade for the class.

3. Homework Guide

Homework Submission:

Homework should be submitted online via Submitty, before the deadline. You will not be allowed to turn in late homework for any reason without a written note from the office of the Dean of Students.

Writing Proofs and Algorithms:

Working Together:

You are allowed (and encouraged) to discuss homework problems with other members of the class, and to formulate ideas together. There is no penalty for working in groups. However, everyone must write up their assignments separately, and include the list of "collaborators" that you discussed the assignment with. Make sure that you spend a lot of time thinking about the problems yourself and writing up the solutions; students who only follow their collaborators' lead will find the exams much more difficult.

You may not copy (or near-copy) a solution from another student or any other (e.g., online) forum. Failure to write the solution to a homework completely on your own will be considered a breach of academic integrity, and may result in the final grade being reduced by a letter and a 0-grade for the homework for both parties. No collaboration is allowed during exams.

Grading:

Any request to re-evaluate a grade must be made within one week of the return date of the homework or exam in question. You must explain why you think your grade should be changed in writing, and submit your request to the TA. The second grade will remain. Furthermore, we will not accept regrade requests that dispute the amount of partial credit awarded; we are only interested in instances where an actual mistake has been made. Do not be surprised if your regrade takes a long time, as we will only process them periodically.

3. Lab Guide

Labs

The purpose of labs is to help you with the course material in a smaller setting. You will be required to complete a programming assignment for each lab. This assignment will be handed out in advance, and ideally, you will finish the assignment in advance of the lab. However, you can get help from the TAs during lab if you are unable to finish in advance. See the class hour schedule for the time and place of your lab section.

Labs will be held weekly and attendance to scheduled labs is required. Those who show up late for lab or those who leave without completing the lab risk not receiving full credit. Labs cannot be made up: the only way to receive credit for a missed lab is to obtain a written note from the office of the Dean of Students excusing your absence. The exams may contain material covered in labs. Due to the size of the sections, you must attend your assigned lab section. The TA will take attendance and you will not receive credit unless you attend your assigned section.

The labs must use python for programming. You are expected to be a competent programmer coming in. The TAs and undergraduate mentors can provide some help on programming issues in lab, but you should be able to answer your own programming and debugging questions.

Lab Grading

To obtain credit for a completed lab assignment, you must show your code and results to a TA during your assigned lab section. Please do not submit your code: we will ignore it. The only way to get credit for a lab is to show your results and code to a TA in person during your assigned lab section. Please make sure that the TA checks you off: do not leave the lab section before the TA records your name and grade. If your results are shown to the lab TA before the end of the section, then the grading will be as follows:

Recitations

Frequently, labs will be replaced with combined recitation/office hours held by the TAs. These sessions are intended to provide you with support for honing your problem solving skills, as well as helping out with homeworks. Attendance to these sessions is required, just as it is for labs.

Recitation Grading

The grade will simply be 0 or 1. To get a grade of 1, you must show up to the recitation, and either show the TA a mostly completed homework which is due that week (in which case you can leave the lab early), or stay until the end of the lab section while working on your homework. (Of course, please feel free to ask the TAs for advice on your homework: this is why they are there!)

Retrieved from http://www.cs.rpi.edu/~zaki/www-new/pmwiki.php/IntroAlgorithms/Syllabus
Page last modified on January 15, 2018, at 01:00 PM