CSCI 270: Introduction to Algorithms and the Theory of Computing (Spring 2016)

Basic information


Schedule by Week

Course Description

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


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: 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:

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.