CSCI 270 Spring 2015: Introduction to Algorithms and the Theory of Computing
CSCI 270: Introduction to Algorithms and the Theory of Computing (Spring 2015)
- Lecture time: Monday and Wednesday 2:00pm-3:20pm
- Lecture place: GFS 116
- Instructor: Shaddin Dughmi
- Email: firstname.lastname@example.org
- Office: SAL 234
- Office Hours: Wednesday 4:00pm - 5:30pm
- TA: Joe Bebel
- Email: email@example.com
- Office Hours: Friday 3:00pm - 4:00pm in VHE 210
- TA: Li Han
- Email: firstname.lastname@example.org
- Office Hours: Tuesday and Thursday 5:00pm - 6:30pm in LVL17
- Course Homepage: www-bcf.usc.edu/~shaddin/cs270sp15
- May 9: Homework 4 solutions are out.
- May 7: The final will be on Wednesday May 13, from 7pm to 9pm, in SGM 101. Please arrive 15 minutes early. You are allowed a cheat sheet (8 x 11, two-sided, hand-written).
- Apr 28: Homework 3 solutions are out.
- April 26: The rest of Homework 4 is out. To allow time for you to understand and apply undecidability, the deadline is extended to Monday, May 4.
- April 15: The first part of Homework 4 is out. As we cover computability theory, I will add two or three more problems. Homework 4 will be due on Friday, May 1.
- Mar 30: Homework 3 is out. It will be due in class on Monday April 13.
- Mar 30: Midterm solutions and grading rubric are out.
- Mar 11: Homework 2 solutions have been updated with a couple of bug-fixes and clarifications.
- Mar 10: Homework 2 solutions are out.
- Mar 5: Midterm will be held on Wednesday March 11 from 7:00pm to 8:50pm. Room is TBA. More detailed instructions were emailed to you.
- Feb 26: Deadline for homework 2 has been extended to Wednesday, March 4.
- Feb 17: Homework 1 solutions are out.
- Feb 16: Homework 2 is out. It will be due in class on Monday March 2.
- Jan 25: Homework 1 is out. It will be due in class on Monday Feb 9.
- Jan 12: Mailing list has been created. You should have already received an email from me; if not, please contact us to make sure you are on the mailing list.
- Jan 8: Course website is up!
Schedule by Week
- Week 1: Introduction, Stable Matching, Representative problems
- Week 2 Refresher on the basics of algorithm analysis
- Required Reading: KT chapters 2
- Recommended reading: This handout reviewing asymptotic analysis, courtesy of Michael Shindler and Aaron Cote.
- Week 3-4: Refresher on the basics of graph algorithms.
- Required Reading: KT chapter 3
- Weeks 4-6: Greedy Algorithms
- Required Reading: KT chapter 4
- Weeks 7-8: Divide and Conquor
- Required Reading: KT chapter 5
- Weeks 9-11: Dynamic Programming
- Required Reading: KT chapter 6
- Weeks 11-13: NP-Completeness
- Weeks 14-15: Computability theory
- Required Reading: Chapter 1 of Arora/Barak
- Recommended Reading:
- Additional references: Turing's original 1936 paper
- Fun reading: The graphic novel Logicomix for a fictionalized account of the development of formal logic and the foundations of computation
The course covers the fundamentals of algorithm design and the theory of computing. Much of the work of a
computer scientist is problem solving using computational artifacts (such as modern computers), and problem
solving involves describing step-by-step procedures that can be followed by machines. These are called
algorithms. Many fundamental techniques for algorithm design, as well as specific algorithms themselves,
recur throughout all areas of computer science, and computer scientists must be able to apply design and
analysis techniques to devise efficient algorithms and compare them.
The flipside of algorithm design is knowing the limits of algorithm design: when are problems so intractable that they either cannot be solved at all, or can --- to the current state of scientific knowledge ---
only be solved by very inefficient algorithms? Such knowledge is necessary to avoid searching for solutions
to problems that simply cannot be solved.
The course CSCI 270 provides an introduction to both of these complementary pieces: it covers greedy algorithms, Divide&Conquer algorithms, Dynamic Programming and their corresponding analysis techniques.
It also contains an introduction to the theory of NP-completeness and computability theory. At the discretion
of the instructor, it will contain a discussion of a subset of the following topics: algorithms for flows and cuts, linear programming, the role of randomization in computing, approximation
algorithms, number-theory based cryptographic algorithms, and non-standard models of computing.
The course textbook will be Algorithm Design by Kleinberg and Tardos. We will lean heavily on the textbook, though I will occasionally assign additional reading which will be linked on the course website.
Requirements and Grading
- Homework (50%): There will be 4-6 assignments overall, at the instructor's discretion, spaced roughly 2-3 weeks apart. This is a theory class, and therefore homeworks will be proof-based and will not involve any coding. The homeworks are intended to be quite challenging, with individual problems requiring possibly several days of thought, so plan ahead. Typically homework will be due in-class, at the beginning of lecture.
- Midterm (20%): This will tentatively be held on Wednesday 3/11, during the scheduled quiz section from 7pm to 8:50pm. The instructor reserves the right to reschedule the midterm to any other wednesday at the same time.
- Final (30%): This will be held on the day/time mandated by the university, namely Wednesday May 13 between 7pm and 9pm.
Regrades: You are allowed at most two weeks after homeworks/exams are handed back to request a regrade. Requests should be submitted in writing to one of the TAs, and you must wait at least 1 day after receiving your graded homework before submitting one (to avoid hasty knee-jerk requests).
Late Homework Policy: You will be allowed 4 late days for homework, to be used in integer amounts and distributed as you see fit. No additional late days are allowed. To submit a late homework, please leave it in the dedicated dropbox in PHE (Box #1), and immediately send email to both TAs informing them of the time of submission.
Collaboration and Academic Integrity
I will expect the utmost in academic integrity from each of you, and I will trust you to abide by the commensense norms of academic integrity (see the statement on academic integrity near the bottom of the website), in addition to the expectations I lay out below. If you have any doubts as to whether a certain practice is considered a violation of academic integrity, it is your responsibility to preemptively ask me or the course staff before engaging in the practice. While we will not go out of our way to identify violations of academic integrity, those who are found to be in violation will be referred to the office of judicial affairs without exception.
Collaboration: Naturally, the midterm and final will be individual work. However, consistent with the tradition in theoretical CS (and other mathematical disciplines), I will allow collaboration and discussion among students for the homework, with a couple of caveats. First, if you meet in a group to work on the homework, your group must include no more than 5 individuals, and you must acknowledge everyone in your group on your submitted homework. Second, you are not allowed to take any written material with you out of the meeting. Third, you must wait at least 30 minutes after any discussion with fellow students, and then write up your solutions independently.
Consulting outside sources: I expect that you will not seek out outside sources pertaining to particular homework problems. In other words, consulting solution manuals, or googling for solutions to similar problems, are both absolutely considered cheating. That being said, you are allowed (and encouraged) to consult general sources (e.g. wikipedia, books, or course notes) pertaining to course content in order to broaden your perspective, so long as you do not specifically seek out material related to a particular homework problem.
Statement for Students with Disabilities
Any student requesting academic accommodations based on a disability is required to register with Disability
Services and Programs (DSP) each semester. A letter of verification for approved accommodations can be
obtained from DSP. Please be sure the letter is delivered to the instructor as early in the semester as possible.
DSP is located in STU 301 and is open 8:30 a.m. to 5:00 p.m., Monday through Friday. The phone number
for DSP is (213) 740-0776.
Statement on Academic Integrity
USC seeks to maintain an optimal learning environment. General principles of academic honesty include
the concept of respect for the intellectual property of others, the expectation that individual work will be
submitted unless otherwise allowed by an instructor, and the obligations both to protect one's own academic
work from misuse by others as well as to avoid using another's work as one's own.
All students are expected to understand and abide by these principles. Scampus, the Student Guidebook,
contains the Student Conduct Code in Section 11.00, while the recommended sanctions are located in Appendix A: http://www.usc.edu/dept/publications/SCAMPUS/gov/. Students will be referred to the Office
of Student Judicial Affairs and Community Standards for further review, should there be any suspicion of aca-
demic dishonesty. The Review process can be found at: http://www.usc.edu/student-affairs/SJACS/.
Emergency Preparedness / Course Continuity in a Crisis
In case of a declared emergency if travel to campus is not feasible, USC executive leadership will announce
an electronic way for instructors to teach students in their residence halls or homes using a combination of
Blackboard, teleconferencing, and other technologies.