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.
Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course)
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/.
- 5 stars
- 4 stars
来自BUILD A MODERN COMPUTER FROM FIRST PRINCIPLES: NAND TO TETRIS PART II (PROJECT-CENTERED COURSE)的热门评论
This is by far one of the best online-courses I have completed. Thumbs up, it was well worth my time and it will definitely help me on my never-ending journey of becoming a better software developer.
I'm a 13 year old 8th Grader from California. I loved this course and learned a lot! Thank you Mr.Schocken for putting together such a wonderful course! It was a thrill to finish the course finally!
Course materials and project assignment are well-organized, demanding but also motivating. I felt so lucky to have taken both of the courses and really enjoyed them! Thanks!
This is a lot harder than Part 1, and parts of a it were a bit tedious but the bulk of (writing the Jack compiler) was very good. I will be recommending it to friends.
Superb course. Great presentation and course material. Projects are challenging but fun at the same time. Highly recommend for all levels of software developers.
This is an excellent course giving good view of operating system, compiler and fitting the pieces together. Highly recommended
One of the best computer science courses I ever had. You start understand how actually things like heap, stack, etc. works.
Best ever computer science course I've taken. Though it takes me 7 months to complete both parts, it really worth it!
It was a bit superficial. Homework helped to practice the basics. I prefer more detailed and more deep lectures.
I feel that I reviewed more deeply a bunch of courses taught at my university . Thank you.
A fast-paced overview of compiler construction and the associated run time environment.
Absolutely amazing. I loved making my own programming language and building my own OS!
Thank you so much Shimon Schocken!!\n\nPart two was tough, but it was very helpful.
Understand computer is difficult, but this course can help you on this point.
After 2 years, i still didnt find something so interesting like this.
Excellent, challenging course. Learned way more than I expected!
This is one of the best classes I've ever taken bar none!
As great as the first part, although far more demanding.
Do I have to take Nand to Tetris Part I before taking Nand to Tetris Part II?
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.
How much computer science do I have to know before taking this course?
The only requirement is programming ability at the level acquired in typical introduction to computer science courses.
Which programming language do I have to use in order to complete the assignments in this course?
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.
How many assignments do I have to submit in order to pass the course?
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)