Skip to main content

Teaching

I have taught seven different courses over the years: 

  • Com S 477/577 Problem Solving Techniques for Applied Computer Science  (Falls 2002-2005, 2007, 2008, 2010, 2012-2020)
  • Com S 472/572 Principles of Artificial Intelligence (Fall 2020)
  • Com S 418/518 Computational Geometry (Springs 2005, 2006, 2010, 2015, 2018-2020)
  • Com S 330 Discrete Computational Structures (Falls 1999-2001)
  • Com S 311 Design and Analysis of Algorithms (Springs 2000-2003, 2011)
  • Com S 229 Advanced Programming Techniques (Falls 2009, 2011; Springs 2006, 2008, 2009)
  • Com S 228 Introduction to Data Structures (Falls 2012, 2015, 2016; Springs 2005, 2012, 2014, 2015, 2018, 2019)

I have created the course Com S 477/577 (syllabus and schedule from Fall 2020) with lecture notes made available online.  The notes on several topics have been cited many times in research papers by others.  Listed below are the notes that I have used in recent offerings of the course. Hopefully, you may find some of them useful too. 

  1. Homogeneous coordinates
  2. Plücker coordinates 
  3. Homogeneous transformations
  4. Perspective projection
  5. Rotations in the space 
  6. Quaternions
  7. Dual quaternions
  8. Solution of linear equations
  9. Singular value decomposition
  10. Solution of nonlinear equations
  11. Polynomial evaluation
  12. Polynomial multiplication and fast Fourier transform
  13. Polynomial interpolation
  14. Roots of polynomials 
  15. Roots of a polynomial system
  16. Curves
  17. Curvature
  18. Closed curves and space curves
  19. Arbitrary-speed curves 
  20. Algebraic curves
  21. Surfaces
  22. Surface curves and fundamental forms 
  23. Principal curvatures
  24. Gaussian and mean curvatures
  25. Geodesics
  26. Nonlinear optimization
  27. Lagrange multipliers
  28. Linear programming
  29. The Simplex method
  30. Calculus of variations
  31. Variational problems
  32. Data fitting
  33. Nonlinear least squares
  34. Probability
  35. Recursive least squares
  36. Kalman filtering

I also have some lecture notes on the computational geometry course Com S 418/518 (syllabus and schedule from Spring 2020).  Primarily based on Mark de Berg et al.'s popular text on the subject, they are also made available below in case you find useful. 

  1. Geometric basics
  2. Convex hull
  3. Line segment intersection
  4. Doubly-connected edge list 
  5. Overlay of two subdivisions
  6. The Art Galley problem
  7. Triangulation
  8. Half-plane intersection
  9. Incremental linear programming
  10. Randomized linear programming
  11. Kd-trees
  12. Range trees
  13. Point location
  14. Trapezoidal maps
  15. Voronoi diagram 
  16. Voronoi diagram construction
  17. Farthest-point Voronoi diagram 
  18. Discrepancy computation
  19. Duality
  20. Arrangement of lines 
  21. Point set triangulation
  22. Delaunay triangulation
  23. Construction of Delaunay triangulation
  24. 3D convex hulls
  25. Envelopes, convex hulls and Voronoi diagrams
  26. Robot motion planning
  27. Minkowski sum 
  28. Visibility graphs
  29. Interval trees
  30. Priority search trees
  31. Segment trees
  32. Quadtrees