Course Web Page
Contact Info for Instructor, office hours, assignments and general information is all on the course
This course will cover topics in Geometric and Probabilistic methods in Computer Science, with an eye towards interesting, modern applications of these tools.
Text: We will primarily use the following book and two survey papers
A good reference book is also Probability and Computing by Mitzenmacher and Upfal.
What you should know
You should have a basic familiarity with algorithms and data structures as from a class such as
CS361/CS362. You should also have a certain mathematical maturity and familiarity with proof techniques similar to what would be covered in a advanced
undergraduate mathematics class. Students completing
CS362, CS561, CS530 or CS500 should be well-prepared for the class. If you
haven't taken any of these classes and are still interested, please
come talk to me.
Topics we cover will likely include some subset of the following:
This class will be fairly student-driven so there is the possibility of covering other topics. Grading will be based on
participation and a class project, with some (likely ungraded)
homeworks to practice concepts in the class.
- Computational Geometry
- Fundamental Problems and Algorithms: Convex Hull, Voronoi diagrams, Planar subdivisions, Triangulation
- Linear Programming and Applications
- Vector Spaces and Applications, particularly to coding theory
- Data Structures: Interval Trees, Priority Search Trees
- Probability and Randomized Algorithms
- Machine Learning: Multiplicative Weights, Applications of Multiplicative Weights to Computational Geometry and
Genetic Algorithms, Expert Learning
- Randomization in closest point queries, with connections to PAC learning and VC dimensions
- Randomized distributed algorithms: Maximal Independent Set,
Byzantine consensus, Leader Election
- Error-correcting codes, with a focus on probabilistic and geometric methods
- Homeworks 50% (3)
- Class Project, 30%
- General Participation, 20%.