知乎 Live:2017.5.16 晚 8:00 如何自学计算机专业课程 主讲 : 北京理工大学计算机学院金旭亮
第一部分 计算机专业的自学路线图
问题 1: 为什么要去啃枯燥抽象难懂的计算机专业课程?
问题 2: 业余时间自学计算机专业是否可能?
问题 3: 计算机专业都学了些什么课程?
ACM 总结的 18 个计算机科学关键领域 缩写 关键知识领域 ( 英文名称 ) 说明 AL Algorithms and Complexity 算法与复杂度 AR Architecture and Organization 体系结构与组织 CN Computational Science 计算科学 DS Discrete Structures, 离散结构 GV Graphics and Visualization 图形与可视化 HCI Human-Computer Interaction 人机交互 IAS Information Assurance and Security 信息安全 IM Information Management 信息管理 IS Intelligent Systems: 智能系统 Computer Science Curricula-2013 http://www.acm.org/education/curricula-recommendations
ACM 总结的 18 个计算机科学关键领域 - 续 缩写 关键知识领域 ( 英文名称 ) 说明 NC Networking and Communication 网络与通讯 OS Operating Systems 操作系统 PBD Platform-based Development: 基于特定平台的开发 PD Parallel and Distributed Computing 并行与分布式计算 PL Programming Languages 编程语言 SDF Software Development Fundamentals 软件开发基础 SE Software Engineering 软件工程 SF Systems Fundamentals 系统基础 SP Social Issues and Professional Practice 社会性主题与职业实践
ACM 的 Computer Science Curricula-2013 关键知识领域 (Knowledge Area,KA) 核心 (Core) 内容 Tier 1: 所有人必须掌握 Tier 2: 拿学位的必须掌握 选修 (Elective) 内容
衡量计算机科学知识的掌握程度 Familiarity ( 了解 ) What do you know about this? Usage ( 会用 ) What do you know how to do? Assessment ( 评估与决断 ) Why would you do that?
计算机自学路线图 高等数学离散数学线性代数概率统计 数学基础 数据结构与算法计算机组成原理操作系统计算机网络 专业基础理论 深入钻研 高校研究所... 科研实践 计算机概论 IT 简史 零基础起步 编程语言 C/C++ Java/C# Python JavaScript... 并行学习 实用技术 各种流行的开发框架和工具 特定技术领域 人工智能图形图像云计算物联网 工作实践 工程实践 各 IT 公司
第二部分 你会 学习 吗?
人的大脑与人的学习 一本介绍学习方法的好书!
大脑的工作模式 工作记忆 内存 长期记忆 外部存储器
学习的过程 紧密连接的知识集合, 构成 组块 人类学习的过程, 就是把吸收的知识转换为组块, 并将其移入长期记忆的过程
经过理解与重组 重组的过程, 不是一次完成的, 需要多次 零散的组块 建立了关联的组块
培训班存在的问题 适当休息与及时整理, 让信息有条理且彼此之间联结牢固 短时间向大脑灌入过多的知识, 不给消化吸收的时间, 神经元之间的连接难以形成和巩固
(1) 我们要干特定事, 解决特定的问题 基于组块的场景式学习方式 特定的场景 (3) 我们应用组块, 聪明地解决特定的问题 组块 组块 组块 组块 (2) 我们主动学习, 掌握足够多的组块
场景式组块学习法 -1 (1) 针对具体的场景, 搜集各种资源, 构建知识框架 :
场景式组块学习法 -2 (2) 学习, 向知识框架中不断地填充知识组块 : (3) 图拼完了, 意味着你要解决的问题所需要的知识组块己经全部就位, 现在你就可以着手解决实际问题了
有效学习的基本原则 学习必须循序渐进, 并且通常需要多次反复 学习需要高度可控 即时反馈和一个进度条 学习需要明确目标, 不同的目标导致不同的学习策略
学习要遵循人的认知规律 从感性到理性 从具体到抽象 理论必须在实践中才能真正学好
知识之网 与 课程 有效学习的成果是构成网络的知识 知识点 领域 课程
知识的 互联网 成网的知识, 是一个 组块, 可作为一个整体构建出更大的 知识互联网 更大的知识 互联网 成网的知识, 才是有效的知识 学习的过程, 是建立新知识与己有知识网络的连接 孤立的知识点, 其实没用
知识之网的遍历 ( 学习 ) 方法 中心开花式的学习方法 6 5 2 3 4 从己经掌握的节点出发, 进行广度遍历 从己经掌握的节点出发, 进行深度遍历 ( 推荐 ) 1
计算机技术学习的 N+1 和 N-1 层 原理 上层知识 少 计算机技术知识的层次性非常明显 你主要在这一层工作和学习 第 N+1 层 第 N 层 第 N-1 层 多 当你主要在第 N 层工作时, 需要对第 N-1 和 N+1 层下功夫, 通常就足以应付日常的工作和学习任务了 少 底层知识 在学习上花的时间和精力
不存在 万能的 学习方法 学习是个人的事, 是高度个性化的 以网为师, 自主学习, 终身学习
第三部分 读书那些事
选择书籍的基本原则与方法 选择适合于自己当前水平的书读 选择那些你己经具备读懂前提的书读 阅读科普书籍入门 通过学习专业教材掌握基础 通过技术书籍深入特定领域 尽量阅读最新的英文版, 或者中英文对照着看 目的决定阅读方法
分类阅读法 感性的成份较多理性的成份较多较为复杂与抽象 科普读物计算机专业教材特定领域技术专著 了解背景, 明了术语和概念, 建立全局观 打好计算机科学理论基础, 培养学习后劲 偏理论 偏实践 针对典型场景, 总结开发经验, 解决各种实际问题针对特定领域, 深入探究其中的规律与奥秘 21 天 /7 天 / 零基础 XXX 框架 /XXX 开发 / 从实践入手, 引发兴趣, 带入大门 系统介绍特定领域基础开发技巧, 教你学会使用这个框架或工具
多遍阅读法的实例
多遍阅读法 详解 预热阶段 初步构建知识之网, 同时确定阅读顺序和具体学习路线 第一遍 仔细读第一章 快速浏览一章节的开头和结尾, 跳读中间 第二遍 挑出那些你最感兴趣的部分细读, 看不懂的, 可以先打个标记, 跳过去 第三遍 看那些你还没有看的内容 第四遍及更多遍 重点攻克那些你没看懂的内容 通读全书, 回顾反思 进行巩固
难书和厚书的典型
应对 难书 和 厚书 的几招 断点继传法 对照阅读法 教学视频法 书看不懂时, 不硬看, 扫清障碍, 咱再来 多找几本书, 对照着看 先看教学视频入门, 再看书
第四部分 特定计算机专业课程学习建议
计算机与数学 问 : 数学不好, 就没法从事软件开发工作吗? 答 : 具备基本的数学能力是对所有计算机专业人员的基本要求
计算机与数学 问 : 有哪些数学分支是计算机专业所必须学的? 答 : 高等数学 离散数学 概率论与数理统计 线性代数 虚线表示可选
国内数学教材 特点 : 1. 通常没什么废话, 一上来就直奔主题 : 定理 证明 习题 2. 通常很枯燥乏味 3. 有些教材写得过于省略, 不适合于自学 4. 只讲数学, 不讲数学史, 不讲应用
国外数学教材
遵循从易到难 从感性到理性, 从具体到抽象的认知规律 先科普后教材 先导学后专著再到论文 通过 MOOC 学比自己看书难度更低 EXCEL,MATLAB,R 等软件可以促进数学学习
一门课, 一本书, 树立计算机系统全局观
计算机概论 : 树立计算机系统全局观 Nell Dale 的 计算机科学概论 采用剥洋葱的方式从内向外介绍计算机科学 J.Glenn Brookshear 的 计算机科学概论 每一个主题自然而然地引导出下一个主题, 由具体到抽象逐步推进
通过阅读科普读物了解计算机科学 最近一波技术浪潮是人工智能, 通过阅读相应的科普读物, 能对这一技术对人类社会造成的冲击有一定的了解
著名的 深入理解计算机系统 计算机组成原理 操作系统 概论 / 导论 / 科普读物 ( 从程序员视角 ) 深入理解计算机系统 C / Linux 编译原理 计算机网络
数据结构与算法 主要内容 : 数据结构与算法的理论基础 各种数据结构 / 算法的介绍 学习目的 : 算法要培养的核心能力 是 针对特定问题, 设计解决方案 包容 算法的设计算法的评估 需要用到
数据结构与算法 的经典教材及书籍
数据结构与算法 的入门书籍
数据结构与算法 学习路线 离散数学 编程语言 算法图解 算法基础 数据结构与算法 算法导论 算法 学习的前提初步了解入门, 打下基础 深入学习
计算机组成原理 的学习顺序与推荐教材 数字电路基础 计算机组成与设计 ( 计算机组成原理 ) 操作系统 编译原理
计算机组成原理 的学习内容 计算机系统 概述 指令集设计 处理器设计 云计算平台 技术 并行计算系 统设计 I/O 与存储 系统设计
计算机组成原理 的学习要点 Intel IA32/64 MIPS ARM 指令集 汇编程序员看到的计算机 实现 微体系结构 CPU( 芯片 ) 设计者看到的计算机 计算机体系结构 计算机设计者看到的计算机
计算机组成原理的学习顺序
操作系统 与程序员 软件工程 第 N+1 层 多数程序员日常工作所在的技术层次 第 N 层 操作系统 第 N-1 层
操作系统 在计算机专业课程体系中的位置 数据结构与算法 信息安全 计算机组成原理 操作系统 编译原理 编程语言 计算机网络
操作系统经典教材与专业技术书籍 教材 专著
操作系统 的学习方法 C 编程完成教材作业 学习经典教材 掌握 Linux Shell 编程, 玩转 Linux 操作系统原理 使用 Java/C# 等开发网络或多线程应用程序 使用工具完成相应试验 阅读专业书籍 Linux 内核 深入解析 Windows
计算机网络 学习路线图 编程语言 (C/Java/Python) 数据结构与算法 计算机网络 开发网络应用 操作系统 学习前提 科普读物 专业教材 特定领域技术书籍 使用特定编程语言 / 平台的网络库
计算机网络经典教材
学习 计算机网络 的关键是弄明白 计算机是如何连接的 数据是如何在计算机网络中传送的 网络软件系统应该如何构建
计算机网络 具体学习建议 理解分层架构阅读相关科普书籍动手编写网络程序学会使用 Wireshark 之类工具抓包
三张图, 道尽千言万语
本次 Live 讲授部分内容结束
本次 Live 结束, 后继 Live 初步计划 : 知乎 Live 第一场 : 如何自学计算机专业课程, 己结束 知乎 Live 第二场 : 程序员是怎样练成的?,2017 年 7 月 知乎 Live 第三场 : 人在 IT: 计算机专业学生职业发展规划,2017 年 9 月