计算机科学体系

项目地址:https://github.com/1c7/Crash-Course-Computer-Science-Chinese

视频地址:https://www.bilibili.com/video/av21376839/

本文不会涉及编程,会从高层次上纵览一系列计算机话题。希望你能了解计算机在你的人生 以及社会中扮演什么角色。

章节速览

笔记总结

第 1 集:计算机早期历史

提到的设备:算盘 → 步进计算器 → 差分机 → 分析机 → 打孔卡片制表机
提到的人名:Charles Babbage, Ada Lovelace

02:27 最早的计算设备是算盘,举例如何使用
04:31 Computer 从指代职业变成指代机器
04:57 机器里有名的是:步进计算器。第一个可以做加减乘除的机器
06:44 炮弹为了精准,要计算弹道,二战是查表来做。但每次改设计了就需要做一张新表
07:30 Charles Babbage 提出了 "差分机", 在构造差分机期间,想出了分析机, 分析机是通用计算机
08:50 Lovelace 给分析机写了假想程序,因此成为了第一位程序员
09:25 人口普查 10 年一次. Herman Hollerith 的打孔卡片制表机大大提升了效率

第 2 集:电子计算机

提到的设备:继电器 → 真空管 → 晶体管

00:17 20世纪的发展要求更强的计算能力。柜子大小的计算机发展到房间大小
01:06 哈佛 Mark 1 号,IBM 1944 年做的
02:25 继电器,继电器一秒最多 50 次开关
03:24 继电器出 bug
03:49 1904 年,热电子管出现,第一个真空管。改进后变成和继电器的功能一样
05:34 "巨人1号" 计算机在英国 布莱切利园 首次大规模使用真空管。但编程麻烦,还要配置
06:40 1946 年,宾夕法尼亚大学的 ENIAC 是第一个通用可编程计算机
07:36 1947 年,贝尔实验室做出了晶体管,晶体管有诸多好处,IBM 很快全面转向晶体管
09:27 硅谷的典故:很多晶体管和半导体的开发都是这里做的。而生产半导体最常见的材料是硅
09:41 肖克利半导体 → 仙童半导体 → 英特尔

第 3 集:布尔逻辑和逻辑门

01:00 什么是二进制, 为什么用二进制, 布尔逻辑
02:46 3个基本操作:NOT,AND,OR
02:51 解释3个基本操作
07:11 XOR 异或

第 4 集:二进制

00:46 用十进制举例二进制的原理,演示二进制加法。存储单位 MB GB TB 等
05:30 正数,负数,整数,浮点数的表示
07:20 美国信息交换标准代码 - ASCII, 用来表示字符
09:00 UNICODE 1992 年诞生,是字符编码标准, 解决 ASCII 不够表达所有语言的问题

第 5 集:算数逻辑单元 - ALU

00:03 简单介绍 ALU ,英特尔 74181
01:24 ALU 有 2 个单元,1 个算术单元和 1 个逻辑单元

01:32 算术单元
半加器 (处理1个 bit,2个输入)
全加器 (处理1个 bit,3个输入)
8 bit 加法 (1个半加器,7个全加器)
溢出的概念,吃豆人的例子
乘法除法

07:32 逻辑单元
检测数字是否为 0 的电路(一堆 OR 门最后加个 NOT 门)
ALU 抽象成一个 V 符号
Flag 标志(是否相等,是否小于,是否溢出等等)

第 6 集:寄存器和内存

本集重点是 Memory (存储 / 内存 两种含义)

03:30 存 1 位 (Gated Latch - 锁存器)
04:48 存 8 位 (Register - 寄存器)

05:46 16x16 的矩阵存 256 位
数据选择器/多路复用器 (Multiplexer) 解码 8 位地址,定位到单个锁存器

07:38 4 位代表行, 4 位代表列

08:16 组合 256 位内存 + 多路复用器
09:01 可寻址的 256 字节 内存
一条1980年代的内存,1M 大小

10:14 8个模块,每个模块有32个小方块,
每个小方块有 4 个小块,每个小块是 128 位 x 64 位

第 7 集:中央处理器(CPU)

重点

  1. 拼个 CPU 出来
  2. CPU 怎么执行命令

01:00 RAM + 寄存器 + ALU 做个 CPU
04:00 解释 "取指令→解释→执行" 这个循环
08:00 时钟是什么, 时钟速度和赫兹
10:00 超频提升性能, 降频省电

第 8 集:指令和程序

本集重点:一步步带你运行一遍程序

00:45 回顾上集的例子程序,一步步讲解。介绍”指令集”的概念
LOAD_A,LOAD_B,SUB,JUMP,ADD,HALT 等指令
05:16 带条件跳转,JUMP NEGATIVE 是负数才跳转,还有其他类型的 JUMP
08:00 真正现代 CPU 用更多指令集。位数更长。
09:07 1971年的英特尔 4004 处理器,有 46 个指令
09:36 如今英特尔酷睿 i7, 有上千条指令

第 9 集:高级 CPU 设计

00:24 早期是加快晶体管切换速度,来提升 CPU 速度
01:20 给 CPU 专门的除法电路 + 其他电路来做复杂操作,比如游戏,视频解码
02:28 给 CPU 加缓存,提高数据存取速度,更快喂给 CPU,用计算餐馆销售额举例
05:13 脏位 - Dirty bit
05:33 流水线设计,用 1 个洗衣机和 1 个干燥机举例
06:01 并行处理 - parallelize
07:33 乱序执行 - out-of-order execution
08:21 推测执行 - speculative execution
08:50 分支预测 - branch prediction
09:34 多个 ALU
09:54 多核 (Core)
10:11 多个独立 CPU
10:52 超级计算机,中国的"神威 太湖之光"

第 10 集:早期的编程方式

本集重点:早期计算机如何编程
打孔纸卡 → 插线板 → 面板拨开关

00:00 开头说本集重点:程序如何进入计算机
00:53 拿纺织业举例,给机器编程的需求远在计算机出现前就有了
01:41 打孔纸卡 - Punched card
02:36 插线板 - Plugboard
04:20 冯诺依曼架构 - Von Neumann Architecture
07:00 面板编程 - Panel programming
07:29 第一款取得商业成功的家用计算机: Altair 8800
08:15 编程依然很困难,人们需要更友好更简单的方式编程
08:44 下周主题:编程语言

第 11 集:编程语言发展史

编程:二进制 → 助记符(汇编器)→ A-0(编译器)→ FORTRAIN

01:45 二进制写程序,先纸上写伪代码,手工转二进制,很快就烦了
02:28 用 "助记符” 写代码(LOAD_A 14)为了把助记符转二进制,汇编器诞生 (Assembler)
04:32 葛丽丝·霍普 (Grace Hopper) - 哈佛1号计算机首批程序员, 海军军官
05:13 Grace 设计了编程语言 A-0
05:29 Grace 1952 年做了第一个编译器 (Compiler),实现 A-0
06:29 变量 (Variables)
07:01 FORTRAN
08:18 COBOL
09:25 新语言
1960 年代:ALGOL,LISP,BASIC
1970 年代:Pascal,C,Smalltalk
1980 年代:C++,Objective-C,Perl
1990 年代:Python,Ruby,Java

第 12 集:编程基础 - 语句和函数

00:50 变量, 赋值语句
02:08 Grace Hopper 拍虫子游戏
02:52 if 判断
04:19 while 循环
05:48 for 循环
07:00 函数
11:11 下集介绍算法

第 13 集:算法入门

03:00 选择排序 - Selection sort
03:52 大 O 表示法 - Big O notation
04:31 归并排序 - Merge sort
08:03 Dijkstra 算法

第 14 集:数据结构

00:39 数组 - Array
02:06 字符串 - String
03:12 矩阵 - Matrix
04:05 结构体 - Struct
04:46 指针 - Pointer
04:44 节点 - Node
04:53 链表 - Linked List
06:21 队列 - Queue
06:21 栈 - Stack
07:31 树 - Tree
08:01 二叉树 - Binary Tree
08:26 图 - Graph
08:50 没时间讲红黑树和堆, 不同数据结构适用不同场景

第 15 集:阿兰·图灵

00:33 介绍图灵
00:52 可判定性问题
01:14 阿隆佐·丘奇,Lambda 算子
01:38 图灵机
04:54 停机问题
08:09 破解德军英格玛加密机
10:40 图灵测试
11:18 图灵的个人生活
12:07 图灵奖

第 16 集:软件工程

01:31 对象 Object
02:39 面向对象编程 Object Oriented Programming.
03:55 API Application Programming Interface
04:33 public, private
05:36 集成开发环境, IDE - Integrated Development Environments
06:09 调试 debugging
06:31 文档和注释 - readme, comment
07:33 版本控制 Version control
08:50 质量控制 Quality Assurance testing,QA
09:21 Beta, Alpha

第 17 集:集成电路与摩尔定律

本集重点:晶圆的制作流程:光刻 (04:21~07:42)

00:51 分立元件 Discrete components
01:09 数字暴政 Tyranny of Numbers - 是 1960 年代工程师碰到的问题
意思是如果想加强电脑性能,就要更多部件,这导致更多线路,更复杂。所以很难做
04:21 光刻 Photolithography
04:26 晶圆 Wafer
04:57 光刻胶 Photoresist
05:08 光掩膜 Photomask
06:00 掺杂 Doping
09:09 摩尔定律 Moore’s Law.
09:38 英特尔 Intel
10:20 晶体管数量大幅度增长, 1980年三万个,1990年一百万个,2000年三千万个,2010年十亿个
11:44 进一步小型化会碰到 2 个问题 1. 光的波长不足以制作更精细的设计 2. 量子隧穿效应

第 18 集:操作系统

00:48 操作系统 Operating systems
01:34 批处理 Batch processing
01:58 计算机变便宜变多,有不同配置,写程序处理不同硬件细节很痛苦,因此操作系统负责抽象硬件
02:12 外部设备 Peripherals
02:48 设备驱动程序 Device drivers
04:43 多任务处理 Multitasking
05:54 虚拟内存 Virtual Memory
07:09 动态内存分配 Dynamic memory allocation
07:31 内存保护 Memory Protection
07:54 1970年代,计算机足够便宜,大学买了让学生用,多个学生用多个 "终端" 连接到主机
08:29 多用户分时操作系统,Multics
09:32 Unix
11:02 MS-DOS
12:09 下集是内存&存储介质

第 19 集:内存&储存介质

本集重点:存储技术的发展

01:01 纸卡 Paper punch cards
02:01 延迟线存储器 Delay Line Memory
04:06 磁芯 Magnetic Core Memory
06:08 磁带 Magnetic Tape
07:08 磁鼓 Magnetic Drum Memory
07:43 硬盘 Hard Disk Drives
08:53 内存层次结构 Memory Hierarchy
09:36 软盘 Floppy Disk
10:09 光盘 Compact Disk
10:51 固态硬盘 Solid State Drives

第 20 集:文件系统

00:47 文件格式:可以随便存文件数据,但按格式存会更方便
01:00 TXT 文本文件:ASCII
01:31 WAV 音频文件:每秒上千次的音频采样数字
02:47 BMP 图片文件:像素的红绿蓝 RGB 值
04:43 文件系统:很早期时空间小,整个存储器就像一整个文件。后来随容量增长,多文件非常必要
05:37 目录文件:用来解决多文件问题,存其他文件的信息,比如开头,结尾,创建时间等

06:39 平面文件系统 - Flat File System:文件都在同一个层次,早期空间小,只有十几个文件,平面系统够用

06:57 如果文件紧密的一个个前后排序会造成问题,所以文件系统会: 1. 把空间划分成一块块 2. 文件拆分存在多个块里

08:30 文件的增删改查会不可避免的造成文件散落在各个块里,
如果是磁带这样的存储介质就会造成问题,所以做碎片整理

09:46 分层文件系统 - Hierarchical File System:有不同文件夹,文件夹可以层层嵌套

第21集讲压缩

第 21 集:压缩

00:26 压缩的好处是能存更多文件,传输也更快
01:52 游程编码 Run-Length Encoding
02:45 无损压缩 Lossless compression
03:55 霍夫曼树 Huffman Tree
05:56 "消除冗余"和"用更紧凑的表示方法",这两种方法通常会组合使用
06:07 字典编码 Dictionary coders, 游程编码 和 字典编码 都是无损压缩
08:03 感知编码 Perceptual coding
08:09 有损压缩 jpeg 格式
09:39 时间冗余 Temporal redundancy
10:30 MPEG-4 视频编码

第 22 集:命令行界面

本集重点:计算机早期同时输入程序和数据(用纸卡/纸带)
运行开始直到结束,中间没有人类进行操作,
原因是计算机很贵,不能等人类慢慢输入,执行完结果打印到纸上 (02:34)

到1950年代,计算机足够便宜+快,人类和计算机交互式操作变得可行
为了让人类输入到计算机,改造之前就有的打字机,变成电传打字机 (02:44~05:38)

到1970年代末,屏幕成本足够低,屏幕代替电传打字机,屏幕成为标配 (07:24)

00:32 人机交互 Human-Computer Interaction
00:50 早期输出数据是打印到纸上,而输入是用纸卡/纸带一次性把程序和数据都给进去
03:00 QWERTY 打字机的发展,克里斯托弗·莱瑟姆·肖尔斯 发明于 1868 年
05:38 电传打字机 Teletype machine
06:32 命令行界面 Command line interface
06:38 ls 命令
08:22 早期文字游戏 Zork (1977年)
08:47 cd 命令

第 23 集:屏幕与 2D 图形显示

00:05 PDP-1 计算机。键盘和显示器分开,屏幕显示临时值
01:14 阴极射线管 Cathode Ray Tube (CRT)
01:38 CRT 有两种绘图方式:
矢量扫描 Vector Scanning
光栅扫描 Raster Scanning

02:14 液晶显示器 Liquid Crystal Displays (LCD),像素 (Pixel)
03:32 字符生成器 Character generator
03:45 屏幕缓冲区 Screen buffer
05:09 矢量命令画图
06:34 Sketchpad, 光笔 (Light pen)
09:00 函数画线,矩形

第 24 集:冷战和消费主义

本集重点:冷战导致美国往计算机领域投入大量资源 (00:00~01:43)

范内瓦·布什 预见了计算机的潜力,提出假想机器 Memex
帮助建立 国家科学基金会,给科学研究提供资金 (01:43~03:43)

1950 年代消费者开始买晶体管设备,收音机大卖
日本取得晶体管授权后,索尼做了晶体管收音机,为日本半导体行业崛起埋下种子 (03:43~04:29)

苏联 1961 年把宇航员加加林送上太空,导致美国提出登月
NASA 预算大大增加,用集成电路来制作登月计算机 (04:29~06:27)

集成电路的发展实际上是由军事应用大大推进的,阿波罗登月毕竟只有 17 次
美国造超级计算机进一步推进集成电路 (04:29~07:11)

美国半导体行业一开始靠政府高利润合同活着,忽略消费者市场,1970年代冷战渐消,行业开始衰败
很多公司倒闭,英特尔转型处理器 (07:11~08:23)

末尾总结:政府和消费者推动了计算机的发展
早期靠政府资金,让技术发展到足够商用,然后消费者购买商用产品继续推动产品发展 (08:23~10:41)

第 25 集:个人计算机革命

本集:全是历史故事
00:18 1970年代初成本下降,个人计算机变得可行
01:51 Altair 8800
02:32 比尔·盖茨 和 保罗·艾伦写 BASIC 解释器
03:45 乔布斯提议卖组装好的计算机,Apple-I 诞生
04:40 1977年出现3款开箱即用计算机:
"Apple-II","TRS-80 Model I","Commodore PET 2001"

06:26 IBM 意识到个人计算机市场
IBM PC 发布,采用开放架构,兼容的机器都叫 IBM Compatible (IBM 兼容)
生态系统产生雪球效应:
因为用户多,软硬件开发人员更愿意花精力在这个平台
因为软硬件多,用户也更乐意买 "IBM 兼容" 的计算机

08:44 苹果选封闭架构,一切都自己来,只有苹果在非 "IBM 兼容" 下保持了足够市场份额

第 26 集:图形用户界面 (GUI)

01:10 图形界面先驱:道格拉斯·恩格尔巴特(Douglas Engelbart)
03:20 1970年成立 帕洛阿尔托研究中心(Palo Alto Research Center)
03:29 1973年完成 Xerox Alto(施乐奥托) 计算机
04:42 举例:写一个简单的 GUI 程序
06:38 1981年的 Xerox Star system(施乐之星系统)
08:18 史蒂夫·乔布斯去施乐参观
07:45 所见即所得 WYSIWYG
09:15 1983年推出 Apple Lisa
09:31 1984年推出 Macintosh
10:12 1985年推出 Windows 1.0,之后出到 3.1
10:43 1995年推出 Windows 95 提供图形界面
11:08 1995年微软做失败的 Microsoft Bob

第 27 集:3D 图形

01:15 线框渲染 Wireframe Rendering
01:39 正交投影 Orthographic Projection
01:50 透视投射 Perspective Projection
02:14 网格 Mesh
02:37 三角形更常用因为能定义唯一的平面
03:09 扫描线渲染 Scanline Rendering
05:04 遮挡 Occlusion
05:19 画家算法 Painter's Algorithm
06:09 深度缓冲 Z Buffering
07:45 Z Fighting 错误
07:51 背面剔除 Back Face Culling
08:53 表面法线 Surface Normal
09:33 平面着色 Flat Shading
09:43 高洛德着色 Gouraud shading, 冯氏着色 Phong Shading
10:06 纹理映射 Texture Mapping
11:24 图形处理单元 GPU, Graphics Processing Unit

第 28 集:计算机网络

02:05 局域网 Local Area Networks - LAN
02:36 媒体访问控制地址 Media Access Control address - MAC
02:55 载波侦听多路访问 Carrier Sense Multiple Access - CSMA
05:18 指数退避 Exponential Backoff
05:36 冲突域 Collision Domain
07:08 电路交换 Circuit Switching
07:36 报文交换 Message Switching
10:20 分组交换 Packet Switching

第 29 集:互联网

02:23 IP - 互联网协议 - Internet Protocol
03:00 UDP - 用户数据报协议 - User Datagram Protocol
03:41 校验和 - Checksum
05:26 TCP - 传输控制协议 - Transmission Control Protocol
08:21 DNS - 域名系统 - Domain Name System
10:47 OSI - 开放式系统互联通信参考模型 - Open System Interconnection

第 30 集:万维网

01:01 超链接 Hyperlinks
02:20 URL - 统一资源定位器 - Uniform Resource Locator
03:01 HTTP - 超文本传输协议 - HyperText Transfer Protocol
04:13 HTML - 超文本标记语言 - HyperText Markup Language
04:24 写一个简单网页,用到了
06:04 第一个浏览器和服务器是 Tim Berners-Lee 花了 2 个月在 CERN 写的
06:32 1991年正式发布,万维网就此诞生
07:19 开始讲搜索引擎的故事
07:40 Jerry 和 David 的万维网指南 后来改名成 Yahoo
07:52 搜索引擎 JumpStation
09:07 搜索引擎 Google
09:20 网络中立性

第 31 集:计算机安全

01:00 Secrecy, Integrity, Availability
保密性, 完整性, 可用性
01:49 Threat Model 威胁模型

03:14 身份验证 (Authentication) 的三种方式:
What you know, 你知道什么
What you have, 你有什么
What you are, 你是什么

07:34 访问控制 Access Control
08:48 Bell LaPadula model 不能向上读取,不能向下写入
11:00 隔离 Isolation, 沙盒 Sandbox

第 32 集:黑客与攻击

01:28 社会工程学 Social Engineering
01:38 钓鱼 Phishing
02:06 假托 Pretexting
02:50 木马 Trojan Horses
03:32 NAND镜像 NAND Mirroring
04:12 漏洞利用 Exploit
04:16 缓冲区溢出 Buffer Overflow
05:45 边界检查 Bounds Checking
06:16 代码注入 Code Injection
09:32 零日漏洞 Zero Day Vulnerability
09:53 计算机蠕虫 Worms
09:58 僵尸网络 Botnet
10:11 拒绝服务攻击 DDoS

第 33 集:加密

00:16 多层防御 Defence in depth
01:00 加密 - Encryption,解密 - Decryption
01:11 凯撒加密 Caesar cipher
01:27 替换加密 Substitution cipher
01:59 移位加密 Permutation cipher
02:03 列移位加密 Columnar transposition cipher
02:37 德国 Enigma 加密机
04:54 1977年"数据加密标准" - Data Encryption Standard (DES)
05:24 2001年"高级加密标准" - Advanced Encryption Standard (AES)
07:06 密钥交换 - Key exchange
07:33 用颜色来举例"单向函数"和"密钥加密"的原理
08:24 迪菲-赫尔曼密钥交换 - Diffie-Hellman Key Exchange
10:18 非对称加密 - Asymmetric encryption
11:22 非对称加密算法 RSA

第 34 集:机器学习与人工智能

01:23 分类 Classification
01:25 分类器 Classifier
01:34 特征 Feature
02:03 标记数据 Labeled data
02:38 决策边界 Decision boundaries
03:00 混淆矩阵 Confusion matrix
03:39 未标签数据 Unlabeled data
03:49 决策树 Decision tree
04:25 支持向量机 Support Vector Machines
05:52 人工神经网络 Artificial Neural Network
08:34 深度学习 Deep learning
09:21 弱AI, 窄AI Weak AI, Narrow AI
09:43 强AI Strong AI
10:42 强化学习 Reinforcement Learning

第 35 集:计算机视觉

02:41 检测垂直边缘的算法
03:26 核/过滤器 kernel or filter
03:56 卷积 convolution
04:23 Prewitt 算子 Prewitt Operators
05:34 维奥拉·琼斯 人脸检测 Viola-Jones Face Detection
05:35 卷积神经网络 Convolutional Neural Networks
07:33 识别出脸之后,可以进一步用其他算法定位面部标志,如眼睛和眉毛具体位置,从而判断心情等信息
08:52 跟踪全身的标记点,如肩部,手臂等

第 36 集:自然语言处理

01:50 词性 Parts of speech
02:15 短语结构规则 Phrase structure rules
02:32 分析树 Parse tree
05:30 语音识别 Speech recognition
07:26 谱图 Spectrogram
07:44 快速傅立叶变换 Fast Fourier Transform
08:42 音素 Phonemes
09:29 语音合成 Speech Synthesis

第 37 集:机器人

02:08 法国吃饭鸭 - Digesting Duck, Canard Digerateur
02:23 土耳其行棋傀儡, 下国际象棋
02:43 第一台计算机控制的机器出现在1940年代晚期,叫数控机器, Computer Numerical Control(CNC)
03:32 1960年 Unimate,第一个商业贩卖的 可编程工业机器人
03:47 简单控制回路 simple control loop
04:08 负反馈回路 negative feedback loop
05:17 比例-积分-微分控制器 Proportional–Integral–Derivative controller PID 控制器
10:48 机器人三定律 Three Laws of Robotics

第 38 集:计算机心理学

00:45 我们需要了解人类心理学,做出更好的计算机
01:12 易用度 - Usability
01:31 颜色强度排序 和 颜色排序
02:30 分组更好记,电话号码 317-555-3897 比 3175553897 好记
03:25 直观功能 - Affordances
04:33 认出 vs 回想 Recognition vs Recall
05:45 让机器有一定情商以及 Facebook 的研究
08:40 用软件修正注视位置。让视频通话时看起来像盯着对方,而不是盯着下方
09:58 把机器人做的像人,恐怖谷理论
11:35 有很多开放式的问题,心理学帮助我们明白不同选择可能带来的影响

第 39 集:教育科技

02:15 通过调速,暂停等技巧,加强学习效率
03:15 大型开放式在线课程 - Massive Open Online Courses (MOOC)
05:08 智能辅导系统 - Intelligent Tutoring Systems
05:22 判断规则 - Production rule
06:10 域模型 - Domain Model
06:46 贝叶斯知识追踪 Bayesian knowledge tracing

  1. 学生已经学会的概率
  2. 瞎猜的概率
  3. 失误的概率
  4. 做题过程中学会的概率
    09:27 教育数据挖掘 Educational Data Mining

第 40 集:奇点,天网,计算机的未来

01:21 普适计算 Ubiquitous Computing
04:55 奇点 Singularity
06:51 把工作分为4个象限,讨论自动化带来的影响
10:15 机器人的存在时间可能长过人类,可以长时间探索宇宙

posted @ 2021-11-17 11:16  Ricardo_ML  阅读(135)  评论(1编辑  收藏  举报