“Nand2Tetris Engine Curriculum”版本间的差异
(→背景 Background) |
(→背景 Background) |
||
第17行: | 第17行: | ||
A unique accomplishment of the course, is that it provides a comprehensive framework to guide students through the implementation of a functionally universal system. One may hypothesize that anyone who go through the implementation must encounter enough challenges that examines or at least reminds the leaner about the working mechanisms and inter-relationships between a universal system. That means, we have finally a prototype of testing a '''comprehensive aspects of a person's learning abilities within a finite course'''. | A unique accomplishment of the course, is that it provides a comprehensive framework to guide students through the implementation of a functionally universal system. One may hypothesize that anyone who go through the implementation must encounter enough challenges that examines or at least reminds the leaner about the working mechanisms and inter-relationships between a universal system. That means, we have finally a prototype of testing a '''comprehensive aspects of a person's learning abilities within a finite course'''. | ||
− | Another | + | Another feature worth highlighting of this course, is that Prof. Nisan and Schocken designed as set of hands-on exercises that works like little puzzles or games. The tools and languages that the course requires you to use are like little video games. This [[gamification]] of learning is exciting and worth replicating and extending in any other operational settings. While "playing", you are developing real and serious skills. |
+ | |||
+ | One of most serious skill that anyone must learn out of this course is the skill of abstraction management. In this course, one uses the abstraction layers of computing systems to build up a set of [[grounding metaphors]] and [[consistent vocabulary]] about space, time, and probabilities. We also hope to integrate the notion of machine learning, or learnability as a computational process as a part of this program. To support this program, we will use ideas borrowed from [[wikipedia:Probably approximately correct learning|PAC Learning]] theory, and [http://tensorflow.org Tensforflow's] [[wikipedia:word embedding|word embedding]] problems as a way to dynamically identify vocabulary in a [[crowd learning]] process. | ||
It is reasonable to believe that there are few other courses ever reached this level of comprehension. This comprehensiveness motivates us to model other courses after this one. This is the background of why we want to devote our times to develop this course. | It is reasonable to believe that there are few other courses ever reached this level of comprehension. This comprehensiveness motivates us to model other courses after this one. This is the background of why we want to devote our times to develop this course. |
2016年2月5日 (五) 14:48的版本
目录
公告板 Bulletin Board
公告板使用说明:(How to use the Bulletin Board)
逻辑模型 Logic Model
For now, we will use textual description to present the Logic Model. Overtime, this will be changed to a graphical model.
背景 Background
基于Shimon Schocken|和Noam Nisan 教授两位所开发的Nand2Tetris课程,把信息技术的分层知识结构,用群体学习的基本规律,开发成一个联系实体世界与群体意识的可重组学习模块。
The course: Nand2Tetris is a course developed by Prof. Noam Nisan and Prof. Shimon Schocken, who created a set of lectures and test scripts, along with a Nand2Tetris Q&A website that supports learning. After trying the course in person, I found that it can be expanded to learn many other fields using a similar structure and rigor. Moreover, this course provides an excellent example on how to engage learners with a set of profound, yet interrelated assignments, that can be used to reveal the working principles of many kinds of universal machines. Ideally, other fields should come up with similar set of tools to support their respective learning experience. In the mean time, we will try to first keep developing this course, and relate the content to similar fields when we can. Then, we will try to leverage these supports to create a new layer of annotation and content extension, so that students who take this online course can get additional support using tools other than the ones currently provided by the Nand2Tetris website and its Q&A website.
A unique accomplishment of the course, is that it provides a comprehensive framework to guide students through the implementation of a functionally universal system. One may hypothesize that anyone who go through the implementation must encounter enough challenges that examines or at least reminds the leaner about the working mechanisms and inter-relationships between a universal system. That means, we have finally a prototype of testing a comprehensive aspects of a person's learning abilities within a finite course.
Another feature worth highlighting of this course, is that Prof. Nisan and Schocken designed as set of hands-on exercises that works like little puzzles or games. The tools and languages that the course requires you to use are like little video games. This gamification of learning is exciting and worth replicating and extending in any other operational settings. While "playing", you are developing real and serious skills.
One of most serious skill that anyone must learn out of this course is the skill of abstraction management. In this course, one uses the abstraction layers of computing systems to build up a set of grounding metaphors and consistent vocabulary about space, time, and probabilities. We also hope to integrate the notion of machine learning, or learnability as a computational process as a part of this program. To support this program, we will use ideas borrowed from PAC Learning theory, and Tensforflow's word embedding problems as a way to dynamically identify vocabulary in a crowd learning process.
It is reasonable to believe that there are few other courses ever reached this level of comprehension. This comprehensiveness motivates us to model other courses after this one. This is the background of why we want to devote our times to develop this course.
长期目标 Long Term Goal
To provide a generalized course framework that allows learners to incrementally build up their understanding of arbitrary systems or fields using layers of abstractions and general purpose computational tools. The essence of computation and its implication on how the mind works, at least how mind can be assisted to work, can be repeatedly examined using many lenses throughout this course. We believe that this course can provide a set of basic vocabulary for thinkers, such as the logic gates, as Frege and George Boole originally proposed in the way logicians and mathematicians think. Clearly, Nand2Tetris course is about building a multi-layered computing system, with concrete tools and computational infrastructures, we also hope that we can leverage its layers of abstraction to show that many other fields of sciences can borrow these technical tools and engineering approaches to improve the thought processes of other disciplines.
However, using Logic Gates as the most primitive building blocks may not be our ultimate goal. We believe that logic gates in this book are the grounding metaphors of this version of a concrete computing system. We intend to elevate the primitive building blocks to something more generic, say "metaphors" themselves. How "metaphors" or just "functions" can be used as a way to relate to this course, will be incrementally established, starting by a mythological metaphor. This is to be developed with this wiki website as we learn that logic gates are also a kind of "function" which is a simple kind of metaphor between boolean values.
学习目标 Learning Objectives
There are some basic learning objectives
- Have participants build some systems in the process of learning new concepts. Eventually building a functional, Turing Complete computer. This computer should be able to do a lot, a lot of practical things.
- We will also use this course to depart knowledge about a number of engineering and knowledge management tools to participants. This include MediaWiki, Project Management, Version Control tools, Testing Tools and Procedures, and many others. These tools should help participants eventually acquire the a set of social contracts.
- Try to extend this learning to other disciplinary areas, such as biology and language learning.
We will store all these content in a wiki-based knowledge repository, and will try to use other tools such as Tensorflow and natural language processors to manage learning results.
预期效果 Desirable Outcomes
Four essentiall learning outcomes should come out of this course:
- FIrst and foremost, the outcome is to enable learning participants to see both the Forrest and the Trees throughout this course. Technically speaking, leaners must start appreciating in an operational manner, the power of decomposition and synthesis. By using very simple logic gates, one may compose many simple functions to create a very complex, functional computational machine. One may even create a number of machines that interact with each other. The immediate outcome is that every session of the course, should guide learners to understand a particular way of decomposing and re-combining these primitive building blocks of different abstraction levels to create desirable behavior.
- As we implement each component of this course, each activity will be guided by a Design Contract. This concept should lead to how everything will be organized in the following courses. The notion that interfaces or implementation specification must be prescribed before finding a solution is exactly the logic we must follow. Every person or team completes this course, should obtain an operationally, and logically consistent vocabulary. Once learners starts knowing the power of synthesis of decomposable building blocks, they should become aware that they can eventually develop a fully functional computer systems. The completed ones should likely reveal at least the persistence of the student teams. We will also use this as a gauge to determine the quality of dedication and knowledge coverage of the participant.
- The second part of the the learning outcome is that one must learn to use the key concepts in computation to search for supporting materials, and eventually identify useful learning support materials for their own learning experience. By learning under the guidance of building a complete computing system, and searching for material the relate to these terms, it is more likely than learning other concepts, that one will quickly acquire the skill and become accountant about the way computing scientists and mathematicians talk about complex ideas, and how to handle them with rigorous tools and methods. This is the third critical outcome of this course. Learn to search using a set of rigorous terms commonly used by computing scientists.
- The last important outcome is that learners must learn to acquire the skill of documenting their own learning experience using various presentation formats. We also expect as we have many people working on this website, as they work toward the same set of design challenges, we will gain increasingly higher quality documentation and pedagogy about how to lead new comers to learn more about multi-layered computing systems.
- As learners starts to document their own learning experience, learned to search for answers, and write intelligible questions to be posted on other supportive websites, one should start recognize that learning is not a lonely venture, it can be full of surprises, especially once you learned to reach out on the Internet, and you will gather friends from a far. This is the ultimate point of learning about computing in a crowd.
输出 Output
The output should be categorized into three items:
- A wiki-based website that continuously document the new experienced produced by learning participants.
- A number of statistical reports the summarizes how people learn. This should reveal how individuals and team-based participants work and think.
- An increasingly mature set of templates that shows how data content, testing scripts, technical ideas, and guiding principles of a living systems should be documented and presented.
- A list of relevant websites, videos, books, and papers that help anyone to learn by themselves.
过程(工作流程)
- 课程开发团队的准备工作
- 选课学生根据课程要求和提供资源自行完成学习
- 每周一次的集中学习进度报告与交流
- 全体参与者的成果展示会
- 全体学习者的知识库编撰工作
输入(资源准备)
参考
- [1] A Robot that runs and swims like a salamander, a TED Talk
- [2] Intro to Biology at MITx
- [3] Learn Genetics at University of Utah
文献
- How to Bake Pi by Eugenio Cheng
- Metaphors we live by by George Lakoff
- Where Mathematics Comes From by George Lakoff and Rafael E. Núñez
- Mathematics, Form and Function by Saunders Mac Lane
- The Grammar of Science by Karl Pearson
- Grammar as Science by Richard K. Larsen
网站
[4]From NAND to Tetris, Building a Modern Computer From First Principles
[5]Nand2Tetris Part I on Coursera
[6]Nand2Tetris Q & A Website
[7] Logisim: a graphical tool for designing and simulating logic circuits
[8]How a 2-1 MUX Work on Electronics Stack Exchange
[9] A very good explanation of how to implement MUX and DMUX
[10] Simple Logic Solver
[11]All About Circuits Website
[12]How Do Computers Work? from Programmers Stack Exchange
[13]First Principles of Derivatives from Sunshine Maths
[14]PyroEDU:Get started learning to build your own electronics by following our FREE online courses below!
[15] Reverse Engineering Machines with the Yoneda Lemma