A0: Introduction
San Skulrattanakulchai
September 4, 2018
Overview
- Algorithms, the recipes for solving computational problems, is the essence of Computer Science.
- In this course we will learn both the theory and practice of algorithms.
- On the theory side, we learn to design, analyze, and prove algorithms correct.
- common combinatorial algorithms and general design techniques
- symbolic & discrete algorithms, not numeric & continuous
- sequential, not parallel
- We will ask and answer these questions:
- How to find good algorithms?
- How to prove an algorithm correct?
- How to analyze resouce usage of an algorithm?
- On the practical side, we learn to implement some common algorithms to solve real programming contest problems. Can be hard!
Prerequisites
- (MCS-177: Introduction to Computer Science I)
- MCS-178: Introduction to Computer Science II
- MCS-256: Discrete Calculus and Probability
Textbook
- Algorithms, by Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani, McGraw-Hill, 2007
- References
- Introduction to Algorithms, 3rd edition, by T.H. Cormen, C.E. Leiserson, R.L. Rivest, and C. Stein, McGraw-Hill, NY, 2009
- Algorithm Design, by Jon Kleinberg and Eva Tardos, Pearson/Addison-Wesley, 2006
Class Attendance and Participation
- It’s important that you attend and participate in class.
- Students who skipped classes receive poorer course grades.
- In each class you will get a chance to earn 1 participation point by
- asking/answering questions
- pointing out mistakes that I make or are in the textbook or lecture notes
- making perceptive comments.
- Class participation will count for 4% of your course grade.
Assignments and Grading
- Closed book, in-class exams
- test 1 (15%)
- test 2 (15%)
- final exam (30%)
- 6 programming assignments (36%)
- class participation (4%)
- course letter grades
86-100 |
A |
81-85 |
A- |
76-80 |
B+ |
71-75 |
B |
66-70 |
B- |
61-65 |
C+ |
56-60 |
C |
51-55 |
C- |
46-50 |
D+ |
41-45 |
D |
0-40 |
F |
Late Assignments
- late submission of programs penalized 15% per late day
Academic Honesty
- group study encouraged
- discussion allowed
- all programs must be independent work
- no source code copying
- ideas for solutions must be acknowledged
- under no circumstances may you hand in work done by someone else under your own name
- first violation results in a grade of 0 on the project or exam in question
- second violation results in an automatic F for the course and a notification to the Provost Office
Accessibility Resources
- let me know of your disability support as early as possible
- accommodation cannot be done retroactively
Example Algorithm Problems
- Minimum-cost Spanning Tree: Given a connected graph G = (V, E) with integer costs assigned on the edges, find a spanning tree of G whose sum of the tree edge costs is least possible.
- Single-Source Shortest Path: Given a connected graph G = (V, E) with integer costs assigned on the edges, and vertices s and t, find a path from s to t with the least sum of edge costs.
- Secret Sharing: Eleven scientists are working on a secret project. They wish to lock up the documents in a cabinet such that the cabinet can be opened if and only if six or more of the scientists are present. What is the smallest number of locks needed? What is the smallest number of keys to the locks each scientist must carry?
- Parallel Sum: Given a list of n integers and m processors (m >= n), design a fast parallel algorithm that will compute the sum of all the integers.