Information
Geometric Algorithms
Boston University
Fall 2023

CAS CS 132 (Geometric Algorithms) is an introduction to linear algebra with a bent towards applications in computer science. One of its primary goals is to prepare students (you) for courses in the CS curriculum at BU which require some degree of linear algebra. Due to the fundamentality of linear algebra, in machine learning, in graph algorithms, in optimization, in graphics (and so on), this list of courses is substantial.

I want to also make clear at the offset that this is not a course in computational geometry in the traditional sense; we will not cover some beautiful topics like triangulation, mesh generation, geometric data structures, or convex programming (despite the seemingly out-dated description of the course in our registrar).

Instead, we will be covering other beautiful topics like matrix factorization, eigenvectors, Markov chains (and so on again). The "geometric" part comes from the way we will learn to think geometrically, in how linear algebra will help us conceptualize data as something spatial. Professor Mark Crovella has a nice note on this in the preface of the text we will be using for this course.1

Prerequisites ⟫ CAS CS 111 (in particular, knowledge of python)

Resources

Material ⟫ We will primarily be using the online text written by Professor Mark Crovella for this course. The text is a jupyter notebook which you can access online. All supplementary material will be made available on this site and on Piazza.

Much of the material in this online text is based on the textbook Linear Algebra and its Applications by David Lay, Steven Lay and Judi McDonald. When possible I will include optional readings of the associated sections. This is also a great resource for practice problems. I will also occasionally refer to Interactive Linear Algebra, a beautiful textbook out of Georgia Tech by Dan Margalit and Joseph Rabinoff.

Programming ⟫ The programming assignments for this course (and the examples in the text) are written in python with the libraries, numpy, scipy, and matplotlib. It is required that you set this up on you personal machine or on a machine that you will have access to over the semester. Please attend office hours and use Piazza if you need help troubleshooting. If you are worried about access to technology, please contact me as soon as possible and we can see what we can do (though I cannot make any guarantees).

Course Communication ⟫ Course announcements and discussions will happen on Piazza. If you are unfamiliar with Piazza, see their support page for information and tutorials. Some policies regarding the use of Piazza:

  • Don't ask homework questions directly. Formulate a question which will aid in your understanding, and will hopefully help others as well.
  • Don't give homework solutions directly. The answer-provider is just as culpable as the answer-receiver in cases of cheating.
  • Piazza is as useful as it is active. Teaching fellows and course assistants will be answering questions on Piazza, but don't hesitate to answer questions yourself.

Homework Submission ⟫ Assignments are submitted on Gradescope. If you are unfamiliar with Gradescope, see their get-started page for information and tutorials.

Office Hours ⟫ Please see Piazza for posted offices hours.

Evaluation

Homework ⟫ Problem sets are assigned each Thursday and are due the following Thursday by 2PM. You can discuss assignments during sections on Mondays, but TFs not go into details of the problems.

Each assignment will consist of two parts, one part analytical (calculations/proofs) and one part computational (python code).

For the analytic portion, you will submit a PDF via Gradescope. Your submissions may be scans of handwritten notes or PDFs created using Word, markdown, LaTeX, etcetera (this is the preferred choice, and I highly recommend learning LaTeX, especially if you're interested in doing research). Handwritten submissions MUST be neat and the graders have license to dock points if your submission is not legible. For the computational portion, you will submit code via Gradescope.

There are 12 problem sets in total (the last one is shorter but worth the same amount) and your 10 highest scores will contribute to your final grade.

Late assignments will not be accepted. This allows us to post solutions in a timely manner.

Expect to commit some time each week to these assignments.

Exams ⟫ There will be one midterm and a cumulative final.

Participation ⟫ Part of your grade will be determined by your participation in a weekly Google form.

Grading ⟫ Your final grade will be determined by

  • 50% homework (top 10 of 12 scores)
  • 20% midterm exam
  • 25% final exam
  • 05% participation

Cut-offs for letter grades will be determined at the end of the course. I cannot guarantee what the cut-off will be, but you will not receive a letter grade lower than the one determined by your raw percentage.

Footnotes:

1

This page is based on a syllabus provided to me by Mark Crovella.