# Coding the Matrix: Linear Algebra through Computer Science Applications

Provided by:

8/10 stars

based on
17 reviews

Provided by:

Coding the Matrix: Linear Algebra through Computer Science Applications

## Course Details

### Cost

**FREE**

### Upcoming Schedule

- TBA

### Course Provider

Coursera online courses

Coursera's online classes are designed to help students achieve mastery over
course material. Some of the best professors in the world - like neurobiology
professor and author Peggy Mason from the University of Chicago, and computer
science professor and Folding@Home director Vijay Pande - will supplement your
knowledge through video lectures. They will also provide challenging
assessments, interactive exercises during each lesson, and the opportunity to
use a mobile app to keep up with yo...

Coursera's online classes are designed to help students achieve mastery over
course material. Some of the best professors in the world - like neurobiology
professor and author Peggy Mason from the University of Chicago, and computer
science professor and Folding@Home director Vijay Pande - will supplement your
knowledge through video lectures. They will also provide challenging
assessments, interactive exercises during each lesson, and the opportunity to
use a mobile app to keep up with your coursework. Coursera also partners with
the US State Department to create “learning hubs” around the world. Students
can get internet access, take courses, and participate in weekly in-person
study groups to make learning even more collaborative. Begin your journey into
the mysteries of the human brain by taking courses in neuroscience. Learn how
to navigate the data infrastructures that multinational corporations use when
you discover the world of data analysis. Follow one of Coursera’s “Skill
Tracks”. Or try any one of its more than 560 available courses to help you
achieve your academic and professional goals.

Provider Subject Specialization

Humanities

Sciences & Technology

4995 reviews

## Course Description

Learn the concepts and methods of linear algebra, and how to use them to think about computational problems arising in computer science. Coursework includes building on the concepts to write small programs and run them on real data.

Instructors

Instructors:
Philip Klein

University

University:
Brown University

Instructors

Instructors:
Philip Klein

University

University:
Brown University

Reviews
8/10 stars

17 Reviews for Coding the Matrix: Linear Algebra through Computer Science Applications

### Ratings details

- 5 stars
- 4 stars
- 3 stars
- 2 stars
- 1 stars

- 5 stars
- 4 stars
- 3 stars
- 2 stars
- 1 stars

- 5 stars
- 4 stars
- 3 stars
- 2 stars
- 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.

Sort By

**59**reviews**57**completed

6 years, 2 months ago

This innovative, challenging and rewarding course approaches a traditional
linear-algebra curriculum from a computational perspective. Students write
procedures implementing key mathematical concepts, and apply these to
interesting labs that have you changing the perspective of a photograph,
dabbling in machine learning, and writing a simple search engine. The lectures
are well-organized and the written materials are superb. Note, however, that
this is not primarily a programming course -- the point of the programming is
to understand and apply the math; those looking for a Python introduction as
such might prefer other options. In fact, because solutions to the programming
assignments are not provided and code cannot be shared or posted, your coding
skills may not improve much. And if you’re new to Python, expect to turn
frequently to external tutorials and resources. Those with no prior exposure
to linear algebra may al...
This innovative, challenging and rewarding course approaches a traditional
linear-algebra curriculum from a computational perspective. Students write
procedures implementing key mathematical concepts, and apply these to
interesting labs that have you changing the perspective of a photograph,
dabbling in machine learning, and writing a simple search engine. The lectures
are well-organized and the written materials are superb. Note, however, that
this is not primarily a programming course -- the point of the programming is
to understand and apply the math; those looking for a Python introduction as
such might prefer other options. In fact, because solutions to the programming
assignments are not provided and code cannot be shared or posted, your coding
skills may not improve much. And if you’re new to Python, expect to turn
frequently to external tutorials and resources. Those with no prior exposure
to linear algebra may also find themselves playing catch-up given the fast
pace and abstract focus of the lectures. The course emphasizes proofs at the
expense of explained examples and illustrative applications – great for math
lovers but maybe not for linear algebra neophytes. Overall, while the
presentation moves at a brisk march and the workload is considerable, those
willing to devote the time will find the pieces fitting together into a unique
learning experience. The course as given was actually only the first 8 weeks
of the12-week course taught at Brown, and a mini-course covering the remaining
material is planned. Future versions will hopefully cover the entire
curriculum in a single session.

Student

10/10 starsCompleted

5 years, 5 months ago

outstanding course. knew linear algebra before taking it, just wanted a refresher. also knew python. surprisingly the course was a great python refresher as well.
what really impressed was how professor klein showed the deep connection between abstract math and computer science. also loved the integration of data structures with linear algebra. highly recommended!

**1**review**1**completed

6 years, 5 months ago

Likes:
* Teaching math via programming is right up my alley. I hope to find more courses that do the same.
* Prof and staff were active in the forums.
* It seems that most of the grader problems reported during previous sessions have been sorted out. There were still a few outstanding issues, but staff was quick to either fix them or suggest a way around them.
* Lots of exercises
Dislikes:
* Videos. The prof stands in front of the PowerPoint and reads from the slides. I'm not typically one to skip the lectures and read the course notes, but I found there was little reason to watch the videos in the end.
* Provided Python modules. I often found them frustrating to work with. As an example, the vector and matrix classes include labels for their columns and rows. This adds extra overhead when creating and manipulating those objects – if you want to multiply a matrix M by a vector v, i.e. M*v, not only does vector v need to have...
Likes:
* Teaching math via programming is right up my alley. I hope to find more courses that do the same.
* Prof and staff were active in the forums.
* It seems that most of the grader problems reported during previous sessions have been sorted out. There were still a few outstanding issues, but staff was quick to either fix them or suggest a way around them.
* Lots of exercises
Dislikes:
* Videos. The prof stands in front of the PowerPoint and reads from the slides. I'm not typically one to skip the lectures and read the course notes, but I found there was little reason to watch the videos in the end.
* Provided Python modules. I often found them frustrating to work with. As an example, the vector and matrix classes include labels for their columns and rows. This adds extra overhead when creating and manipulating those objects – if you want to multiply a matrix M by a vector v, i.e. M*v, not only does vector v need to have the same number of rows as M does columns, as one would expect, but the labels of the rows of v have to match the labels of the columns of M. There never seemed to be any payoff for this added complexity.
Suggestions:
* I think there's a missed opportunity for visualisations. There are lots of compelling examples of linear algebra applications in 2-D and 3-D that could be rendered to the screen.
* Drop the column/row labels for matrices and vectors.

**91**reviews**66**completed

6 years, 7 months ago

Unlike the previous 14 reviews, this is about the second iteration of the
class. From what I can tell, the professor has made a fair amount of changes
addressing some of the complaints in the other reviews (and the 14 reviews
averaged 4 stars, so the complaints aren't that major). As this is only my
first week, I set the star ratings for content and instructor are set to
average until I can better assess the course (and whether I need to look at
any videos or not). I've taken python and linear algebra MOOCs before, which
is good because this class takes a lot of time to do well in. I see that the
professor has upped the time estimates from 4-5 hours/week in the first
iteration of this MOOC to 7-10 hours per week for this one. Maybe 7-10 is OK
if you want to get 60% on every single assignment (a requirement for a
certificate), but if you want to shoot higher, most people will need even more
time. I'm only finishing up the first week o...
Unlike the previous 14 reviews, this is about the second iteration of the
class. From what I can tell, the professor has made a fair amount of changes
addressing some of the complaints in the other reviews (and the 14 reviews
averaged 4 stars, so the complaints aren't that major). As this is only my
first week, I set the star ratings for content and instructor are set to
average until I can better assess the course (and whether I need to look at
any videos or not). I've taken python and linear algebra MOOCs before, which
is good because this class takes a lot of time to do well in. I see that the
professor has upped the time estimates from 4-5 hours/week in the first
iteration of this MOOC to 7-10 hours per week for this one. Maybe 7-10 is OK
if you want to get 60% on every single assignment (a requirement for a
certificate), but if you want to shoot higher, most people will need even more
time. I'm only finishing up the first week of assignments, I've watched no
lectures and I'm guessing I'm up to 15+ hours. I like that a community TA has
set up a thread for each problem in the assignments. An even better
improvement on that would be to also include a link on the assignments page to
such a structure (e.g. the Pattern Discovery in Data Mining MOOC on Coursera
has links on a weekly page which lists each video and a button linking to a
subforum for that video). If you want to be able to get a certificate while
missing or not completing most of some assignments, you are out of luck. I've
never seen that in a MOOC before. Since I want to do very well in this course,
I'm biting the bullet and spending a lot more time than I had planned, to do
this. I think for MOOCs which are taken mostly by people who are non-full time
college students, the professor should split this up into multiple MOOCs so he
can lengthen the course time and reduce the weekly work load.

**16**reviews**16**completed

7 years, 3 months ago

Great class. I would suggest already possessing a strong background in python
programming before beginning. I think the instructor did a good job presenting
the material. The homework was challenging but fun.

**19**reviews**19**completed

7 years, 9 months ago

Again I took this course as a refresher, so I completed this course with
distinction simply because I've ever taken the same class when in university,
and this class uses Python in which I'm very familiar with it. Very good
course.

**2**reviews**2**completed

7 years, 10 months ago

A remarkable course! Phil Klein is an amazingly talented teacher and his
practical approach of linear algebra through Computer Science, from
cryptography to computer vision is both original and highly effective.

### Join our mailing list for course updates, discounts and more.

#### Enter your email address here.

**25**reviews**24**completed

8 years, 1 month ago

This course is a pretty good attempt at combining Maths theory with practical
programming - I learned a lot about Python comprehensions, and a fair bit
about Linear Algebra. It gives a background on the maths and appears to finish
where the Machine Learning course begins - though I felt I could apply the
learning from ML theory a lot easier than from this course. PROS \- great boot
camp which forces you to really write correct Python code \- learning the
Maths theory and applying it in code each week \- grader allows multiple
attempts with no obvious time limits (necessary though) \- active forums \-
fun secondary (still mandatory) assignments - I loved the one on changing the
perspective of a photo CONS \- Overly picky autograder, often rejects correct
Python code because it needs to be written in a certain way (possibly because
they force you to use comprehensions in a certain way) \- lots of homework:
2-3 short programming assignm...
This course is a pretty good attempt at combining Maths theory with practical
programming - I learned a lot about Python comprehensions, and a fair bit
about Linear Algebra. It gives a background on the maths and appears to finish
where the Machine Learning course begins - though I felt I could apply the
learning from ML theory a lot easier than from this course. PROS \- great boot
camp which forces you to really write correct Python code \- learning the
Maths theory and applying it in code each week \- grader allows multiple
attempts with no obvious time limits (necessary though) \- active forums \-
fun secondary (still mandatory) assignments - I loved the one on changing the
perspective of a photo CONS \- Overly picky autograder, often rejects correct
Python code because it needs to be written in a certain way (possibly because
they force you to use comprehensions in a certain way) \- lots of homework:
2-3 short programming assignments every week \- lectures could use some more
comments around applications of the theory being used, rather than just the
maths theory followed by occasional code. The secondary weekly assignments
should have been referred to frequently in the videos, to reinforce why this
particular bit was useful Overall, I am glad I did this course - it was very
challenging and time consuming but well worth the effort.

**10**reviews**8**completed

8 years, 1 month ago

This is a course with a lot of potential, which unfortunately it completely
fails to live up to. Video lecture quality is mediocre at best. The instructor
lectures in front of a large screen, and frequently will be standing in front
of the notes on the screen. The lectures themselves are very dry, abstract,
and "mathy", which is to be expected for the subject, so I'm not counting this
against the class. The homework load is heavy, which would be okay if the
instructions were always clear and unambiguous, which they are not. For
example, a two-part homework problem would require that you assign values to
two python variables, but the variables would not be named in the
instructions, so you had to guess which variable should hold which answer. The
autograder has a number of problems. Feedback from the autograder was
generally unhelpful. For example, there was a four-part problem where the
autograder would only respond "Incorrect", with...
This is a course with a lot of potential, which unfortunately it completely
fails to live up to. Video lecture quality is mediocre at best. The instructor
lectures in front of a large screen, and frequently will be standing in front
of the notes on the screen. The lectures themselves are very dry, abstract,
and "mathy", which is to be expected for the subject, so I'm not counting this
against the class. The homework load is heavy, which would be okay if the
instructions were always clear and unambiguous, which they are not. For
example, a two-part homework problem would require that you assign values to
two python variables, but the variables would not be named in the
instructions, so you had to guess which variable should hold which answer. The
autograder has a number of problems. Feedback from the autograder was
generally unhelpful. For example, there was a four-part problem where the
autograder would only respond "Incorrect", without telling you which parts of
the problem were wrong. In another case, the autograder would accept an answer
of the form "a + b", but not of the equivalent form "b + a". Ambiguities in
the homework and problems with the autograder are the sort of thing I expect
might get ironed out if the class is offered again. Course staff does not seem
to be actively monitoring the forums, and a blanket prohibition on posting
code to the forums makes it very difficult for students to help each other.
But the absolutely unforgivable sin, the one which prompts the low rating I
have given, is that the instructor will not be posting sample solutions to the
assignments after the deadlines have passed. If you can't figure out a problem
on your own, you are completely out of luck. The way you learn to write better
code is by looking at other peoples code, and this class does not allow you to
do this at all.

**5**reviews**5**completed

8 years ago

I did have some background with basics of Linear Algebra. The promised
computer science applications of this course is what I signed up for. Also, I
had just started learning Python, so the fact that Python was the language for
this course was an added bonus. In a nutshell, the course did deliver on that
promise, but failed on almost all other aspects of the course. Pros: \-
Rigorous, non-trivial assignments. Makes you think about foundational first-
principles of linear algebra. \- It shows the power to Python as especially
suited for numerical applications. I am really glad that this course used
Python instead of something like Matlab/Octave. \- Good call on splitting the
course into two parts. The advanced follow-up course will be offered sometime
in the future. I think this was a very good call. Otherwise the fraction of
people dropping out of this course would have been much higher. Cons: \-
Grader. Oh, the grader. Absolutely ru...
I did have some background with basics of Linear Algebra. The promised
computer science applications of this course is what I signed up for. Also, I
had just started learning Python, so the fact that Python was the language for
this course was an added bonus. In a nutshell, the course did deliver on that
promise, but failed on almost all other aspects of the course. Pros: \-
Rigorous, non-trivial assignments. Makes you think about foundational first-
principles of linear algebra. \- It shows the power to Python as especially
suited for numerical applications. I am really glad that this course used
Python instead of something like Matlab/Octave. \- Good call on splitting the
course into two parts. The advanced follow-up course will be offered sometime
in the future. I think this was a very good call. Otherwise the fraction of
people dropping out of this course would have been much higher. Cons: \-
Grader. Oh, the grader. Absolutely ruthless grader. A course which is supposed
to take 4-5 hours a week ends up taking 7-10 hrs because you are trying to
debug some really mundane grader related issues. In the process, you're
learning neither Linear Algebra nor Python. Also, the fact that feedback given
when you submit an incorrect answer are absolutely useless. I expect a CS
course to be a little more foolproof. However, I think this issue won't be as
bad in the next versions of the course. \- Prof. Klein, though very
enthusiastic and knowledgeable about the course material, is just reading off
of the slides most of the time. In fact, I ended up reading the proofs of the
lemmas myself directly off of the slides to save time. \- The programming
knowledge required to complete the course if ill-advised. Beginner programmers
will find it hard to cope with the rigour of the course. So, beware! All in
all, I am happy with the course, but I wish I had signed up for the second
offering of the course instead of the debut offering. Would have saved me a
considerable amount of time.

**10**reviews**9**completed

8 years ago

Prior Experience: Took several linear algebra courses at university and have
python programming experience If it is a pure Linear Algebra course, I would
not enroll into it in the first place. I am curious to find out how matrices
and vectors can be applied to computer science problems. Like: 1) Interesting
Labs - Real application of matrix and vector calculation to Computer Science
problems. Use dot product to find out if politicians cast same or different
votes to a legislative bill. Use matrices to scale, translate, rotate and
color scale an image. Instructor even provides python code to display the
image in web browser to see the effect. 2) The discussion forum is very
engaging. Tons of positive comments from staff and fellow colleagues. When I
get stuck, I always find good advice in existing posts. Dislike: 1) Brutal
autograder - If solution does not yield the expected result, autograder
returns a generic yet unhelpful message, ...
Prior Experience: Took several linear algebra courses at university and have
python programming experience If it is a pure Linear Algebra course, I would
not enroll into it in the first place. I am curious to find out how matrices
and vectors can be applied to computer science problems. Like: 1) Interesting
Labs - Real application of matrix and vector calculation to Computer Science
problems. Use dot product to find out if politicians cast same or different
votes to a legislative bill. Use matrices to scale, translate, rotate and
color scale an image. Instructor even provides python code to display the
image in web browser to see the effect. 2) The discussion forum is very
engaging. Tons of positive comments from staff and fellow colleagues. When I
get stuck, I always find good advice in existing posts. Dislike: 1) Brutal
autograder - If solution does not yield the expected result, autograder
returns a generic yet unhelpful message, "Sorry, incorrect!". I would expect
an informative response from a program written by a Computer Science
professor. I never imagine to put Mathematics and Computer Science in the same
sentence. Thanks professor and TA for making linear algebra relevant in
Computer Science.

**33**reviews**29**completed

8 years ago

I took a linear algebra class in college (a decade ago.) We didn't cover much
in the course so I didn't get much out of. As I like programming, this seemed
like a good opportunity to actually learn Linear Algebra. And it was. I know a
lot more now than when I finished the course in college. I bought the class
book so I can read the 4 weeks of material that weren't covered in class. (The
book is very similar to the lecture so you don't really need it.) Every week,
there were homeworks and labs. The labs were applications of the concepts.
Week 1 was a lot of python questions. I think it was used as a combination
review and weeder week. Because you really do need to be very comfortable in
Python to handle the rest of the course. People were helpful in the forums
when you got stuck and they were well moderated. The TAs were knowledgeable
and monitored the forums as well. This was the first session of the class so
us students also served ...
I took a linear algebra class in college (a decade ago.) We didn't cover much
in the course so I didn't get much out of. As I like programming, this seemed
like a good opportunity to actually learn Linear Algebra. And it was. I know a
lot more now than when I finished the course in college. I bought the class
book so I can read the 4 weeks of material that weren't covered in class. (The
book is very similar to the lecture so you don't really need it.) Every week,
there were homeworks and labs. The labs were applications of the concepts.
Week 1 was a lot of python questions. I think it was used as a combination
review and weeder week. Because you really do need to be very comfortable in
Python to handle the rest of the course. People were helpful in the forums
when you got stuck and they were well moderated. The TAs were knowledgeable
and monitored the forums as well. This was the first session of the class so
us students also served the purpose of being beta testers for the autograder
than analyzes your homeworks/labs for the class and the professor's website.
It could stand for some improvement. I also felt like the assignments could
have used more detail of the output format and examples. I wound up writing
pyunit tests for myself to test and sharing them in the forums. I liked the
professor's philosophy of "don't worry if you gets stuck on a question; you'll
still pass.' Unfortunately as a computer programmer, I program I can't write
is like a puzzle calling out to me. I went back to them until I got them all.
Overall, it was a good class though.

**7**reviews**7**completed

8 years, 1 month ago

This course was criticized in the forums for the amount of assignment work. I
found the time taken on assignments varied from 10 minutes per week to 8 hours
per week! If you saw the clever solution it was often one or two lines of
code, if not then you could be stuck for an hour. All the puzzles were
solvable, and none were that tricky (once you'd spotted your silly mistake!).
If you enjoy puzzles and challenge that you've no idea how to solve
(especially if you've had no exposure to Python before) then you'll like this.
Sometimes the maths will be clear, but expressing it in Python will frustrate
- other times it'll be maths that needs decoding. I loved this course.
Completing it felt like an accomplishment.

**2**reviews**2**completed

7 years, 6 months ago

What you will get out of this course some knowledge of python list
comprehensions An understanding of the basics of linear algebra A vague idea
how to apply linear algebra to real problems Good problem solving skills Why
you might not want to take it: if you just want to learn linear algebra if you
just want to learn programming Summary: This class isn’t designed to purely
linear algebra as roughly half your time will be spent writing code and trying
to understand what problem is asking for. The fickle grader forces you to
think about the problem the way it wants. Which may result less in expanding
your mind and more frustration. If your goal is just linear algebra then a
good text on the subject or Gilber Strangs MIT class is will serve you better.
That being said this perspective is unique and is a amazing complement to a
tradtional class. Final Verdict: I would take this class but prepare by
running through Learn python the hard w...
What you will get out of this course some knowledge of python list
comprehensions An understanding of the basics of linear algebra A vague idea
how to apply linear algebra to real problems Good problem solving skills Why
you might not want to take it: if you just want to learn linear algebra if you
just want to learn programming Summary: This class isn’t designed to purely
linear algebra as roughly half your time will be spent writing code and trying
to understand what problem is asking for. The fickle grader forces you to
think about the problem the way it wants. Which may result less in expanding
your mind and more frustration. If your goal is just linear algebra then a
good text on the subject or Gilber Strangs MIT class is will serve you better.
That being said this perspective is unique and is a amazing complement to a
tradtional class. Final Verdict: I would take this class but prepare by
running through Learn python the hard way. Before. I have a hunch future
updated versions of this class will be Amazing and lack the grader
complications that sometimes dragged down this run through.

**1**review**1**completed

8 years ago

This has been my first coursera course so I can compare with others but I can
only say that it has exceded my expectations a lot. The course it's not easy
and requires a lot of work, however, since the topic is compelling and the
professor explains very well, I feel it has been time very well expensed.

**25**reviews**25**completed

8 years ago

I started my Mooc adventure with Andrew Ng's ground breaking, wonderful
Machine Learning class and now pause after Philip Klein's equally ground
breaking, equally wonderful course on coding up linear algebra. I say pause as
I imagine I will be returning to Moocs in the future as the need and
opportunity arise. Using code to teach mathematics is a brilliant way to bring
a traditionally dry subject to life. I think this approach will prove
invaluable in both high school and university mathematics in the future. A big
challenge for educators is to get more people to code so that this new
approach to learning is open to them. And so on to my new role as a computer
science teacher......wish me luck!

**1**review**1**completed

8 years, 1 month ago

Very boring course. Some weeks contains lot of tasks (60+) - easy but amount
is too large. Lots of bags in graders.