CS 4342/6342: Linear Algebra: A Computational Introduction

Course overview, policies


Java API

  • Instructor: 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)

  • Prerequisites: CS-1112 (or equivalent) - see undergraduate 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.

  • Textbook: 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 CS-2113 are. 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 lintool instructions
    • All programming assignments will be submitted via Blackboard by uploading zip files. these submission instructions.
    • 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 emailing me.

  • 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.
    • The 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.