Об этом курсе
4.9
Оценки: 167
Рецензии: 44
In this project-centered course you will build a modern software hierarchy, designed to enable the translation and execution of object-based, high-level languages on a bare-bone computer hardware platform. In particular, you will implement a virtual machine and a compiler for a simple, Java-like programming language, and you will develop a basic operating system that closes gaps between the high-level language and the underlying hardware platform. In the process, you will gain a deep, hands-on understanding of numerous topics in applied computer science, e.g. stack processing, parsing, code generation, and classical algorithms and data structures for memory management, vector graphics, input-output handling, and various other topics that lie at the very core of every modern computer system. This is a self-contained course: all the knowledge necessary to succeed in the course and build the various systems will be given as part of the learning experience. The only prerequisite is knowledge of programming at the level acquired in introduction to computer science courses. All the software tools and materials that are necessary to complete the course will be supplied freely after you enrol in the course. This course is accompanied by the textbook "The Elements of Computing Systems" (Nisan and Schocken, MIT Press). While not required for taking the course, the book provides a convenient coverage of all the course topics. The book is available in either hardcopy or ebook form, and MIT Press is offering a 30% discount off the cover price by using the discount code MNTT30 at https://mitpress.mit.edu/books/elements-computing-systems. The course consists of six modules, each comprising a series of video lectures, and a project. You will need about 2-3 hours to watch each module's lectures, and about 15 hours to complete each one of the six projects. The course can be completed in six weeks, but you are welcome to take it at your own pace. You can watch a TED talk about this course by Googling "nand2tetris TED talk". *About Project-Centered Courses: Project-centered courses are designed to help you complete a personally meaningful real-world project, with your instructor and a community of learners with similar goals providing guidance and suggestions along the way. By actively applying new concepts as you learn, you’ll master the course content more efficiently; you’ll also get a head start on using the skills you gain to make positive changes in your life and career. When you complete the course, you’ll have a finished project that you’ll be proud to use and share....
Globe

Только онлайн-курсы

Начните сейчас и учитесь по собственному графику.
Calendar

Гибкие сроки

Назначьте сроки сдачи в соответствии со своим графиком.
Clock

Approx. 34 hours to complete

Предполагаемая нагрузка: 7 weeks, each week entailing about 3 hours of video lectures and 10-15 hours programming project....
Comment Dots

English

Субтитры: English...

Приобретаемые навыки

Computer ArchitectureCompiler ConstructionCompilerOperating System
Globe

Только онлайн-курсы

Начните сейчас и учитесь по собственному графику.
Calendar

Гибкие сроки

Назначьте сроки сдачи в соответствии со своим графиком.
Clock

Approx. 34 hours to complete

Предполагаемая нагрузка: 7 weeks, each week entailing about 3 hours of video lectures and 10-15 hours programming project....
Comment Dots

English

Субтитры: English...

Программа курса: что вы изучите

Week
1
Clock
2 ч. на завершение

Getting Started

...
Reading
2 видео (всего 26 мин.), 1 материал для самостоятельного изучения, 1 тест
Video2 видео
Project 0 Overview5мин
Reading1 материал для самостоятельного изучения
Week 1 Overview (start here)5мин
Clock
8 ч. на завершение

Machine Language

...
Reading
10 видео (всего 187 мин.), 1 материал для самостоятельного изучения, 1 тест
Video10 видео
Unit 0.1: Machine Language Overview12мин
Unit 0.2: Machine Language Elements17мин
Unit 0.3: The Hack Computer and Machine Language15мин
Unit 0.4: Hack Language Specification10мин
Unit 0.5: Handling Input and Output26мин
Unit 0.6: Low-Level Programming, Part I24мин
Unit 0.7: Low-Level Programming, Part II21мин
Unit 0.8: Low-Level Programming, Part III32мин
Unit 0.9: Project 4 Overview19мин
Reading1 материал для самостоятельного изучения
Module Overview (start here)10мин
Clock
13 ч. на завершение

Virtual Machine I: Stack Arithmetic

...
Reading
11 видео (всего 188 мин.), 1 материал для самостоятельного изучения, 1 тест
Video11 видео
Unit 1.1: Program Compilation Preview12мин
Unit 1.2: VM Abstraction: the Stack15мин
Unit 1.3: VM Abstraction: Memory Segments9мин
Unit 1.4: VM Implementation: the Stack17мин
Unit 1.5: VM Implementation: Memory Segments26мин
Unit 1.6: The VM Emulator23мин
Unit 1.7: VM Implementation on the Hack Platform8мин
Unit 1.8: VM Translator: Proposed Implementation12мин
Unit 1.9: Project 7: Building the VM Translator, Part I23мин
Unit 1.10: Perspective17мин
Reading1 материал для самостоятельного изучения
Module Overview (start here)10мин
Week
2
Clock
13 ч. на завершение

Virtual Machine II: Program Control

...
Reading
10 видео (всего 166 мин.), 1 материал для самостоятельного изучения, 1 тест
Video10 видео
Unit 2.2: Branching9мин
Unit 2.3: Functions: Abstraction22мин
Unit 2.4: Function Call and Return: Implementation Preview23мин
Unit 2.5: Function Call and Return: Run-time Simulation16мин
Unit 2.6: Function Call and Return Implementation25мин
Unit 2.7: VM Implementation on the Hack Platform10мин
Unit 2.8: VM Translator: Proposed Implementation9мин
Unit 2.9: Project 8: Building the VM Translator, Part II26мин
Unit 2.10: Perspective12мин
Reading1 материал для самостоятельного изучения
Module overview (start here)10мин
Week
3
Clock
13 ч. на завершение

High-Level Language

...
Reading
11 видео (всего 179 мин.), 1 материал для самостоятельного изучения, 1 тест
Video11 видео
Unit 3.2: Object-Based Programming20мин
Unit 3.3: List Processing21мин
Unit 3.4: Jack Language Specification: Syntax5мин
Unit 3.5: Jack Language Specification: Data Types8мин
Unit 3.6: Jack Language Specification: Classes15мин
Unit 3.7: Jack Language Specification: Methods18мин
Unit 3.8: Developing Apps using the Jack language and OS18мин
Unit 3.9: A Sample Jack App: Square Dance24мин
Unit 3.10: Graphics Optimization21мин
Unit 3.11: Perspective11мин
Reading1 материал для самостоятельного изучения
Module Overview (start here)10мин
Week
4
Clock
12 ч. на завершение

Compiler I: Syntax Analysis

...
Reading
10 видео (всего 131 мин.), 1 материал для самостоятельного изучения, 1 тест
Video10 видео
Unit 4.2: Lexical Analysis9мин
Unit 4.3: Grammars14мин
Unit 4.4: Parse Trees6мин
Unit 4.5: Parser Logic20мин
Unit 4.6: The Jack Grammar13мин
Unit 4.7: The Jack Analyzer10мин
Unit 4.8: The Jack Analyzer: Proposed Implementation20мин
Unit 4.9: Project 10: Building a Syntax Analyzer15мин
Unit 4.10: Perspective12мин
Reading1 материал для самостоятельного изучения
Module Overview (start here)10мин

Преподаватель

Shimon Schocken

Professor
Computer Science

О Hebrew University of Jerusalem

Ranked among the top academic and research institutions worldwide, the Hebrew University of Jerusalem is Israel's leading university and premier research institution. Serving 23,000 students from 70 countries, the Hebrew University produces a third of Israel’s civilian research and is ranked 12th worldwide in biotechnology patent filings and commercial development. The Hebrew University was founded in 1918 by visionaries including Albert Einstein, Sigmund Freud, Martin Buber and Chaim Weizmann. It is located on three campuses in Jerusalem and a fourth in Rehovot. Visit the website at http://new.huji.ac.il/en. Join our online learners community at https://www.facebook.com/groups/hujimooc/. ...

Часто задаваемые вопросы

  • Once you enroll for a Certificate, you’ll have access to all videos, quizzes, and programming assignments (if applicable). Peer review assignments can only be submitted and reviewed once your session has begun. If you choose to explore the course without purchasing, you may not be able to access certain assignments.

  • When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile. If you only want to read and view the course content, you can audit the course for free.

  • Nand to Tetris Part I and Nand to Tetris Part II are two separate and stand alone courses. Although it is recommended to take Part I before taking Part II, you can take any of these courses, in any order that suites you.

  • The only requirement is programming ability at the level acquired in typical introduction to computer science courses.

  • We expect learners to submit assignments in any version of Java, or Python. We will assume that you have basic programming ability in these languages, including a basic ability to understand and write simple object-based programs.

  • The course consists of 6 projects (programming assignments), numbered 7, 8, 9, 10, 11, 12, and an optional project, numbered 4. In order to pass the course you must submit at least 5 projects out of projects 7, 8, 9, 10, 11, and 12. (The project numbering scheme maintains consistency with the project numbers in the Nand to Tetris Part I course)

Остались вопросы? Посетите Центр поддержки учащихся.