YouTube 上有哪些计算机方面的值得推荐的公开课？
2020/06/10 update: new course on networking 2020/05/03 update: new course, abstract algebra 从17年开始至今，这个答案便一直被断断续续更新，没想到会有不少人收藏。我已经对答案做了一次大的改动，希望可以节省各位朋友的时间。毕竟生命有限，一定要上最好课！ 以下列出的是我自14年至今上过的大部分课程，现在将其分为「小白」，「入门」和「进阶」三个级别（可能要再过几年我才敢回来加个「精通」 ），便于各位按需自取。每一类下面，我又根据个人的感受，将其分为了【强推】（强烈推荐），【推荐】，和【已阅】（有时间你就看看）。推荐的内容不限于Youtube。因为从10年开始便一直在上公开课，文末我会推荐些非计算机课程，给大家当做调剂。 小白级别 -- 给那些对计算机完全陌生的人 强推：Computer Science Crash Course 主讲人：CARRIE ANNE PHILBIN, Director Of Education in Cambridge, United Kingdom 这门课制作十分精良，而且涵盖了计算机的方方面面，从最底层的晶体管讲到了最上层的AI。每个视频的长度约十分钟，适合简单了解下计算机的工作原理以及发展史。  推荐：Programming Foundations with Python 主讲人：Kunal Chawla, Co-Founder at Chalees Minute School 这门课从零开始教你写python，学习曲线非常的低，很容易上手，培养信心和兴趣。不过，不知为何这门课从udacity的官网上下架了，因而只有这个Youtube的版本了。  已阅：In One Lesson 主要讲一些硬件的工作原理，没事可以看着玩玩，权当是放松了。  小白级别的课程就只有这么多。看完之后你可以对计算机是什么，又是如何工作的，有一个大概的感觉。 强推：This is CS50 主讲人：David Malan, Professor at Harvard University 这门课一出来便非常火，当时上课给我的第一印象就是这个老师太有激情了，讲课时真的是literally挥汗如雨。这门课作为哈佛的计算机科学入门课程，教学内容覆盖面很广，从二进制讲到网络开发，这个过程中使用的语言包括C, python, JS等等。是一门十分值得花时间好好学习的课。  强推：6.006 Introduction to Algorithms 主讲人：Srini Devadas, Professor at MIT 这是一门比较难的算法课，一定要做他们的练习题，不然无法保证你真的理解了这些算法。犹记得15年的时候准备google的面试，一周把这门课上完了，然而并没有掌握好。难归难，算法则是一定要学好的。  强推：Networking tutorial 主讲人：Ben Eater, Khan Academy(former) 这是一门很短却直至精髓的课。从大家都能看到的网线开始讲电信号如何传输，最后以介绍TCP协议为止。每个人对学习方法的偏好不同，有人喜欢抽象，有人喜欢具体，我正好是后者。这门课就非常具体，把每个bit如何在网络中游走讲的一清二楚。这门课不涉及算法，优化等，十分适合入门。  推荐：Distributed Computer Systems Srinivasan Keshav, Professor of Computer Science at the University of Cambridge 这门课主要讲的是网络通信，从底层的switch一步步讲到TCP等协议。老师很有意思，课上各种喷google是如何侵犯大家的隐私的。  推荐：Intro to Computer Science 主讲人：David Evans, Professor of Computer Science University of Virginia 这门课的核心是使用python来打造一个搜索引擎。之所以推荐它，是因为这门课更接近于软件工程，有大量的实际操作，需要你写出正确的代码才能进行下一步学习。另外这位老师的冷笑话也蛮好听，后面还会推荐他的另一门课。  推荐：Computation Structures 主讲人：Chris Terman. Senior Lecturer, Electrical Engineering and Computer Science at MIT 对于想要了解计算机是如何从简单的电压变化演变到现在的操作系统的，可以看看这门课。老头子风趣幽默，特别喜欢冷笑话。  已阅：An Introduction to Computer Networks 主讲人：Professors at Stanford 发现了Stanford这门课很好，各种layers都覆盖到，还请一些业界大牛做采访。  已阅：Learn in One Video 这个网站不同的地方就在于，每一个视频如同填鸭一般的把一门编程语言一次性讲完。每次我要快速了解（不是掌握）一门语言时，就会把对应的视频看一两遍。  已阅：Operating Systems and Systems Programming 主讲人：John D. Kubiatowicz, Professor at UC Berkeley 这个我觉得一般，可能是PPT做的不咋样，不介意的可以去看看。  已阅：Intro to Database System 主讲人：Joseph M. Hellerstein, Professor at UC Berkeley 这个我觉得一般，老师讲课略显枯燥，也可能知识学到这个份上没法不枯燥了吧。 软件工程 强推：Test-Driven Development with Python 这是一本非常棒的书，作者教你如何用TDD的范式来使用Django开发网站。  推荐：C++ Tutorial 主讲人：The Cherno(Yan Chernikov), Software Engineer at Electronic Arts (EA) 小伙子长得贼精神，讲的贼清楚，若想要学C++，推荐看他的视频。  推荐：The Go Programming Language 入门Go时看过的一本书，写的非常详细，淘宝有卖的。  已阅：Learn Python the Hard Way 我看的那个时候还是免费，现在官方已经只在Amazon卖了，这是个免费版本，适合Python入门。  软件工程更多的是积攒经验了。多看优秀的开源代码，多看文档，慢慢学习。  机器学习 强推：Neural Networks and Deep Learning 主讲人：Michael Nielsen, Research Fellow at Y Combinator Research 这本书网上可以免费阅读，写的非常细致，解释的很清楚。  推荐：Artificial Intelligence 主讲人：Pieter Abbeel, Daniel Klein, Professors at UC Berkeley 我很喜欢这门课，作业记得要跟着做完，最后的project做了个游戏，挺有意思。  已阅：Full Stack Web Developer, Front End Web Developer, Machine Learning Engineer 主讲人：Udacity 这三个nanodegree，如果你没什么经济压力，倒是可以花钱上一上。我15年上的那会儿，都是先搜索里面指定的课程，然后上完课程，再去做nanodegree的projects. udacity的课程有个优势，它被敲打的非常零碎，章节之间插入了大量的练习，再加上毕业项目，很适合非计算机专业的人去学习然后找相关的工作。 如果需要学习概率统计以及线性代数，强烈推荐去Khan Academy.  分布式系统 强推：Distributed Systems 主讲人：Robert Morris, Professor at MIT 这门课，网上并没有清晰度高的视频。其实只要跟着这个表里的时间安排，把里面的papers都一下，把课堂的notes看一看就行。最重要是完成这门课的Labs，其内容是根据Raft的paper用Go把它实现一遍。提前预警整个过程非常虐心。。。  已阅：Distributed Systems 主讲人：Chris Colohan, Software Engineer/Manager at Google 分布式系统的公开课并不多，而这一门课则十分通俗易懂，适合入门。  密码学及其应用 强推：Introduction to Cryptography 主讲人：Christof Paar, Professor for Embedded Security at Ruhr University Bochum 德国的教授，英文讲的很好。重点是，这门密码学入门真的讲的太清楚了！所有的公式定理都会现场给你推演一遍。学完可以手推大部分密码学算法，同时会打下很好地理论基础，学完看paper无鸭梨。有教科书，练习题最好也一起做了。  强推：Applied Cryptography 主讲人：David Evans, Professor of Computer Science University of Virginia 这门课使用python来实现密码学里几个常见的算法。与上面那门课不同，这门课偏重于实践，需要写不少代码。  推荐：Abstract Algebra 主讲人：learnifyable 有关抽象代数的公开课不多，这一门讲的不错。如果对密码学，以及量子计算机感兴趣的话，可以先上一上抽象代数，对理解数学很有帮助。  Cryptocurrency Engineering and Design 主讲人：Professors at MIT 在数字货币方面，这门MIT的课是最up to date，涵盖了目前有关Bitcoin的方方面面。  已阅：Bitcoin and Cryptocurrency Technologies 主讲人：Professors at Princeton 如果你对blockchain感兴趣的话，这门课是不个不错的入门选择。不过作为一门常青藤学校出品的课程，内容还行，形式和传播效率上却做的一般。看着门课可能偶尔需要忍住枯燥，大部分时间需要把语速加快x1.25或者x1.5。  已阅：6.046J Design and Analysis of Algorithms 主讲人：Srini Devadas, Professor at MIT 这门课当时看的我很吃力（并未掌握多少），若有志于往算法优化这个方向发展，这个值得看一下。  已阅：Learning Solidity 18年的时候玩了下以太坊合约，这个入门还行，但以太坊这两年改动挺大的，最好还是去官网看吧。 Software Engineering Daily 一个常听的podcast，节目里请的是业界比较优秀的工程师，每一期大概一小时，来探讨software engineering这个行业里遇到的各种现象和问题，也有很多工程师在这里面分享自己的经验，云服务，devops，queue，scheduler，blockchain，等等等等。 上面的链接是他们的网站，iphone直接在podcast就有他们的节目，每日更新。 强烈推荐他家这篇健康的鸡汤，You are not a commodity  Kurzgesagt – In a Nutshell -- 解释宇宙，包罗万象  Computerphile -- 提供各种各样关于计算机世界的科普，没事看着玩玩  3Blue1Brown -- 把数学讲的非常清楚  Numberphile -- 一个给nerd解闷的channel，适合没事儿瞎看看 最后，国内的疫情让人十分难过，大家在技术学习之外，也可以看看一些人文学科的公开课，希望将来的将来，可以不再有这样的悲剧发生，在此先推荐几门课。 一门是哈佛的Justice。这门课我是10年看的，最近又拿出来看，依旧非常引人思考。  一门是耶鲁大学的Moral Foundations of Politics，跟哈佛的Justice很像，介绍了自文艺复兴以来，西方政府的迭代。  还有一门，是Jordan Peterson的Personality and Its Transformations。这是一门心理学课程，讨论的话题也十分广泛，引人深思。我个人也非常推荐大家关注Jordan这个人，他的许多观点虽然常常引发争议，但他却是真的勇士，敢于在公开场合去谈论这个话题。  alright, 等上了其它课，再来分享。 好奇，那些收藏了朋友们，你们学的怎么样啦？