转码200小时
转码200小时
目录
搬运帖,原帖:【转码路线图】
- 时间安排
- 内容涵盖
- 内容详解
- 核心书籍
时间安排
总共用时200个小时,一周学20小时,全部完成需要3-4个月时间。
内容涵盖
-
计算机引论、计算机组成原理、数学结构和算法、面试刷题。
-
编程语言:C,Python,Java,SQL 等等。
-
计算机组成原理体现在Coursera: Nand2Tetris这门课。
详解
-
这是一个系列视频,包含 40 个长约 10 分钟的短视频,尤其适合作为对计算机学科缺乏整体认识的朋友。 这对我们建立框架非常有帮助。每一个视频涉及一个计算机相关的主题,从逻辑电路一直到机器学习和机器人, 涉及计算机科学的方方面,作者用 10 分钟的时间解释每一个主题的由来、基本原理等等。
视频内容涉及:
- 计算机发展史
- 布尔逻辑和逻辑门
- 二进制编码
- CPU、寄存器和内存
- 指令集
- 编程方式
- 数据结构和算法
- 软件工程
- 操作系统
- 计算机网络和互联网
- 计算机安全和密码学
- 机器学习
- 等等
-
类型:计算机引论
-
时间:10 小时
-
形式:视频
-
语言:英文(中字)
-
编程语言:无
-
难度:⭐
-
CS61A Structure and Interpretation of Computer Programs
这是来自 UC 伯克利的计算机本科第一门课。这门课与神书《Structure and Interpretation of Computer Programs》 同名,当然,这不是巧合。这门课的大部分内容就是根据这本书的内容改编的,相比于阅读原书,这门课配合 了讲义、视频、作业、练习,让学生更加轻松的吸收 SICP 这本书中的精华。SICP 是每一个计算机学生 都应该读的好书。
这门课作为我们核心课的第二门,主要是帮助我们从软件抽象的角度建立框架,课程主要采用友好的 Python 语言 进行教学,讲解了程序设计的核心概念,比如变量、函数、递归、解释器原理、树的递归、数据抽象、语法、 迭代器、对象、组合等等。
在熟悉 Python 以后,课程引入 Scheme,一种 Lisp 方言来讲解更加本质的编程原理,比如尾递归、 解释器等等。SICP 原书通篇都是 Scheme 进行讲解的,原书作者解释是因为 Scheme 是最简单的可以 诠释本书内容的语言。Lisp 固然是极好的语言,学习它对学习编程特别有帮助。
最后,课程还涉及了一些关于数据库和 SQL 的内容。
这么课程设计的非常好,即平易近人,有让人领略了 SICP 的精华。老师们还开发了一个可视化的 Python 执行解释软件,帮助学生理解程序的执行原理。
-
CS50(难度替换,初学者)
这是一门来自哈弗大学的计算机入门课,相比 CS61A 这门课对完全没有一点编程基础的同学 更加有好一些。
该课程从图形编程语言 Scratch 开始介绍编程的基本组成,比如循环、控制等语句,然后介绍 C 语言,即 更加贴近工程实践的计算语言,随后用 C 语言讲解了数组、内存、数据结构、算法等重要的主题。然后引入 Python、SQL、HTML、CSS 等更多的语言,让学生接触计算机科学的各个方向。
这门课的整体设计对新萌更加友好,但是学完如果有时间还是建议看看 CS61A 的相关内容, 因为 CS61A 真的是不可多得的好课程。
- 时间:30 小时
- 形式:视频、讲义、作业、大作业
- 语言:英文(英字)
- 编程语言:Python, SQL, C, HTML, CSS, JavaScript
- 难度:⭐⭐
-
CS61B: Data Structures and Algorithms
这是一个门中规中矩的数据结构和算法的入门课。实现语言是 Java,但是对于没有 Java 经验的学生来说, 只要进行其他语言的编程,这门课提供的 Java 入门教学足够完成该课程的所有 lab 和作业了。
关于 Java 的部分包括:
- 类和对象
- 递归
- 接口和继承
- 多态
- 高阶函数
- 迭代器、异常等等
数据结构和算法方面包括:
- 抽象数据类型
- 链表、列表
- 树,B-Tree,红黑树
- 散列
- 堆和队列
- 图和图算法
- 排序
- 搜索
- 压缩算法
- 软件工程
- NP 问题
- 类型:专业课
- 时间:70 小时
- 形式:视频、讲义、作业、大作业
- 语言:英文(英字)
- 编程语言:Java
- 难度:⭐⭐⭐⭐
-
这门课呢,是非常好的计算机引论,他的角度与 CS61A 不同,他是自底向上的,而61A 是典型的自顶向下。
这门课从布尔逻辑说起,讲到机器语言、计算机组成,再到寄存器、汇编、堆栈运算,最后来到高级语言部分, 讲述基本的编译原理,最后上升到操作系统。
值得注意的是,这门课在讲解上述内容的时候并不是通过说教的方式,而是通过亲手制作的方式。所有的项目 跟下来后,你会用自己设计的计算机语言,自制的编译器,编译自己的写的操作系统,运行在自制的 CPU 模拟器上!
- 类型:计算机组成原理
- 时间:40 小时
- 形式:视频、讲义、作业、大作业
- 语言:英文(英字)
- 编程语言:不需要
- 资源:课程官网
- 难度:⭐⭐
-
这是网络上流传很广的一个刷题神奇,作者对数据结构和算法,特别是 LeetCode 的刷题套路有独到的见解。 这个网站提供了一套非常好的刷题面试的框架。
对于学完数据结构和算法,比如 CS61B 的同学来说,是最好的练手场所。
- 类型:应试
- 时间:难以估计,不需要一次完成
- 形式:讲义、Leetcode
- 语言:中文
- 编程语言:任意,Python、Java、C++、JS 等等
- 难度:⭐⭐
-
这门课非常有意思。传统的计算机教育为学生提供了非常丰富且深刻的话题,比如数据结构、操作系统、数据库、 算法等等,但是却忽略了一个程序员的日常生活:
- shell,bash
- git
- debug
- profiling
- vim
- sed, awk
这些东西很零散,但是在程序员日常工作中非常有用。
- 类型:工作会用到的各种东西
- 时间:10 小时
- 形式:视频、讲义、作业
- 语言:英文(英字)
- 资源:课程官网
- 编程语言:Bash
- 难度:⭐⭐
核心书籍
- 《计算机程序的构造和解释》
- SICP, Structure and Interpretation of Computer Programs
- 《深入理解计算机系统》
- CSAPP, Computer Systems: A Programmer’s Perspective
- 《算法设计手册》
- The Algorithm Design Manual