COMPSCI 330 Design and Analysis of Algorithms Rong Ge
Logistics Lectures: Tuesdays and Thursdays 3:05 - 4:20 PM Recitations: Fridays 3:05 - 4:20 PM, Gross Hall 107 Recitations are required! Webpage: http://www.cs.duke.edu/courses/fall17/compsci330/ Office hours: After the class until 5:30 PM. TA office hours: See course webpage, starts next Monday.
Grades Homework 40% 2 Midterms 30% Final Exam 30% Homework should be typed and submitted to Sakai. Please take a look at the tentative schedule and if you have a conflict for any of the exams let me know as early as possible. Read the guideline on collaboration. Go to office hours!
Lecture format Slides first, then go to the board (tablet). Best way of learning a proof is to write it down yourself. I will try to record the lectures – hopefully the technology does not fail.
Contact us Piazza: http://piazza.com/duke/fall2017/compsci330 Please use for all general discussions. Grading questions: For homework contact one of the grad TAs. For exams contact me. Send me an email: rongge@cs.duke.edu
Algorithms From wiki: In mathematics and computer science, an algorithm is a self-contained sequence of actions to be performed.
Designing an Algorithm - Basics Divide and conquer Dynamic programming Greedy algorithms
Designing an Algorithm - Examples Graph algorithms Shortest paths Minimum spanning tree Bipartite matching Data structrues Hashing Disjoint sets
Designing Algorithm – General Tool Linear Programming Formulation Duality Algorithms
Proof of Pythagorean Theorem Analysis - Proofs Proof of Pythagorean Theorem Writing proofs is a major part of the course.
Proofs for algorithms? Correctness: 12343*9432583 = 116426471969 ? (No: 116426371969) More complicated: Why should I believe this is the shortest path to the airport?
Proofs for algorithms? Running time: How long should the algorithm take. Space: How much memory does the algorithm need.
Other aspects (not in this course) Privacy/security
Other aspects (not in this course) Fairness
Goal Design new algorithms for applications you care. Prove correctness/running time for algorithms.