Skip to content

Commit

Permalink
v0.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
wangzhe3224 committed Oct 21, 2022
1 parent 8b5fe75 commit 5fa398d
Show file tree
Hide file tree
Showing 23 changed files with 708 additions and 14 deletions.
16 changes: 16 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: ci
on:
push:
branches:
- master
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.x
- run: pip install mkdocs-material
- run: mkdocs gh-deploy --force
51 changes: 51 additions & 0 deletions docs/QA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
comments: true
---

!!! note
泛泛还在为这个网站增加内容,如果你有希望了解的话题或者问题,欢迎下方留言!

# 经典问答

## 转码难吗?

不轻松,但是本站提供了一个 200 小时的学习方案。换句话说,付出 200 小时,你应该可以上岸了。
不过,任何职业都是一个终身学习的过程,转码成功后还可以按照 [进阶课程](./advanced/advanced.md)
继续学习。当然,参与实际的工作项目以后,会学习到更多本行业的业务相关的知识。

## 在哪里下载电子书?

两个主要的线上书店:

- [Zlib](https://zh.b-ok.cc/)
- [LibGen](http://libgen.is/)

## 我应该转前端还是后端还是其他??

这个问题比较难回答,[核心课程](./core/core.md) 中涉及的绝大部分内容都跟后端相关性更强,不过
也有设计前端的技术栈,例如 CSS、JavaScript、HTML 这些。

另外,如果建立了良好的计算机框架,我们的选择面还是比较灵活的,前后端还是有一部分重叠内容。

## 我应该学习哪门计算机语言?

如果你已经有了心仪的公司或者行业,你应该去调查一下这个行业的主流编程语言。

当然,如果你做完了 [核心课程](./core/core.md) 你应该已经可以比较轻松的写出主流语言:
C、Java、Python、JavaScript。

## 转码编译原理需要学吗?

如果基础比较差,不需要。

## 转码需要学操作系统实现吗?

不是必须的,特别是操作系统实现。

## 这个网站是怎么做的?

使用了如下技术栈:

- Github
- mkdoc
- Material 主题
16 changes: 16 additions & 0 deletions docs/about.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 关于我

泛泛,土木工程本硕博,智力一般,非211本科,985硕博,对计算机有兴趣浓厚。

27岁萌生转码想法,28岁开始正式准备,29岁博士毕业,同年入坑量化对冲基金行业,31岁入职头部量化对冲基金高级工程师。

网络上大部分流传的转码故事以互联网为主,其他行业,比如量化对冲基金,资源较少。对于量化对冲基金和互联网的开发人员主要的区别在于业务知识,但是业务知识对于转码本身来说没有太多区别。因为对于转码人员,最缺乏的是基础知识和知识框架,这部分无论做什么业务都是必要的。而业务往往是根据自己感兴趣的方向决定的。

如果你对泛泛感兴趣:可以在

- [知乎](https://www.zhihu.com/people/wangzhetju)
- [小红书](https://www.xiaohongshu.com/user/profile/5d093f22000000001201fe8a?xhsshare=CopyLink&appuid=5d093f22000000001201fe8a&apptime=1666045905)
- [B站](https://space.bilibili.com/414096658/channel/series)
- [油管](https://www.youtube.com/channel/UCewwgakV1SB1IKu8305Hgsg/videos)

找到我,那里有泛泛的抖机灵、心得体会、视频分享和回答。
4 changes: 4 additions & 0 deletions docs/advanced/advanced.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# 进阶资源

!!! note
在完成 [核心课程](../core/core.md) 之前不需要考虑这里的内容。
Binary file added docs/assets/logo.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions docs/books.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# 优秀书籍

阅读经典书籍是提升水平最快的方式,特别是在具备一定基础后,效率会大大超过看视频。不过,还是那句老话,
只看看书,不做题,你并没有真的看过这本书。

- Structure and Interpretation of Computer Programs
- SICP,计算机程序的构造和解释

持续更新。。。
30 changes: 30 additions & 0 deletions docs/core/computer_science_crash_course.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
comments: true
status: new
---

# 计算机科学与技术——入门课40讲全

这是一个系列视频,包含 40 个长约 10 分钟的短视频,尤其适合作为对计算机学科缺乏整体认识的朋友。
这对我们建立框架非常有帮助。每一个视频涉及一个计算机相关的主题,从逻辑电路一直到机器学习和机器人,
涉及计算机科学的方方面,作者用 10 分钟的时间解释每一个主题的由来、基本原理等等。

视频内容涉及:

- 计算机发展史
- 布尔逻辑和逻辑门
- 二进制编码
- CPU、寄存器和内存
- 指令集
- 编程方式
- 数据结构和算法
- 软件工程
- 操作系统
- 计算机网络和互联网
- 计算机安全和密码学
- 机器学习
- 等等

B站 up 给做了很棒的中文字幕。

[课程链接](https://www.bilibili.com/video/BV18s411A7Rj/?vd_source=da65fd0f11a3d90e543b48cf26e65fb7)
138 changes: 138 additions & 0 deletions docs/core/core.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
---
comments: true
---

# 核心内容

本文意在根据不同情况,用最少的课建立计算机框架、掌握转码面试基本技能。全部跟下来大概需要 200 小时,
即 3 - 4 个月时间。

!!! note
不要只看视频,不写作业哦;有作业的,一定动手写了。如果有问题欢迎在相应的课程页面留言讨论。
比如:[CS61A](./cs61a.md)

英文不太好的小伙伴看这里:[核心内容中文替代](./core_cn.md)

## 工科、理科本科

如果接受了一般工科或者理科教育,那么数学不需要重复学习了:高等数学、线性代数、概率和统计。
计算机本科会涉及一门叫做离散数学的学科,但是对于转码阶段的人的来说,不重要。

### 有一点编程经验

比如,写过 Python、Matlab、VBA 等脚本, 知道基本的编程语言组成部分,比如执行、循环、分支等等。

以下是核心课程,估计用时合计小于 200 小时,按照一周 20 小时计算,考虑到作业困难或者其他阻碍,
全部完成大概需要 3 - 4 个月时间。

解释一下为什么选择如下资源。这几门课程包含了:计算机引论、计算机组成原理、数学结构和算法、面试刷题。
同时这些课涉及了不同的编程语言:C,Python,Java,SQL 等等,覆盖了市面上最主流的工作语言。
而且,不必专门再去话时间入门这些语言,因为这些课程都会讲述足够多的关于语言本身的内容,同时配合
相应的练习,只要坚持把作业做了,不但可以掌握相关计算机基础,还可以磨炼语言本身的使用,为将来找工作
奠定良好的基础。

注意到这些课程并没有涉及更多的计算机专业课,比如操作系统、数据库实现、计算机网络、编译原理、分布式系统等课程。
主要原因是:一来,在没有坚固的基础时这些课程只会增加烦恼;二来,转码面试并大概率不会涉及如此特别深入的内容,
而浅显的内容已经在计算机组成原理中所有涉及,特别是 [Coursera: Nand2Tetris](./nand2teris.md) 这门课。

- [计算机科学与技术 - 入门课40讲全](./computer_science_crash_course.md)
- 类型:计算机引论
- 时间:10 小时
- 形式:视频
- 语言:英文(中字)
- 编程语言:无
- 难度::star:
- [CS61A Structure and Interpretation of Computer Programs](cs61a.md)
- 类型:计算机引论
- 时间:50 小时
- 形式:视频、讲义、作业、大作业
- 语言:英文(英字)
- 编程语言:Python, Scheme, SQL
- 难度::star::star::star:
- [CS61B: Data Structures and Algorithms](./cs61b.md)
- 类型:专业课
- 时间:70 小时
- 形式:视频、讲义、作业、大作业
- 语言:英文(英字)
- 编程语言:Java
- 难度::star::star::star::star:
- [Coursera: Nand2Tetris](./nand2teris.md)
- 类型:计算机组成原理
- 时间:40 小时
- 形式:视频、讲义、作业、大作业
- 语言:英文(英字)
- 编程语言:不需要
- 难度::star::star:
- [LABULADONG 的算法网站](./leetcode.md)
- 类型:应试
- 时间:难以估计,不需要一次完成
- 形式:讲义、Leetcode
- 语言:中文
- 编程语言:任意,Python、Java、C++、JS 等等
- 难度::star::star:
- [MIT-Missing-Semester](./mit_missing.md)
- 类型:工作会用到的各种东西
- 时间:10 小时
- 形式:视频、讲义、作业
- 语言:英文(英字)
- 编程语言:Bash
- 难度::star::star:

### 毫无编程经验

这里其实只替换了第二门课,变成了 [CS50](./cs50.md) 因为这门课对无编程经验的人更加友好,更加简单。

以下是核心课程,估计用时合计小于 200 小时,按照一周 20 小时计算,考虑到作业困难或者其他阻碍,
全部完成大概需要 3 - 4 个月时间。

- [计算机科学与技术 - 入门课40讲全](./computer_science_crash_course.md)
- 时间:10 小时
- 形式:视频
- 语言:英文(中字)
- 编程语言:无
- 难度::star:
- [CS50](./cs50.md)
- 时间:30 小时
- 形式:视频、讲义、作业、大作业
- 语言:英文(英字)
- 编程语言:Python, SQL, C, HTML, CSS, JavaScript
- 难度::star::star:
- [CS61B: Data Structures and Algorithms](./cs61b.md)
- 类型:专业课
- 时间:70 小时
- 形式:视频、讲义、作业、大作业
- 语言:英文(英字)
- 编程语言:Java
- 难度::star::star::star::star:
- [Coursera: Nand2Tetris](./nand2teris.md)
- 类型:计算机组成原理
- 时间:40 小时
- 形式:视频、讲义、作业、大作业
- 语言:英文(英字)
- 编程语言:不需要
- 难度::star::star:
- [LABULADONG 的算法网站](./leetcode.md)
- 类型:应试
- 时间:难以估计,不需要一次完成
- 形式:讲义、Leetcode
- 语言:中文
- 编程语言:任意,Python、Java、C++、JS 等等
- 难度::star::star:
- [MIT-Missing-Semester](./mit_missing.md)
- 类型:工作会用到的各种东西
- 时间:10 小时
- 形式:视频、讲义、作业
- 语言:英文(英字)
- 编程语言:Bash
- 难度::star::star:

## 非工科本科

坏消息是:非工科的同学如果没有学过线性代数和概率统计,需要学习。

好消息是:数学在转码阶段并不那么重要。

所有,直接参考上一章即可。

!!! note
如果大家有任何疑问欢迎下方留言,或者在 [Q&A](../QA.md) 查找或留言。
26 changes: 26 additions & 0 deletions docs/core/core_cn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 核心课程 中文资源

对于英语不太好的同学,泛泛为你准备了对应中文核心课程!

- [Python语言基础与应用](https://www.bilibili.com/video/BV1Q5411t77b/?vd_source=da65fd0f11a3d90e543b48cf26e65fb7)
- 类型:专业课
- 时间:50 小时
- 形式:视频
- 语言:中文
- 编程语言:Python
- 难度::star::star:
- [数据结构和算法](https://www.icourse163.org/course/ZJU-93001?from=searchPage&outVendor=zw_mooc_pcssjg_)
- 类型:专业课
- 时间:50 小时
- 形式:视频、讲义、作业、大作业
- 语言:中文
- 编程语言:C
- 难度::star::star::star::star:
- [视频](https://www.bilibili.com/video/BV1H4411N7oD/?vd_source=da65fd0f11a3d90e543b48cf26e65fb7)
- [计算机组成原理](https://www.icourse163.org/course/HIT-309001?tid=1206616250)
- 类型:专业课
- 时间:50 小时
- 形式:视频、讲义、作业、大作业
- 语言:中文
- 编程语言:C
- 难度::star::star::star:
18 changes: 18 additions & 0 deletions docs/core/cs50.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
comments: true
status: new
---

# CS50

这是一门来自哈弗大学的计算机入门课,相比 [CS61A](cs61a.md) 这门课对完全没有一点编程基础的同学
更加有好一些。

该课程从图形编程语言 Scratch 开始介绍编程的基本组成,比如循环、控制等语句,然后介绍 C 语言,即
更加贴近工程实践的计算语言,随后用 C 语言讲解了数组、内存、数据结构、算法等重要的主题。然后引入
Python、SQL、HTML、CSS 等更多的语言,让学生接触计算机科学的各个方向。

这门课的整体设计对新萌更加友好,但是学完如果有时间还是建议看看 [CS61A](cs61a.md) 的相关内容,
因为 CS61A 真的是不可多得的好课程。

[课程链接](https://cs50.harvard.edu/x/2022/)
35 changes: 35 additions & 0 deletions docs/core/cs61a.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
comments: true
status: new
---

# CS61A: Structure and Interpretation of Computer Programs

> 计算机程序的构造和解释
这是来自 UC 伯克利的计算机本科第一门课。这门课与[神书](../books.md)《Structure and Interpretation of Computer Programs》
同名,当然,这不是巧合。这门课的大部分内容就是根据这本书的内容改编的,相比于阅读原书,这门课配合
了讲义、视频、作业、练习,让学生更加轻松的吸收 SICP 这本书中的精华。SICP 是每一个计算机学生
都应该读的好书。

这门课作为我们核心课的第二门,主要是帮助我们从**软件抽象**的角度建立框架,课程主要采用友好的 Python 语言
进行教学,讲解了程序设计的核心概念,比如变量、函数、递归、解释器原理、树的递归、数据抽象、语法、
迭代器、对象、组合等等。

在熟悉 Python 以后,课程引入 Scheme,一种 Lisp 方言来讲解更加本质的编程原理,比如尾递归、
解释器等等。SICP 原书通篇都是 Scheme 进行讲解的,原书作者解释是因为 Scheme 是最简单的可以
诠释本书内容的语言。Lisp 固然是极好的语言,学习它对学习编程特别有帮助。

最后,课程海世纪了一些关于数据库和 SQL 的内容。

这么课程设计的非常好,即平易近人,有让人领略了 SICP 的精华。老师们还开发了一个可视化的 Python
执行解释软件,帮助学生理解程序的[执行原理](https://pythontutor.com/cp/composingprograms.html#code=def%20hi%28%29%3A%0A%20%20%20%20print%28%22hi%22%29%0A%20%20%20%20%0Ahi%28%29&cumulative=true&curInstr=4&mode=display&origin=composingprograms.js&py=3&rawInputLstJSON=%5B%5D)

![20221019233759](https://raw.githubusercontent.com/wangzhe3224/pic_repo/master/images/20221019233759.png)

所有的语言环境都已经为学生配置了线上版本,就开箱即用,避免了配置环境折磨新萌的问题。<https://code.cs61a.org/>

所有的 Lab 都是交互式的,一步一步完成的,并且配有详细的解答。<https://cs61a.org/lab/sol-lab03/>

- [课程链接](https://cs61a.org/)
- [B站链接](https://www.bilibili.com/video/BV1s3411G7yM?p=99&vd_source=da65fd0f11a3d90e543b48cf26e65fb7)
34 changes: 34 additions & 0 deletions docs/core/cs61b.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
comments: true
status: new
---

# CS61B: Data Structures and Algorithms

这是一个门中规中矩的数据结构和算法的入门课。实现语言是 Java,但是对于没有 Java 经验的学生来说,
只要进行其他语言的编程,这门课提供的 Java 入门教学足够完成该课程的所有 lab 和作业了。

关于 Java 的部分包括:

- 类和对象
- 递归
- 接口和继承
- 多态
- 高阶函数
- 迭代器、异常等等

数据结构和算法方面包括:

- 抽象数据类型
- 链表、列表
- 树,B-Tree,红黑树
- 散列
- 堆和队列
- 图和图算法
- 排序
- 搜索
- 压缩算法
- 软件工程
- NP 问题

[课程链接](https://sp21.datastructur.es/)
Loading

0 comments on commit 5fa398d

Please sign in to comment.