## Coding the Matrix: Linear Algebra through Computer Science Applications

 所在平台: Coursera 课程类别: 计算机科学 大学或机构: Brown University(布朗大学) 授课老师： Philip Klein

Explore 1600+ online courses from top universities. Join Coursera today to learn data science, programming, business strategy, and more.

#### 课程详情

When you take a digital photo with your phone or transform the image in Photoshop, when you play a video game or watch a movie with digital effects, when you do a web search or make a phone call, you are using technologies that build upon linear algebra.  Linear algebra provides concepts that are crucial to many areas of computer science, including graphics, image processing, cryptography, machine learning, computer vision, optimization, graph algorithms, quantum computation, computational biology, information retrieval and web search. Linear algebra in turn is built on two basic elements, the matrix and the vector.

In this class, you will learn the concepts and methods of  linear algebra, and how to use them to think about problems arising in computer science.  You will write small programs in the programming language Python to  implement basic matrix and vector functionality and algorithms, and use these to process real-world data to achieve such tasks as: two-dimensional graphics transformations, face morphing, face detection, image transformations such as blurring and edge detection, image perspective removal, audio and image compression, searching within an image or an audio clip, classification of tumors as malignant or  benign, integer factorization, error-correcting codes, secret-sharing, network layout, document classification, and computing Pagerank (Google's ranking method).

#### 课程评论(9条)

 1 基佬的愛__ 2013-11-27 13:41 1 票支持; 0 票反对 Disclaimer: the review is more or less subjective. I have absolutely no intention to make it objective. You have been informed. 这门课是面向计算机系开的一门线性代数课，总体体验比叶老师那门课要好。不过我还是希望以后能有一门数学系开的线性代数课，这门课的编程作业太多了，而且其中一部分对一个有经验的程序员来说意义不大。如果是刚学编程的同学上这门课还是很有价值的，至少你能把 Python 的 comprehension 理解的很好，很多练习需要写列表或者词典解析。
 1 optman 2013-08-10 17:09 1 票支持; 0 票反对 刚完成第四周的作业，通过实际代码，基本理解了Hamming Code的原理。然后看了一下网上的介绍，云里雾里，感觉还是通过实战的理解更深刻。课程的作业自动评分系统是有点诡异，明明都通过测试用例了...行吧，我也不要求满分，学到东西就好，别太纠结了。与以前上学时，做完作业也不知道对错相比，现在可以及时得到反馈，效果要好很多。
 3 大家都叫我瑞爷 2013-08-09 16:01 3 票支持; 0 票反对 这门课不能算是一门入门课，尤其是不能视为线性代数入门课，因为关于数学部分的课程材料过于简略。此外，这门课还有编程作业较多的特点。因此此课比较适合：了解线代，但是不懂如何将线代应用到计算机上解决问题。我见过有人吐槽这门课线性代数教的太少了。所以想学线性代数的guys请移步到mit公开课网站直接修线性代数。
 -1 ototsuyume 2013-08-08 20:47 1 票支持; 2 票反对 值得吐槽的很多： 1.老师讲课水平不咋样，课程内容也有问题，很多基本概念没有说清楚 2.作业量偏大，而且大部分是重复的计算，比如上上周作业是要实现matrix类各种运算，然后作业里面还要用另外的方法算matrix的乘法，不明白这样做的意义何在 3.课程介绍说这门课很偏向应用，但貌似基础概念讲不好应用讲得也很浅，从作业上没看到这点，你将线性变换好歹在作业里让学生拉长一张图片都比实现vector、matrix类要好吧 4.svd分解等内容因为课程长度问题不会讲，这门课的含金量进一步降低。 另外虽然吐槽的是这个老师主页上还写着拿过布朗大学的优秀讲师奖项的，从他讲课的方式来看我不明白这个奖到底是怎么评的...
 0 大伟无疆 2013-08-08 18:04 1 票支持; 1 票反对 现在流行的还是python2吧，这课程用python3。 想讲的东西太多，一部分是提了几句，例如图像处理部分。 把所有能用list或数组操作的事物都看成了matrix，这个我能吐槽一下么。
 5 52nlp 2013-07-02 18:07 5 票支持; 0 票反对 比较关注这门线性代数的应用课程，所以昨天课程开始后就看完了第1周(week 0)的视频，主要是对这门课程的介绍以及讲了一些数学预备知识，包括函数，复数域以及伽罗瓦域或者有限域中的GF2，除了最后一个，其他都比较简单。 今天做了一下编程作业，其实主要是复习Python的相关知识点，同时包括这一周相关的知识点。不过这门课程明确要求用Python3.3.2，作业从发布之后有3个周的时间来做作业，时间还是比较宽裕的。作业主要包括家庭作业和实验作业（Homework and Lab assignments），基本上都是Python编程作业，用相关的Python脚本提交后，服务器会自动记分。如果想拿到课程证书，一般章节需要你至少拿到60分，但是对于向量或矩阵这两节课需要至少85分。 从这门课程的安排来看，涉及的线性代数知识点都比较基础，包括： Week 0 July 1 - 7 The Function The Field Week 1 July 8 - 14 The Vector Week 2 July 15 - 21 The Vector Space Week 3 July 22 - 28 The Matrix Week 4 July 29 - Aug. 4 The Basis Week 5 Aug. 5 - 11 Dimension Week 6 Aug. 12 - 18 Gaussian Elimination The Inner Product Week 7 Aug. 19 - 25 Orthogonalization 但是正如这门课程在其介绍中所谈到的课程哲学，它重视的是“learn by doing"： gives you the ability to create new and useful artifacts with just your mind and your fingers, allows you to have more control of your world as more and more of it becomes digital, is just fun. 这个理念和另一个在线编程学习网站Code School是刚好一致，通过练习或者实践来学习，知行合一，才能更好的理解线性代数在实际应用中的魅力。
 0 ldian-revival 2013-05-28 17:03 1 票支持; 1 票反对 当年为了搞清楚用矩阵进行3D变换的原理先是把线性代数老师问崩溃，然后是找资料把自己找崩溃。
 4 课程图谱 2013-05-28 12:49 4 票支持; 0 票反对 看介绍，很有意思的一门课程，主要关注线性代数在计算机科学中的应用，同时能看出线性代数这门课程是多么的有用，和它相关的领域包括计算机图形/图像处理，密码学，机器学习，机器视觉，优化问题，图算法，量子计算，计算生物学，信息检索和搜索引擎等等学科。 回到这门课程，它首先会介绍线性代数的基本概念和方法，最主要的是让学生学会在面对计算机科学的相关问题时如何用它们区解决问题。学生将用Python去实现基本的矩阵和向量相关的函数和算法，然后用它们出处理现实世界的问题，例如人脸识别，音频和图像压缩，文本分类以及PageRank等等。

#### 课程简介

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.