CSCI 270: Introduction to Algorithms and the Theory of Computing (Spring 2016)
- Instructor: Shaddin Dughmi
- Email: email@example.com
- Office: SAL 234
- Office Hours: Tuesday 3:30pm - 5:30pm @ SAL 234
- TA: Haifeng Xu
- Email: firstname.lastname@example.org
- Office Hours: Thursday 4pm - 6pm @ SAL computer lab common area
- TA: Ehsan Emamjomeh-Zadeh
- Email: email@example.com
- Office Hours: Friday 5pm - 7pm @ SAL 246
- TA: Bailan Li
- Email: firstname.lastname@example.org
- Office Hours: Tuesday 8am - 10am @ SAL computer lab common area
- Course Producer: Stephen Tsung-Han Sher
- Email: email@example.com
- Office Hours: Monday 1pm - 3pm @ SAL computer lab common area
- Course Producer: Kevin Lei
- Email: firstname.lastname@example.org
- Office Hours: Wednesday noon - 2pm @ SAL computer lab common area
- Course Homepage: http://www-bcf.usc.edu/~shaddin/cs270sp16
- April 18: Homework 6 has been posted. It will be due by end of day on Wednesday May 4.
- April 6: Homework 5 has been posted. It will be due in class on Monday April 18.
- Mar 22: Homework 4 has been posted. It will be due in class on Wednesday April 6.
- Feb 25: Homework 3 has been posted. It will be due in class on Monday March 7. This homework is shorter than most, since you have less time to do it, and it will therefore count for a smaller fraction of your grade.
- Feb 10: Homework 2 has been posted. It will be due in class on Feb 24.
- Jan 22: Homework 1 has been posted. It will be due in class on Feb 8.
- Jan 14: Most office hours have been posted. These are likely temporary, pending permanent room assignments by the department.
- Jan 13: There will be two optional review sessions on Wednesday 1/20 and Wednesday 1/27. On 1/20, the review will cover background material from Chapter 2 of KT, and on 1/27 the review will cover material from Chapter 3 of KT. Both review sessions will be in OHE 122, and will run from 7pm to 8:50pm (i.e. during the quiz section time).
- Jan 13: Piazza page is up. You should already been added, but if not then go ahead and request to be added. We will use Piazza for discussions and announcements.
- Jan 11: Course website is up!
Schedule by Week
- Week 1: Introduction, Stable Matching
- Weeks 2-3: Review of algorithm analysis and basic graph algorithms (during quiz section)
- Required Reading: KT chapters 2 and 3
- Weeks 2-4: Greedy Algorithms
- Required Reading: KT chapter 4
- Weeks 5-6: Divide and Conquor
- Required Reading: KT chapter 5
- Weeks 7-8: Dynamic Programming
- Required Reading: KT chapter 6
- Weeks 9-11: Max Flow / Min cut
- Required Reading: KT chapter 7
- Additional reference: Non-terminating example for the Ford-Fulkerson algorithm with real-valued capacities can be found in the Wikipedia article.
- Additional reference: Bobby Kleinberg's notes on the Edmonds-Karp algorithm and its analysis.
- Weeks 12-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 5-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 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/9, 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 11 between 7pm and 9pm, in SGM 124.
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 TBD, and immediately send email to a TA 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.