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:
This page is based on a syllabus provided to me by Mark Crovella.