你所讀的計算機科學方向,有哪些不錯的講義(Notes)?

相關問題:你所讀的(基礎)數學方向,有哪些不錯的講義(Notes)? - 書籍推薦

1. MIT、Berkeley等學校有些課程是不使用教材的,而是直接使用教授寫的講義,你看過的這些講義中有哪些是寫得比較好的?

2. 可以推薦一下自己看過的比較好的公開課(並不一定是Coursera等Mooc平台上的)。


我也來推薦幾個:

Compiler:

Stanford CS 143 (這個是編譯基礎課)

https://www.coursera.org/course/compilers

Compilers | Stanford Lagunita4

CS 243 (編譯進階課,講優化的)

這個是06版的講義,Ullman(龍書作者之一)寫的,感覺非常詳細,適合自學

CS243 - Advanced Compiling Techniques

這是新版的,感覺講義很多地方沒有寫清楚,不太適合自學

CS243 - Program Analysis and Optimizations

CS343(這個是高階課,全是讀論文)

http://web.stanford.edu/class/cs343/

CMU的編譯基礎課:

15-411 Compiler Design / Schedule

CMU的進階課:

http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15745-s14/www/handouts.html

Graphics:

MIT的圖形學內容很多,講的也比較清楚

Lecture Notes

CMU系列課程,有21門:

Carnegie Mellon Computer Graphics

Stanford的:

CS148 圖形學基礎是有錄像的

Courses in Graphics

Algorithm:

只推薦Princeton的系列課程,每個演算法都有詳細解釋,Coursera上有教程

而且每個演算法都有demo,講的很清楚,特別是紅黑樹部分(本來就是Sedgewick發明的,而且他在準備課程的時候想出了改進演算法),課程作業設計很好,Coursera版也有面試問題,適合找工作用,網站上還有很多經典演算法的java實現,代碼都很簡潔,還有詳細注釋

Java Algorithms and Clients

Part 1:

Coursera - Free Online Courses From Top Universities

Part 2:

Coursera - Free Online Courses From Top Universities

這是其他版本的,注意多了Combinatorial Search部分,也值得看一下:

COS 226, Fall 2012: Lectures

這是進階版的:

http://www.cs.princeton.edu/~wayne/kleinberg-tardos/

Cryptography:

Part 1:

Coursera - Free Online Courses From Top Universities

Part 2(一直沒開課不知道怎麼回事):

https://www.coursera.org/course/crypto2

Information Theory:

也是MIT的

Lecture Notes

Theory of Computation:

MIT的

Automata, Computability, and Complexity

進階版本:

Advanced Complexity Theory

Stanford的:

這個也是Ullman講的

Coursera - Free Online Courses From Top Universities

AI:

同樣MIT的,帶有視頻

Artificial Intelligence

ML:

Stanford CS229

CS 229: Machine Learning

https://www.coursera.org/learn/machine-learning

CS224d 錄像講義和幻燈片都有,資料很詳細

Stanford University CS224d: Deep Learning for Natural Language Processing

神經網路,Hinton 講的

Coursera - Free Online Courses From Top Universities


只提到自己讀過的lecture notes, 所以一大半來自於UIUC.

基礎演算法:

Jeff Erickson"s Algorithms, Etc.

組合優化:

基礎課

18.433 Combinatorial Optimization

覆蓋面廣的topics course

18.438, Spring 2014

CS 598CSC: Topics in Combinatorial Optimization: Home Page

幾乎整個課都是flow

IEOR 6614, Spring 2012

ORIE 633: Network Flows

COS 528: Data Structures and Graph Algorithms

(不知哪裡能找到很理論的好用的整數優化的lecture notes)

圖的代數演算法:

CS367 -- Algebraic Graph Algorithms

大數據有關的演算法:

CS 598CSC: Algorithms for Big Data: Home Page

隨機演算法:

http://sarielhp.org/teach/13/b_574_rand_alg/lec/

近似演算法:

CS 583: Approximation Algorithms: Home Page

其他:

15-859T: A Theorist"s Toolkit 2013


很慚愧這個答案因為最近的一些熱點事件又被很多人關注了,現在審視一下一年前的自己,很多東西沒能深入了解,多有掉書袋之感,堆砌了很多資料。最近有空會重新整理一下這個答案的。

--------------------------------------------------------------------------------------------------

好多同學要我寫一下別的領域的,但是我想說的是,其實屯了那麼多資料,不看的話其實一點用處都沒有。。。。

接下來寫的包含各個領域的,第一因為我研究領域在PLT和NLP方向,這些資料我無法甄別好壞,第二我也沒有都看完,質量無法保證,第三就是我選擇資料的第一條件是有好的assignment/lab/project 其次才是notes/slides/lectures, 因為我還是習慣看書,網上資料對我只是一個outline的作用。

系統:

  • 6.828 / Fall 2014 這個,不用我多介紹了吧,xv6 和jos 的代碼都值得好好讀的。
  • 6.858 / Fall 2014

    / Schedule 這是很多人忽視的6.858, computer system security方面的,lab都做完以後真·受益匪淺,還有video和notes,不能更良心。

  • 6.033 | Spring 2015 著名的CSE,我是把裡面提到的論文都掃過一遍,很有用。

  • 6.824 Home Page: Spring 2015 讀paper 和notes, 這個要注意的是現在的lab是用go寫的,以前的是C++,兩個都值得做(
  • http://www.cs.nyu.edu/~mwalfish/classes/15sp/index.html 其實這個才是我最OS的入門課程,一應俱全,lab比較簡單。

  • 15-213 不多說。
  • 2014/Syllabus harvard的系統方面的入門課,個人認為質量不比15-213差。

  • http://www.cs.cmu.edu/~dga/15-440/F12/ 同樣用go實現,沒看完,不評價。

  • CMSC 412: Operating Systems Fall 2015 6.828 補充。

系統方面的主要是project把。。其實那麼多我自己也沒看完-。-

網路:

沒什麼研究,自取吧。

  • CS144: Introduction to Computer Networking

ML:

這裡的是真 · 堆積鏈接 ,自己甄別。

  • Machine Learning 4771

  • COS 511: Assignments

  • CS 760 - Machine Learning

  • 10701/15781 Machine Learning

  • http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml

  • Topics covered in CMSC858L, Foundations of Machine Learning, Fall 2015

  • COS 598C, Spring 2012: Home Page

  • http://www.inf.ed.ac.uk/teaching/courses/iaml/

  • CS 229: Machine Learning (Course handouts)

  • CSE 705: Deep Learning

  • 11-785 DEEP LEARNING

  • CSE 446 - Machine Learning

  • https://computing.ece.vt.edu/~f15ece6504/#schedule

  • CS231n Convolutional Neural Networks for Visual Recognition

自取吧-。-

========分割線============

寫一些PLT和NLP領域的吧。

我只寫我看過的,質量有保證的notes...

PLT:

15-312: 15-312 Foundations of Programming Languages / Schedule 其實感覺跟PFPL差不多。。outline上差不多,當初就是靠這個進的坑。。

UW CSE505, Fall 2012 這個也已經詳細到可以當notes來讀了。。

CS 5510: Schedule and Homework 這個好處在於還有配套的racket代碼。。

CS 4110 - Programming Languages and Logics cornell這個講了些跟logic有關的

https://pl.barzilay.org/resources.html 用racket實現

Compiler:

cs143 之前有人推薦過了。。。靠這個混過了編譯考試。。

15-411 Compiler Design / Schedule 這個是強推看一遍的。。

Static analysis:

Computer Laboratory

UCLA CS 232 Static Program Analysis

軟體分析技術

15-819 O: Program Analysis

CS243 - Program Analysis and Optimizations

Abstract Interpretation

分析方面其實主要還是看paper和綜述了(

NLP:

COMS E6998: Machine Learning for Natural Language Processing

COMS W4705: Natural Language Processing (Spring 2015)

Stanford University CS224d: Deep Learning for Natural Language Processing

其實我存貨還有好多。。。系統,網路,還有ML方面。。都有。。但是我好多還沒看。。不敢貼上來誤人子弟,畢竟報道上出了偏差我是要負責的。。


我覺得牛津的Haskell創始者之一的這篇講義非常好,對函數式編程的數據結構設計從伴隨函子的角度來分析,將抽象代數引入到了程序設計中。

http://www.cs.ox.ac.uk/ralf.hinze/LN.pdf


OS, ML, NLP 方向的大家都說的很多了,我推薦一個比較接地氣的吧:

lecture notes for CS 61A at UC Berkeley: Composing Programs

一個基於 Structure and Interpretation

of Computer Programs 但使用 Python 作為教學語言的講義

我一直比較關注 CSE (Computer Science Education),所以研究了很多學校的 CS1 [1] 課程,UCB 的 CS61A 可以說是其中的一個標杆,這門課的講義不僅得到了包括 Peter Norvig,Brian Harvey 等人在內的早期反饋,還經過了長期的教學實踐的歷練,並將逐漸整理成書。

由 @飛龍 翻譯的 SICP Python 描述 中文版: https://github.com/wizardforcel/sicp-py-zh

---

感謝那些致力於計算機科學教育的工作者,敬禮。

[1]: What do "CS1" and "CS2" mean?


悄悄腿兩個:

Sinclair的MCMC:CS294 MARKOV CHAIN MONTE CARLO: FOUNDATIONS APPLICATIONS, FALL 2009

O"Donnell的boolean function:15-859S / 21-801A: Analysis of Boolean Functions 2012


The Blind Spot, 主要講證明論,作者是大名鼎鼎的J.Y.Girard。。

另:多說一句,千萬不要指望通過離散數學來學數理邏輯。。

15-819 Homotopy Type Theory,Robert Harper的課,他學生做的notes

MIT Course 16.399: ? Abstract Interpretation,Patrick Cousot親自講。。

Decision Procedures,Slide不錯,也出了本書。。

Static Program Analysis, 講得淺顯易懂。


大概寫一下ML方向自己讀過的或者在讀的(偏理論)

CS229 (General introduction),CS231n( deep learning cv ) ,CS224d( nlp )這種有人說就不說了

Numerical analysis:

J. Solomon: CS205a Mathematical Methods for Robotics, Vision, and Graphics

https://www.youtube.com/playlist?list=PLprpITDfpBdfjxZLX2Kj2dELP3mNNGPiw

CS 205A: Mathematical Methods for Robotics, Vision, and Graphics (Spring 2016)

才發現Justin大神現在去mit了。。。

Convex Optimization:

S. Boyd: ee364a/b

EE364a: Convex Optimization I

EE364b: Convex Optimization II

ee364a有視頻,是基礎內容和幾個經典演算法,ee364b就是現代的內容了

看了ee364a的基礎部分後直接去看ee364b的ADMM之類的也行

PGM:

Eric Xing: 10708 Probabilistic Graphical Models

10708 Probabilistic Graphical Models

14版有視頻,不過16版材料安排的更好

Algorithm (Advanced) :

Ankur Moitra: 18.409: Algorithmic Aspects of Machine Learning

18.409 Algorithmic Aspects of Machine Learning, Spring 2015

https://www.youtube.com/playlist?list=PLB3sDpSRdrOvI1hYXNsa6Lety7K8FhPpx

講義寫的比較簡略,但是課講的非常好,這課的視頻感覺是上課的學生自己拍的。。。

Sanjeev Arora: CS521 Advanced Algorithm Design

Princeton University CS Dept COS521: Advanced Algorithm
Design Fall 2015

CS598D Overcoming Intractability in Machine Learning

COS598D Princeton University Overcoming Intractability in
Machine Learning

Arora的。。。沒什麼好解釋的


Learn on Code Studio

迪士尼出的一小時編程項目。

兒童可視化編程。有4+和6+。目前帶8歲孩子學到階段三,已經理解了循環語句,正在理解函數和條件。

個人感覺比scratch(小貓程序)更容易上手,趣味性更強


50 頁 Martin-L?f Type Theory,快糙猛

http://www.csie.ntu.edu.tw/~b94087/ITT.pdf


https://github.com/prakhar1989/awesome-courses


關於 Quantum Computing 的話, 入門書除了少數新一些的東西, 基本上可讀性都不超過 NielsenChuang...課的話類似, 大概 Assignment 值得做, 何況即使是國內不少學校也在開了. 當然側重點可能不一樣.

更進一步的材料, 我覺得伍驍迪老師推薦的這些(CIS 410/510 Introduction to Quantum Information Theory: Reference)已經很全了, 下面摘錄一些:

  • John Watrous 的 Theory of Quantum Information(Theory of Quantum Information). 今年出了新版(多了些線索), 處理非常數學化, 基本沒啥圖像(相反, NielsenChuang 的圖像就非常清晰). 另外大量使用了 Semidefinite Programming 處理 superoperator 的範數之類的. 在 IQC 的課程序列中大概算 level II 的, 純粹證明導向的課.
  • John Preskill 的 Quantum Computation(Physics 219 Course Information). 作者是物理學家, 所以圖像還是很清楚的. 成書較早, 亮點之一大概是後面有一章的拓撲量子計算.
  • Scott Aaronson 的 Quantum Computational Complexity(6.845 Class Home). 比較少見的量子計算複雜性的課, Notes 寫於2008年, 所以一些新的重要結果並沒有涉及(比如 QIP=PSPACE). 純粹是計算複雜性導向, 也介紹了一些量子演算法.
  • Andrew Childs 的 Quantum algorithms(Quantum algorithms (CO 781/CS 867/QIC 823, Winter 2013)). 目前最好的量子演算法課, 涉及了 Hidden Subgroup Problem, Hamiltonian Simulation(絕熱量子計算相關), Quantum walk, Query Complexity, Span Problem 和 Jones Polynomial的估計演算法(DQC1-Complete, 看起來很意外). 也是 IQC 的課程序列里 level II 的.
  • Thomas Vidick 的 Around the quantum PCP conjecture(CS286). 極其少見的關於 Quantum Hamiltonian Complexity 的課程. 從 PCP theorem 和 QMA-Complete 出發, 討論 quantum PCP conjecture, entangled game(多個 prover), area law 和 Hamiltonian complexity.

除了 textbook 或者 lecture notes, 不少教學用綜述可讀性也是很不錯的, 基本上散見於各種課的 reference 中.


OS:

xv6 book: https://pdos.csail.mit.edu/6.828/2014/xv6/book-rev8.pdf

Homework: http://gaming.jhu.edu/~phf/2015/fall/cs318/

Machine Learning:

CS229 :CS 229: Machine Learning (Course handouts)

Gradient revisited: https://www.cs.cmu.edu/~ggordon/10725-F12/slides/05-gd-revisited.pdf

Idiot"s guide to SVM: http://www.cs.ucf.edu/courses/cap6412/fall2009/papers/Berwick2003.pdf

Lagrange Multipliers Tutorial in the Context of Support Vector Machines: http://www.engr.mun.ca/~baxter/Publications/LagrangeForSVMs.pdf

Topic Model: Topic Models

HMM:

http://www.cs.columbia.edu/~mcollins/courses/6998-2012/lectures/lec6.3.pdf

http://personal.ee.surrey.ac.uk/Personal/P.Jackson/tutorial/hmm_tut4.pdf

http://www.clsp.jhu.edu/~sanjeev/520.666/Spring15/BaumWelch4Gaussians.pdf

Variational Inference: https://www.cs.princeton.edu/courses/archive/fall11/cos597C/lectures/variational-inference-i.pdf

PCA:

http://www.stat.columbia.edu/~fwood/Teaching/w4315/Spring2010/PCA/slides.pdf

http://people.maths.ox.ac.uk/richardsonm/SignalProcPCA.pdf

Random Forest:

https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm

NLP (Jason Eisner):

600.465 - Natural Language Processing

Machine Translation (Philipp Koehn)

Statistical Machine Translation


http://link.springer.com/bookseries/558 LNCS 9000多卷,任君食用


這麼多人都要視頻了 點個贊吧...

-------------------------------------------------------------------------

講義+在線課程 總共安利一個 CMU 15-213 安利了身邊好幾個人在看了 CSAPP書也很不錯 不枉費這160刀

評論里有人要在線視頻:https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.aspx#folderID=%22b96d90ae-9871-4fae-91e2-b1627b43e25e%22

可以用右上角subscribe to itunes即可以podcast下載//飛機上不擔心沒事情做了


Lectures in Advanced Data Structures (6.851) Erik 的 Advanced Data Structure,萌萌噠~


圖形學,物理模擬(Physically Based Animation)方向

Siggraph每年的Course都不錯

Bridson有一本書講流體的,https://www.amazon.ca/Simulation-Computer-Graphics-Robert-Bridson/dp/1568813260

下面內容都是關於Physically Based Animation,搬運自http://www.physicsbasedanimation.com/resources-courses/:

Baraff
Witkin』s SIGGRAPH Course notes on physically based modeling (particle
systems, rigid bodies, constrained dynamics, etc.) (2001)

Nealen et al. Eurographics State of the Art Report on Physically Based Deformable Models in Computer Graphics (2005)

Bridson』s SIGGRAPH Course notes on Fluids (2007)

Wojtan et al. SIGGRAPH course on Liquid Simulation with Mesh-Based Surface Tracking (2011)

Bender et al. Eurographics State of the Art Report on Interactive Simulation of Rigid Body Dynamics in Computer Graphics (2012)

Barbic and Sifakis』 SIGGRAPH Course notes on FEM / Model Reduction (2012)

Ihmsen et al. Eurographics State of the Art Report on SPH Fluids in Computer Graphics (2014)

Kavan』s Physics-based Animation course on YouTube (2014)

Bender et al. Eurographics Tutorial: Position-Based Simulation Methods in Computer Graphics (2015)


Lecture note in Computer Science

下面是它的訪問鏈接。

http://link.springer.com/bookseries/558


普林斯頓大學演算法課程

Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne

有書,有講義【演算法描述通俗易懂,排版也不錯】,有代碼,好像還有視頻...

PS:講義截圖如下:


平民級PL系列 (

Data Structures and Functional Programming CS3110 Spring 2012 Lecture Notes

Coursera Programming Language UW CSE341, Spring 2013

History of Programming Languages Schedule

Notes on Programming by Alexander Stepanov http://www.stepanovpapers.com/notes.pdf


推薦閱讀:

計算機專業原版教材值得讀嗎?
想開始初步學習計算機有什麼建議嗎?
基於RNN的seq2seq與基於CNN的seq2seq區別,為什麼後者效果更好?
對比JIT和AOT,各自有什麼優點與缺點?
C++ 為什麼沒有 function 關鍵字?

TAG:書籍推薦 | 開放課程 | 計算機科學 |