查看: 4482| 回复: 9
跳转到指定楼层
上一主题 下一主题
收起左侧

计算机系统课程推荐 Build a Modern Computer from First Principles: Nand to T

全局:
公开课
学校名称: Coursera
Unit号: 6
开课时间: 不限
课程全名: Build a Modern Computer from First Principles: From Nand to Tetris
平台: Coursera

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
1. 课程的基本信息:课程平台,开课学校,课程全名,开课时间,课程链接。
课程平台: Coursera
开课学校: Hebrew University of Jerusalem
课程全名: Build a Modern Computer from First principles: From Nand to Tetris
开课时间: 不限

课程链接: https://www.coursera.org/learn/build-a-computer/home/welcome


2. 课程难度,作业量,每周花在这门课的时间,以及你的基础(是初学者?还是本来就是你的专业内容?)


这门课程的名称是 《用第一原理设计现代计算机,从与非门到俄罗斯方块》。课程承诺带着你从零开始设计一台计算机,包括计算机的硬件和软件系统。一开始我很疑惑,怎么从零开始搭建硬件系统,难道是要教买零件和焊电路板吗,后来发现不用,这门课程提供了很完善的辅助性软件,比如硬件的设计和搭建,是用Hardware simulator和 Hardware description language实现的,省去了直接动手操作的麻烦,但是足够让你理解计算机底层实现的原理。
课程分上下两部分。
上部分主要介绍硬件系统,用 Hardware simulator 和 HDL 有最基本的Logic gate -NAND(与非门) 开始,构建一个简易的计算机硬件系统 - hack computer. 循序的分为几步:
1. 由NAND gate(与非门)开始build其他的 elementary 和 combinatorial logic gates, 比如 AND, OR, NOT, MUX, 以及其他的multi way gates
2. Build arithmetic gate "ADD" 以及计算机的arithmetic logic unit (ALU)
3. Build Sequential logic gate, register, memory and counter;
4. 介绍machine language 和 Assembly language
5. Build Center process unit (CPU);
6. 介绍并implement汇编器(Assembler)

下部分我还没用上完,主要介绍的是软件系统,每周的作业就是用任意的high-level programming language来implement软件系统的各个部分,比如virtual machine, compiler,operating system,一种High-level programming language (Jack),以及最终在你实现的这一整套软硬件体系之上来开发应用程序,比如俄罗斯方块。
上半部分课程的难度并不大,没有prerequisite,大概每周lecture 2-3h, 阅读材料 2-3小时,作业3-4小时, 最后一章Assembler会比较难。
下半部分软件系统的课程作业难度比较大,需要你有一些编程基础,大概每周lecture 2-3h, 阅读材料 2-3小时,作业6-10小时。


3. 各种感想、收获、课程内容介绍、你对这门课的评价等等~~这个就自己发挥啦

我在网上找到一个关于这门课上半部分的详细介绍,介绍得比我好,大家可以看一看 https://www.jianshu.com/p/df7508be2545;我上这门课之前,自认为是个计算机白痴,但这门课很神奇得做到了将一个复杂的计算机系统拆分成很多递进的小模块,让一个每一个模块都变得可以理解。这门课的教师Shimon Schockens也是非常优秀的教育家,大家可以看看他的TED演讲 https://www.ted.com/talks/shimon ... puter_course#t-5789
我非常推荐这门课,Professor讲解得很清晰,各种辅助性软件很全面,我并没有购买这门课程,算是旁听,作业不能提交,但是课程提供的这些软件已经足够帮助你检测答案是否正确。


4. 这门课和其他你跟过的课,用过的资源或者是学校上过的课有什么区别?(选答,如果你还跟过其他类似的课的话)


我已经不太记得本科的微机原理课了,只记得上得雨里雾里。。。

评分

参与人数 2大米 +15 收起 理由
hit_piggy + 5 很有用的信息!
Sarlink + 10 很有用的信息!

查看全部评分


上一篇:普林斯顿算法课 第一部分
下一篇:找队友 edx Quantum Mechanics / Information Science
全局:
这链接到了普林斯顿的一个algorithm课啊。。。是一个东西么?
回复

使用道具 举报

🔗
 楼主| Self_Learner 2018-5-13 03:04:47 | 只看该作者
全局:
已注销-EA34 发表于 2018-5-13 02:08
这链接到了普林斯顿的一个algorithm课啊。。。是一个东西么?

之前的链接有问题,应该是这个。
https://www.coursera.org/learn/build-a-computer
回复

使用道具 举报

🔗
sophiexx 2018-5-13 16:38:27 | 只看该作者
全局:
我在上这个课的第二部分,虽然才上了一周的不过感觉很不错,希望可以弥补自己没上过compiler和os的遗憾…
回复

使用道具 举报

🔗
010916hao 2018-6-9 18:58:35 | 只看该作者
全局:
sophiexx 发表于 2018-5-13 16:38
我在上这个课的第二部分,虽然才上了一周的不过感觉很不错,希望可以弥补自己没上过compiler和os的遗憾…

请问第二门课需要以第一门课为基础吗
回复

使用道具 举报

🔗
sophiexx 2018-6-9 21:03:34 | 只看该作者
全局:
010916hao 发表于 2018-6-9 18:58
请问第二门课需要以第一门课为基础吗

我觉得不是很需要,我是直接看的第二部分,讲的很细,没有第一部分也能跟得上。
回复

使用道具 举报

🔗
 楼主| Self_Learner 2018-7-9 14:24:49 | 只看该作者
全局:
010916hao 发表于 2018-6-9 18:58
请问第二门课需要以第一门课为基础吗

如果没有时间,可以直接上第二部分。第二部分与第一部分最直接相关的是第二部分第一章的VM translator (将VM code translate成Assembly code) 这里涉及第一部分介绍的的汇编语言。不过第一章一开始对汇编语言和机器语言做了recap,如果你觉得follow起来没问题,就可以接着上了。
如果有时间的话建议还是从第一部分开始上吧,第一部分的内容相比于第二部分简单很多,而且非常有助于理解各种软件在硬件层面的底层实现原理。
回复

使用道具 举报

🔗
aperion 2018-7-25 12:57:23 | 只看该作者
全局:
曾经做过第二部分,整体是用python写的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表