目錄
1. 計算機早期歷史-Early Computing 11:53
2. 電子計算機-Electronic Computing 10:44
3. 布爾邏輯 和 邏輯門-Boolean Logic & Logic Gates 10:07
4. 二進制-Representing Numbers and Letters with Binary 10:46
5. 算術邏輯單元-How Computers Calculate-the ALU 11:10
6. 寄存器 & 內存-Registers and RAM 12:17
7. 中央處理器-The Central Processing Unit(CPU) 11:38
8. 指令和程序-Instructions & Programs 10:36
9. 高級CPU設計-Advanced CPU Designs 12:23
10. 早期的編程方式-Early Programming 09:27
11. 編程語言發展史-The First Programming Languages 11:53
12. 編程原理-語句和函數-Programming Basics - Statements & Functions 11:57
13. 算法入門 - Intro to Algorithms 11:44
14. 數據結構-Data Structures 10:07
16. 軟件工程-Software Engineering 10:36
17. 集成電路&摩爾定律-Integrated Circuits & Moore’s Law 13:50
18. 操作系統-Operating Systems 13:36
19. 內存&儲存介質-Memory & Storage 12:18
20. 文件系統-Files & File Systems 12:04
22. 命令行界面-Keyboards & Command Line Interfaces 11:24
23. 屏幕&2D 圖形顯示-Screens&2D Graphics 11:32
24. 冷戰和消費主義-The Cold War and Consumerism 11:19
25. 個人計算機革命-The Personal Computer Revolution 10:15
26. 圖形用戶界面-Graphical User Interfaces 12:59
28. 計算機網絡-Computer Networks 12:20
30. 萬維網-The World Wide Web 11:37
32. 黑客&攻擊-Hackers & Cyber Attacks 11:53
34. 機器學習&人工智能-Machine Learning & Artificial Intelligence 11:51
35. 計算機視覺-Computer Vision 11:10
36. 自然語言處理-Natural Language Processing 11:50
38. 計算機心理學 - Psychology of Computing 12:39
39. 教育科技-Educational Technology 11:52
40.奇點,天網,計算機的未來-The Singularity, Skynet, and the Future of Computing12:30
YouTube -- CrashCourse頻道出品
Crash Course Computer Science,是趣味科普計算機相關知識的一門課程(由youtube——CrashCourse頻道出品,這個頻道兩歲了,創建此頻道的哥倆旨在創造一些對人們有用的教育內容)。這套視頻制作精良,里面的動畫和配色(原諒我只能看到表面)時刻吸引著我,生怕眨眼一秒都會錯過點細節,主講人飽滿的情緒讓我一個哈欠都不會打,由此可見整個團隊的心血,最后由衷感謝CrashCourse字幕組,讓我可以在語境中理解很多中英文對應不上的專業詞語(我才不會說我沒有字幕根本看不懂)。
1. 計算機早期歷史-Early Computing
計算機早期歷史
學習:Bits(位),Bytes(字節),晶體管,邏輯門,操作系統,虛擬現實,機器人。
如果關掉所有計算機:電網會關閉,車輛會相撞,飛機會墜毀,冷水廠會關閉,證券市場會停止運作,卡車不知道運向何方,員工得不到薪水,甚至很多和計算機沒有直接關系的東西,T恤,凳子都是在有計算機的廠房里生產的。
計算機推動全球發展的科技:
工業革命的動力,大幅提升了農業、工業、畜牧業的規模。機械化導致了更高的收成,更多的食物,商品可以大批量生產。旅行和通訊變得更加快捷和便宜,生活質量變得更好。
計算機和工業革命有相同的影響:從自動化農業和醫療設備,到全球通信和教育機會,還有虛擬現實和無人駕駛等新領域。這個時代很可能被后人總結為“信息時代”。
一個智能手機,有十億個晶體管,它是通過一層層抽象,來做出復雜的操作,這里就將會講解,0到1,邏輯門、CPU,操作系統,整個互聯網,以及更多~
計算機的出現:
雖然計算機才出現不久,但人類對計算機的需求早就有了。
隨著知識的增長和新工具的誕生,人工勞力會越來越少;
計算機的起源與發展簡介
公元前2500年
先看計算的起源,人們早早就對計算產生了需求,早在,人們就發明了算盤,為什么要發明算盤?因為當時的社會規模已經超出了人們心算的能力,算盤的作用其實是將大腦的算力解放(工具的發明要么是解放人的體力,要么是解放人的智力),隨后發明了度量各種別的可度量事物的計算設備,比如星盤算經緯度,時鐘算日出,算潮汐。
1822年
charles babbage研究出了差分機制造方法,由于硬件限制,沒有制造出來(后人依據草稿又造一臺而且好用),但是在研究過程中有了制造分析機的靈感,分析機可以做很多事,不只是一種特定運算,所以是首個通用計算機(之前的都是專用的),甚至可以輸入數據進行一系列的計算,這一些列的計算就是程序,程序是一個劃時代的概念,而Ada由于為分析機寫了第一個程序,被公認為第一個程序員,她還預言以后一定會有一門語言為分析而生。
1890年
人口越來越多,要進行人口普查費時費力費錢,而且往往普查時間太長,出來的結果與現實狀況不符,沒有意義了,這樣的情況催生了機器的產生,打孔卡片制表機,在紙上打孔,然后把紙放進機器里,機器會根據所打的孔,自己統計符合條件的人數,比如男女各有多少,之后再通過紙把統計結果輸出來。這就是后來計算機一開始采用的輸入和輸出模式。(后來制表機器公司與其他機械公司合并成立了IBM=international business machines)
1900
人口爆炸以及全球貿易(社會規模大幅度增長)導致數據大量增長,
1904-1906
發現真空管,二極管,三極管可代替繼電器,開閉速度更加快,但像燈泡一樣易碎,貴
1940
真空管成本開始降低,政府負擔得起了,就應用于計算機(計算機從機電轉向電子)
1941
阿蘭圖靈設計Bombo,用來破解納粹的英格瑪通訊加密設備(是一臺解密碼機不是計算機)
1943
巨人一號第一次用真空管制造的計算機,用于破解納粹通信
1944
Harverd mark I最大的計算機之一,IBM給二戰同盟國造的,是服務于曼哈頓計劃的(政府和軍方)。構件使用的是機械繼電器(作用就是開關,控制電路開閉),速度慢,齒輪會磨損,故障率很大,甚至一直小蟲都會因其故障(bug)。
1946
賓夕法尼亞大學發明了 世界上第一個真正通用的,可編程的,電子計算機,成本還是很高,而且很容易壞
1947
貝爾實驗室,發明了晶體管,固態,小,速度快,很多晶體管半導體的開發在加州位于舊金山和圣荷西之間,后來被稱為硅谷(因為材料大多是硅),晶體管創始人也搬過去了,創立了肖克利半導體,里面的員工后來創立了仙童半導體,里面的員工創立了Intel(最大計算機芯片制造商)。
計算機早期歷史
算盤 → 步進計算器 → 差分機 → 分析機 → 打孔卡片制表機
最早的計算設備是算盤
Computer 最初用于指代職業
步進計算器是第一個可以做加減乘除的機器
炮彈為了精準,要計算彈道,二戰是查表來做。但每次改設計了就需要做一張新表
Charles Babbage 提出了 “差分機”, 在構造差分機期間,想出了分析機, 分析機是通用計算機
Ada Lovelace 給分析機寫了假想程序,因此成為了第一位程序員
人口普查 10 年一次. Herman Hollerith 的打孔卡片制表機大大提升了效率
2. 電子計算機-Electronic Computing
電子計算機
繼電器 → 真空管 → 晶體管
哈佛 Mark 1 號,由IBM 于1944 年制造
繼電器,繼電器一秒最多 50 次開關
繼電器出 bug
1904 年,熱電子管出現,第一個真空管。改進后變成和繼電器的功能一樣
“巨人1號” 計算機在英國 布萊切利園 首次大規模使用真空管。但編程麻煩,還要配置
1946 年,賓夕法尼亞大學的 ENIAC 是第一個通用可編程計算機
1947 年,貝爾實驗室做出了晶體管,晶體管有諸多好處,IBM 很快全面轉向晶體管
硅谷的典故:很多晶體管和半導體的開發都是這里做的。而生產半導體最常見的材料是硅
肖克利半導體 → 仙童半導體 → 英特爾
3. 布爾邏輯 和 邏輯門-Boolean Logic & Logic Gates
布爾邏輯 和 邏輯門
二進制, 布爾邏輯(真假), George Boole,Boolean Algebra
3個基本操作:NOT,AND,OR
XOR 異或
4. 二進制-Representing Numbers and Letters with Binary
為啥采用二進制
二進制的本質是電路開關的兩種狀態(真和假,通路或斷路),一開始其實有三進制或者五進制的(多種狀態表示),但是進制越多,信號越不容易被區分,而且有一整個數學分支存在,叫布爾代數(George Boole,19世紀自學成才的英國 數學家,是布爾Boolean名字的由來),專門處理真和假的問題,法則和運算都給你處理好了,拿過來直接就能用。
Boolean代數里面常用的操作:邏輯與的本質是物理上的串聯,邏輯或的本質是物理上的并聯,這些操作在計算機里面由最底層的電路(組合晶體管,物理層面)來實現,操作只是電路的高一層次抽象。(抽象允許我們在高層思考而不必在意底層細節,抽象的本質是把復雜包裝起來,只留一個簡答的接口)
ASCLL讀/asgi/
二進制
用十進制與二進制的原理,二進制加法
存儲單位 MB(Megabyte)GB(Gigabyte)TB(Terabyte)
正數,負數,整數,浮點數
美國信息交換標準代碼 - ASCII, 用來表示字符
UNICODE 1992 年誕生,16位,是字符編碼標準,解決 ASCII 不夠表達所有語言的問題
5. 算術邏輯單元-How Computers Calculate-the ALU
算術邏輯單元-How Computers Calculate-the ALU
算術邏輯單元(ALU)計算機的計算大腦。是計算機里負責運算的組件,包括一個算數單元(加減法,增量計算)和一個邏輯單元(邏輯與或非,判斷正負)。
ALU的表示法
1970 第一個被封裝在單個芯片內的完整ALU,Intel 74181
算術邏輯單元
ALU(Arithmetic and Logic Unit),英特爾 74181
ALU 有 2 個單元,1 個算術單元和 1 個邏輯單元
-
算術單元
半加器 (處理1個 bit,2個輸入)
全加器 (處理1個 bit,3個輸入)
8 bit 加法 (1個半加器,7個全加器)
溢出Overflow
乘法除法
-
邏輯單元
- 檢測數字是否為 0 的電路(一堆 OR 門最后加個 NOT 門)
8位ALU 抽象成一個 V 符號
Flag 標志(是否相等,是否小于,是否溢出等)
6. 寄存器 & 內存-Registers and RAM
寄存器 & 內存
存儲的作用:因為算出來扔掉就沒意義了,也許要做連續的操作,所以要存起來。
寄存器的本質:現在你這存一小下下,我馬上就拿走
鎖存器的結構如下,一組鎖存器構成一個寄存器
(當允許寫入線打開時,數據可以輸入,當允許寫入線被關閉時候,數據即可存在data out 里面不允許被改變了,每個寄存器只能存一個數,這個數是多少位,寄存器的位寬就是多少,比如16位的寄存器本質是由16個二進制單元位構成的)
- 內存結構(太喜歡他們做的圖了,又好看又明了)
內存的地址是由位數決定的,位數越大,能表示的門牌號(地址)越多,內存數量也就越大,所謂的內存大。
內存的重要特性是可以隨時訪問任何位置,RAM
寄存器 & 內存
Memory (存儲 / 內存 兩種含義)
存 1 位 (Gated Latch - 鎖存器)
存 8 位 (Register - 寄存器)
16x16 的矩陣存 256 位
Opcode
數據選擇器/多路復用器 (Multiplexer) 解碼 8 位地址,定位到單個鎖存器
4 位代表行, 4 位代表列
組合 256 位內存 + 多路復用器Multiplexer
可尋址的 256 字節 內存
一條1980年代的內存,1M 大小
8個模塊,每個模塊有32個小方塊,每個小方塊有 4 個小塊,每個小塊是 128 位 x 64 位
7. 中央處理器-The Central Processing Unit(CPU)
CPU
CPU的工作是負責處理程序,程序是由一條條操作構成的,操作就是指令(因為它們指示計算機要做什么)
構建一個CPU
寄存器:臨時存儲和操作數據
指令地址寄存器:追蹤程序運行到哪條指令了(存下指令的地址)
指令寄存器:存當前是什么指令(指令的內容)
時鐘:以精準的節奏釋放電信號,控制單元會用這個信號推進CPU的內部操作
(取指令-解碼-執行,這三個操作算一個步驟,步驟的執行速度叫做時鐘速度,就是需要多長時間才可以執行完這一步,)
ALU:用來計算
CLU:用來控制
3.運行程序
第一階段:取址階段(fetch phase)
第二階段:解碼階段(decode):對照指令表,把01串翻譯成要做的實際操作,并找到被操作數,這個階段由控制單元完成,控制單元底層也是電路
第三階段:執行階段:去操作數的地址處取出操作數放到寄存器里(寄存器是由操作所指定的Load_A就是寄存到寄存器a里)
執行過后,把指令地址寄存器加一,就完成了這條指令的執行,準備去執行下一條了
CPU
Instruction Register、Instruction Address Register
RAM + 寄存器 + ALU 做個 CPU
解釋 “取指令→解釋→執行” 這個循環
時鐘clock, 時鐘速度和赫茲
超頻提升性能, 降頻省電
8. 指令和程序-Instructions & Programs
指令和程序
”指令集”的概念
LOAD_A,LOAD_B,SUB,JUMP,ADD,HALT 等指令
帶條件跳轉,JUMP NEGATIVE 是負數才跳轉,還有其他類型的 JUMP
真正現代 CPU 用更多指令集。位數更長
1971年的英特爾 4004 處理器,有 46 個指令
如今英特爾酷睿 i7, 有上千條指令
9. 高級CPU設計-Advanced CPU Designs
高級 CPU 設計
早期是加快晶體管切換速度,來提升 CPU 速度
給 CPU 專門的除法電路 + 其他電路來做復雜操作,比如游戲,視頻解碼
給 CPU 加緩存,提高數據存取速度,更快喂給 CPU
臟位 - Dirty bit
流水線設計-pipeline
并行處理 - parallelize
亂序執行 - out-of-order execution
推測執行 - speculative execution
分支預測 - branch prediction
多個 ALU
多核 (Core)
多個獨立 CPU
超級計算機,中國的"神威 太湖之光"
10. 早期的編程方式-Early Programming
早期的編程方式
打孔紙卡 → 插線板 → 面板撥開關
紡織業,給機器編程的需求遠在計算機出現前就有了
打孔紙卡 - Punched card
插線板 - Plugboard
馮諾依曼架構 - Von Neumann Architecture
面板編程 - Panel programming
第一款取得商業成功的家用計算機: Altair 8800
編程依然很困難,人們需要更友好更簡單的方式編程
11. 編程語言發展史-The First Programming Languages
編程語言發展史
編程:二進制 → 助記符mnemonic(匯編器assembler)→ A-0(編譯器)→ FORTRAIN
二進制寫程序,先紙上寫偽代碼,手工轉二進制,很快就煩了
用 "助記符” 寫代碼(LOAD_A 14)為了把助記符轉二進制,匯編器誕生 (Assembler)
葛麗絲·霍普 (Grace Hopper) - 哈佛1號計算機首批程序員, 海軍軍官
Grace 設計了編程語言 A-0
Grace 1952 年做了第一個編譯器 (Compiler),實現 A-0
變量 (Variables)
FORTRAN(1957,IBM)
COBOL(Common Business-Oriented Language)
-
新語言
1960 年代:ALGOL,LISP,BASIC
1970 年代:Pascal,C,Smalltalk
1980 年代:C++,Objective-C,Perl
1990 年代:Python,Ruby,Java
New millennium: Swift,C#,Go
12. 編程原理-語句和函數-Programming Basics - Statements & Functions
編程基礎 - 語句和函數
變量, 賦值語句
Grace Hopper 拍蟲子游戲
if 判斷
while 循環
for 循環
函數
13. 算法入門 - Intro to Algorithms
算法入門
選擇排序 - Selection sort O(n^2)
大 O 表示法 - Big O notation (算法復雜度)
歸并排序 - Merge sort O(n log n)
Dijkstra 算法(graph search algorithms) O(n log n +1)
14. 數據結構-Data Structures
數據結構
數組 - Array
下標 - Index (Begins at 0)
字符串 - String
矩陣 - Matrix
結構體 - Struct
指針 - Pointer
節點 - Node
鏈表 - Linked List
隊列 - Queue ---- FIFO(First in first out)
棧 - Stack ---- LIFO(Last in first out) ----push、pop
樹 - Tree ----root/ leaf nodes
二叉樹 - Binary Tree
圖 - Graph
紅黑樹和堆, 不同數據結構適用不同場景
15. 阿蘭·圖靈-Alan Turing
阿蘭·圖靈
計算機之父 Born in 1912
可判定性問題 Entscheidungs problem
阿隆佐·丘奇,Lambda 算子
圖靈機 Turing machine、Turing complete
停機問題 (it‘s a paradox)
Bombe破解德軍英格瑪加密機
圖靈測試
圖靈獎
16. 軟件工程-Software Engineering
軟件工程
對象 Object
面向對象編程 Object Oriented Programming
API Application Programming Interface
public, private
集成開發環境, IDE - Integrated Development Environments
調試 debugging
文檔和注釋 - readme, comment
版本控制 Version control
質量控制 Quality Assurance testing,QA
Beta, Alpha
17. 集成電路&摩爾定律-Integrated Circuits & Moore’s Law
集成電路與摩爾定律
晶圓的制作流程:光刻
分立元件 Discrete components
數字暴政 Tyranny of Numbers - 是 1960 年代工程師碰到的問題(如果想加強電腦性能,就要更多部件,這導致更多線路,更復雜。所以很難做)
光刻 Photolithography
晶圓 Wafer
光刻膠 Photoresist
光掩膜 Photomask
摻雜 Doping
摩爾定律 Moore’s Law.
英特爾 Intel
晶體管數量大幅度增長, 1980年三萬個,1990年一百萬個,2000年三千萬個,2010年十億個
-
進一步小型化會碰到 2 個問題
光的波長不足以制作更精細的設計
量子隧穿效應
18. 操作系統-Operating Systems
操作系統
操作系統 Operating systems
批處理 Batch processing
計算機變便宜變多,有不同配置,寫程序處理不同硬件細節很痛苦,因此操作系統負責抽象硬件
外部設備 Peripherals
設備驅動程序 Device drivers
多任務處理 Multitasking
虛擬內存 Virtual Memory
動態內存分配 Dynamic memory allocation
內存保護 Memory Protection
1970年代,計算機足夠便宜,大學買了讓學生用,多個學生用多個 “終端” 連接到主機
多用戶分時操作系統,Multics
Unix
MS-DOS
19. 內存&儲存介質-Memory & Storage
內存&儲存介質
存儲技術的發展
紙卡 Paper punch cards
延遲線存儲器 Delay Line Memory
磁芯 Magnetic Core Memory
磁帶 Magnetic Tape
磁鼓 Magnetic Drum Memory
硬盤 Hard Disk Drives
內存層次結構 Memory Hierarchy
軟盤 Floppy Disk
光盤 Compact Disk
固態硬盤 Solid State Drives
20. 文件系統-Files & File Systems
文件系統
文件格式:可以隨便存文件數據,但按格式存會更方便
TXT 文本文件:ASCII
WAV 音頻文件:每秒上千次的音頻采樣數字
BMP 圖片文件:像素的紅綠藍 RGB 值
文件系統:很早期時空間小,整個存儲器就像一整個文件。后來隨容量增長,多文件非常必要
目錄文件:用來解決多文件問題,存其他文件的信息,比如開頭,結尾,創建時間等
平面文件系統 - Flat File System:文件都在同一個層次,早期空間小,只有十幾個文件,平面系統夠用
如果文件緊密的一個個前后排序會造成問題,所以文件系統會: 1. 把空間劃分成一塊塊 2. 文件拆分存在多個塊里
文件的增刪改查會不可避免的造成文件散落在各個塊里,
如果是磁帶這樣的存儲介質就會造成問題,所以做碎片整理
分層文件系統 - Hierarchical File System:有不同文件夾,文件夾可以層層嵌套
21. 壓縮-Compression
壓縮
壓縮的好處是能存更多文件,傳輸也更快
游程編碼 Run-Length Encoding
無損壓縮 Lossless compression
霍夫曼樹 Huffman Tree
“消除冗余"和"用更緊湊的表示方法”,這兩種方法通常會組合使用
字典編碼 Dictionary coders, 游程編碼 和 字典編碼 都是無損壓縮
感知編碼 Perceptual coding
有損壓縮 jpeg 格式
時間冗余 Temporal redundancy
MPEG-4 視頻編碼
22. 命令行界面-Keyboards & Command Line Interfaces
命令行界面
運行開始直到結束,中間沒有人類進行操作,原因是計算機很貴,不能等人類慢慢輸入,執行完結果打印到紙上
到1950年代,計算機足夠便宜+快,人類和計算機交互式操作變得可行
為了讓人類輸入到計算機,改造之前就有的打字機,變成電傳打字機
到1970年代末,屏幕成本足夠低,屏幕代替電傳打字機,屏幕成為標配
人機交互 Human-Computer Interaction
早期輸出數據是打印到紙上,而輸入是用紙卡/紙帶一次性把程序和數據都給進去
QWERTY 打字機的發展,克里斯托弗·萊瑟姆·肖爾斯 發明于 1868 年
電傳打字機 Teletype machine
命令行界面 Command line interface
ls 命令
早期文字游戲 Zork (1977年)
cd 命令
23. 屏幕&2D 圖形顯示-Screens&2D Graphics
屏幕與 2D 圖形顯示
PDP-1 計算機。鍵盤和顯示器分開,屏幕顯示臨時值
陰極射線管 Cathode Ray Tube (CRT)
-
CRT 有兩種繪圖方式:
矢量掃描 Vector Scanning
光柵掃描 Raster Scanning
液晶顯示器 Liquid Crystal Displays (LCD),像素 (Pixel)
字符生成器 Character generator
屏幕緩沖區 Screen buffer
矢量命令畫圖
Sketchpad, 光筆 (Light pen)
函數畫線,矩形
24. 冷戰和消費主義-The Cold War and Consumerism
冷戰和消費主義
范內瓦·布什 預見了計算機的潛力,提出假想機器 Memex,幫助建立 國家科學基金會,給科學研究提供資金
1950 年代消費者開始買晶體管設備,收音機大賣
日本取得晶體管授權后,索尼做了晶體管收音機,為日本半導體行業崛起埋下種子
蘇聯 1961 年把宇航員加加林送上太空,導致美國提出登月
NASA 預算大大增加,用集成電路來制作登月計算機
集成電路的發展實際上是由軍事應用大大推進的,阿波羅登月畢竟只有 17 次
美國造超級計算機進一步推進集成電路
美國半導體行業一開始靠政府高利潤合同活著,忽略消費者市場,1970年代冷戰漸消,行業開始衰敗 很多公司倒閉,英特爾轉型處理器
政府和消費者推動了計算機的發展,早期靠政府資金,讓技術發展到足夠商用,然后消費者購買商用產品繼續推動產品發展
25. 個人計算機革命-The Personal Computer Revolution
個人計算機革命
1970年代初成本下降,個人計算機變得可行
Altair 8800
比爾·蓋茨 和 保羅·艾倫寫 BASIC 解釋器
喬布斯提議賣組裝好的計算機,Apple-I 誕生
1977年出現3款開箱即用計算機:“Apple-II”,“TRS-80 Model I”,“Commodore PET 2001”
IBM 意識到個人計算機市場
IBM PC 發布,采用開放架構,兼容的機器都叫 IBM Compatible (IBM 兼容)
生態系統產生雪球效應:因為用戶多,軟硬件開發人員更愿意花精力在這個平臺,因為軟硬件多,用戶也更樂意買 “IBM 兼容” 的計算機
蘋果選封閉架構,一切都自己來,只有蘋果在非 “IBM 兼容” 下保持了足夠市場份額
26. 圖形用戶界面-Graphical User Interfaces
圖形用戶界面 (GUI)
圖形界面先驅:道格拉斯·恩格爾巴特(Douglas Engelbart)
1970年成立 帕洛阿爾托研究中心(Palo Alto Research Center)
1973年完成 Xerox Alto(施樂奧托) 計算機
舉例:寫一個簡單的 GUI 程序
1981年的 Xerox Star system(施樂之星系統)
史蒂夫·喬布斯去施樂參觀,所見即所得 WYSIWYG
1983年推出 Apple Lisa
1984年推出 Macintosh
1985年推出 Windows 1.0,之后出到 3.1
1995年推出 Windows 95 提供圖形界面
1995年微軟做失敗的 Microsoft Bob
27. 3D 圖形-3D Graphics
3D 圖形
線框渲染 Wireframe Rendering
正交投影 Orthographic Projection
透視投射 Perspective Projection
網格 Mesh
三角形更常用因為能定義唯一的平面
掃描線渲染 Scanline Rendering
遮擋 Occlusion
畫家算法 Painter’s Algorithm
深度緩沖 Z Buffering
Z Fighting 錯誤
背面剔除 Back Face Culling
表面法線 Surface Normal
平面著色 Flat Shading
高洛德著色 Gouraud shading, 馮氏著色 Phong Shading
紋理映射 Texture Mapping
圖形處理單元 GPU, Graphics Processing Unit
28. 計算機網絡-Computer Networks
計算機網絡
局域網 Local Area Networks - LAN
媒體訪問控制地址 Media Access Control address - MAC
載波偵聽多路訪問 Carrier Sense Multiple Access - CSMA
指數退避 Exponential Backoff
沖突域 Collision Domain
電路交換 Circuit Switching
報文交換 Message Switching
分組交換 Packet Switching
29. 互聯網-The Internet
互聯網
IP - 互聯網協議 - Internet Protocol
UDP - 用戶數據報協議 - User Datagram Protocol
校驗和 - Checksum
TCP - 傳輸控制協議 - Transmission Control Protocol
DNS - 域名系統 - Domain Name System
OSI - 開放式系統互聯通信參考模型 - Open System Interconnection
30. 萬維網-The World Wide Web
萬維網
超鏈接 Hyperlinks
URL - 統一資源定位器 - Uniform Resource Locator
HTTP - 超文本傳輸協議 - HyperText Transfer Protocol
HTML - 超文本標記語言 - HyperText Markup Language
寫一個簡單網頁,用到了 《h1》《 a》《h2》《 ol》《 li》 標簽
第一個瀏覽器和服務器是 Tim Berners-Lee 花了 2 個月在 CERN 寫的
1991年正式發布,萬維網就此誕生
開始講搜索引擎的故事
Jerry 和 David 的萬維網指南 后來改名成 Yahoo
搜索引擎 JumpStation
搜索引擎 Google
網絡中立性
31. 計算機安全-Cybersecurity
計算機安全
Secrecy, Integrity, Availability 保密性, 完整性, 可用性
Threat Model 威脅模型
-
身份驗證 (Authentication) 的三種方式:
What you know, 你知道什么
What you have, 你有什么
What you are, 你是什么
訪問控制 Access Control
Bell LaPadula model 不能向上讀取,不能向下寫入
隔離 Isolation, 沙盒 Sandbox
32. 黑客&攻擊-Hackers & Cyber Attacks
黑客與攻擊
社會工程學 Social Engineering
釣魚 Phishing
假托 Pretexting
木馬 Trojan Horses
NAND鏡像 NAND Mirroring
漏洞利用 Exploit
緩沖區溢出 Buffer Overflow
邊界檢查 Bounds Checking
代碼注入 Code Injection
零日漏洞 Zero Day Vulnerability
計算機蠕蟲 Worms
僵尸網絡 Botnet
拒絕服務攻擊 DDoS
33. 加密-Cryptography
加密
多層防御 Defence in depth
加密 - Encryption,解密 - Decryption
凱撒加密 Caesar cipher
替換加密 Substitution cipher
移位加密 Permutation cipher
列移位加密 Columnar transposition cipher
德國 Enigma 加密機
1977年"數據加密標準" - Data Encryption Standard (DES)
2001年"高級加密標準" - Advanced Encryption Standard (AES)
密鑰交換 - Key exchange
“單向函數"和"密鑰加密”
迪菲-赫爾曼密鑰交換 - Diffie-Hellman Key Exchange
非對稱加密 - Asymmetric encryption
非對稱加密算法 RSA
34. 機器學習&人工智能-Machine Learning & Artificial Intelligence
機器學習與人工智能
分類 Classification
分類器 Classifier
特征 Feature
標記數據 Labeled data
決策邊界 Decision boundaries
混淆矩陣 Confusion matrix
未標簽數據 Unlabeled data
決策樹 Decision tree
支持向量機 Support Vector Machines
人工神經網絡 Artificial Neural Network
深度學習 Deep learning
弱AI, 窄AI Weak AI, Narrow AI
強AI Strong AI
強化學習 Reinforcement Learning
35. 計算機視覺-Computer Vision
計算機視覺
檢測垂直邊緣的算法
核/過濾器 kernel or filter
卷積 convolution
Prewitt 算子 Prewitt Operators
維奧拉·瓊斯 人臉檢測 Viola-Jones Face Detection
卷積神經網絡 Convolutional Neural Networks
識別出臉之后,可以進一步用其他算法定位面部標志,如眼睛和眉毛具體位置,從而判斷心情等信息
跟蹤全身的標記點,如肩部,手臂等
36. 自然語言處理-Natural Language Processing
自然語言處理
詞性 Parts of speech
短語結構規則 Phrase structure rules
分析樹 Parse tree
語音識別 Speech recognition
譜圖 Spectrogram
快速傅立葉變換 Fast Fourier Transform
音素 Phonemes
語音合成 Speech Synthesis
37. 機器人-Robots
機器人
法國吃飯鴨 - Digesting Duck, Canard Digerateur
土耳其行棋傀儡, 下國際象棋
第一臺計算機控制的機器出現在1940年代晚期,叫數控機器, Computer Numerical Control(CNC)
1960年 Unimate,第一個商業販賣的 可編程工業機器人
簡單控制回路 simple control loop
負反饋回路 negative feedback loop
比例-積分-微分控制器 Proportional–Integral–Derivative controller PID 控制器
機器人三定律 Three Laws of Robotics
38. 計算機心理學 - Psychology of Computing
計算機心理學
我們需要了解人類心理學,做出更好的計算機
易用度 - Usability
顏色強度排序 和 顏色排序
分組更好記,電話號碼 317-555-3897 比 3175553897 好記
直觀功能 - Affordances
認出 vs 回想 Recognition vs Recall
讓機器有一定情商以及 Facebook 的研究
用軟件修正注視位置。讓視頻通話時看起來像盯著對方,而不是盯著下方
把機器人做的像人,恐怖谷理論
有很多開放式的問題,心理學幫助我們明白不同選擇可能帶來的影響
39. 教育科技-Educational Technology
教育科技
通過調速,暫停等技巧,加強學習效率
大型開放式在線課程 - Massive Open Online Courses (MOOC)
智能輔導系統 - Intelligent Tutoring Systems
判斷規則 - Production rule
域模型 - Domain Model
-
貝葉斯知識追蹤 Bayesian knowledge tracing
學生已經學會的概率
瞎猜的概率
失誤的概率
做題過程中學會的概率
教育數據挖掘 Educational Data Mining
40.奇點,天網,計算機的未來-The Singularity, Skynet, and the Future of Computing
奇點,天網,計算機的未來
普適計算 Ubiquitous Computing
奇點 Singularity
把工作分為4個象限,討論自動化帶來的影響
機器人的存在時間可能長過人類,可以長時間探索宇宙
學無止境,謙虛上行