Prof. Rahul Simha
- Time/place (Spring 2018):
- Class: Fridays 10.30 - 1.00 pm, Tompkins 201
- Office Hours: 5-6pm Tuesdays, SEH 4560
(Or by appointment)
- TA: TBD
- TA Office Hours: TBD
- Course CRN's: 78652 (for CS-4342), 78653 (for CS-6342)
CS-1112 (or equivalent) -
curriculum. Working knowledge of Java.
- Official catalog description:
Linear algebra applied to computational problems in computer science and engineering. Topics include points, vectors, matrices, and their programming abstractions; 3D transformations, pose and viewpoint estimation; linear equations; algorithms for matrix decompositions, dimension reduction, computation with large matrices, under- and over-determined systems; applications to big data, computer vision, text processing.
- Informal course description:
Linear Algebra is one of the most powerful and widely applied tools
in mathematics. Unfortunately, even though it's considered
relatively "easy" among math courses, intuition in linear algebra
is often hard to come by. In this course, we will use a computational
approach to both convey intuition and to show how to apply linear
algebra algorithmically in a variety of modern applications,
especially in data science. We will start from scratch,
with only high-school math as the needed background, and end with
the "superstar" of linear algebra, the Singular Value Decomposition (SVD).
- Learning outcomes:
By the end of this course, students will:
- Be able to explain some important applications of linear algebra.
- Demonstrate understanding of core linear algebra concepts
through implementation in code.
- Be able to apply linear algebra to applications.
- Strengthen their proof skills.
The course will not need a textbook because
the lecture material will be available to you on this site. However,
it often helps to read a textbook alongside. Here are some linear
algebra textbooks. They differ in style and coverage, but are all
excellent in their own way.
- Linear Algebra and Its Applications by Gilbert Strang.
This is the classic linear algebra "bestseller", written by
someone recognized for his teaching (see his videos at MIT)
and passionate advocacy of linear algebra.
The book is informally written, and many key concepts are
introduced through examples in a lively, conversational style,
almost as if he's in the room talking to you.
It is not a standard theorem-proof math textbook, however,
and some theoretical explanations are a bit too light.
Also, it dives into linear equations too early and too quickly.
- Linear Algebra and Its Applications by David Lay.
This book is representative of a huge class of "standard" linear algebra
textbooks, prescribed by math departments all over the world
for their entry-level linear algebra courses.
It's a model of prosiac clarity and economy, has excellent
formatting and layout, and is great for
understanding the core concepts. The proofs are readable and
as elementary as possible, which makes it approachable for
undergraduates. One downside is that it covers fewer
topics than, say, Olver's book below.
Linear Algebra by Jim Hefferon. A nicely written,
easy-to-read, free textbook,
with some unusual and compelling examples not found in other
books. At the same time, it is aimed at a more standard
math undergrad course and is less "applied".
A more advanced, graduate-level free textbook is
Linear Algebra: Theory and Applications by Kenneth Kuttler.
- Applied Linear Algebra by Peter Olver and Chehzad Shakiban.
This is easily the most comprehensive textbook on linear algebra,
and possibly the best shelf reference. It is, however, harder
to read than all the other books in this list, and probably
more suited to a graduate introduction to linear algebra. If you can
manage to handle this book, you don't need any other book:
it is the most in-depth, has the most coverage, and is
very thorough. Just to give you an example, the presentation on discrete
fourier transforms, a tiny aside in the book, is done very nicely.
It has the best introductory presentation of the QR algorithm I've seen,
and worth the price just for that.
The one major downside is that you have to know what to skip,
or else you'll be overwhelmed.
- Practical Linear Algebra: A Geometry Toolbox, by
Gerald Farin and Dianne Hansford.
This book is a unique take on linear algebra, using geometry as
the driving application. It's nicely written, with lots of
simple illustrative examples, and assumes very little background.
The downside is that the coverage is a bit limited.
- The Manga Guide to Linear Algebra by Shin Takahashi
and Iroho Inoue.
How could I not include the only comic book on linear algebra?
- Programming load:
The course will have considerable programming, because it's the
way you will learn many core concepts. But it is not intended
to be a primarily programming course in the way that CS-1112 or
If you are taking TWO OTHER programming-intensive
courses, you could be in for a challenging semester. Stop by and discuss
the issue with me.
- Java: We will not need any of the advanced features
of Java. Most of the programming will be simple C-like programming
(in Java) with arrays and loops. Although your code will implement
a Java interface, and you will use one or two objects,
you don't really need to understand how interfaces or objects really work.
especially in the assignments.
- See the
Learning activities and coursework page
for a description of student learning activities and submitted work.
- Weightage and grading:
See grade breakdown
- Assignment submission and late work policy:
- Proofs and other written homeworks will need to
be submitted on paper in my mailbox in the CS department.
Note that the CS department may not be open after 5pm.
- Almost all programming assignments will need the
package specially developed for this course
called lintool. See these
- All programming assignments will be submitted via
Blackboard by uploading zip files.
- The late policy is simple. You can submit something
up to a week past the due date, but will lose 50% of the grade.
There will no pro-rating by-the-day: it's either on time or
will lose 50%. The only exception is the final project
which will need to be submitted on time.
- If you're seeking an extension because you've been ill AND have
a doctor's note, come by and see me about it.
- Don't forget: you need to pick a crypt-key for the
semester and email that to the TA before the first
exercise or assignment is due.
- Laptop/phone/device policy:
You are generally expected to turn off or silence your phones
and other such devices.
Since all material is available online on this website,
there should be no need to take notes on a laptop. Only one
laptop per team should be open during class time, and ONLY
during in-class work that requires the laptop.
All other laptops and devices should be closed during class.
- Email policy:
You can send email to my GW email address.
I will answer most class email during specific times set aside during
the week for this purpose - so do not expect an instantaneous response.
Since this is an advanced class, you may not perform "debugging by email".
That is, do not send me code snippets and ask me to identify the problem.
If you want me to look at your code, you have to stop by in person
during office hours and bring along hardcopy. Email is typically used
for clarification regarding coursework. If there is a TA assigned to
the course, you ought to try to email the TA assignment-related questions before
- Academic Integrity policy:
- In this course, you will be expected to work on all assigned
coursework by yourself, unless otherwise specified by instructions on
the course website. If you have any questions whatsoever regarding these
policies, see me during office hours.
- You may NOT, without permission from the instructor,
exchange course-related code with anyone (including
anyone not registered in the course), or download code for use
in your coursework, or use material from books other than the textbook.
Likewise, you may not look
at anyone else's code or show your code to anyone else. Protect
your work: for example, be careful not to leave your printouts around.
The only exception is when team or groupwork is explicitly specified.
- If using a tutor, you may not show your code to
your tutor nor use code shown or written by your tutor.
All tutors for this course need to first register with me, by meeting
me during office hours.
- If you use material in your assignments that are from
outside the course material, then you should be prepared
to explain that material. The instructor and TA's reserve
the right to question you on your use of extraneous material.
Failure to answer such questions might be viewed as
grounds for an integrity violation.
Academic Integrity Code or Student Conduct Code
will apply to this course, as will the
Computer Science Department Integrity Policy.
Please read through carefully.
- Penalties for violating the code or the policies described here
include failing this course, and are elaborated in the Academic Integrity Code.
- If you have a disability that may
effect your participation in this course and wish to discuss academic acommodations,
please contact me as soon as possible.
- GW's emergency preparedness guide.
- Finally, note that course policies may be adjusted or
modified during the course of the semester.