(実施回/ Week)
|
(内容/ Contents)
|
(授業時間外の学習/ Assignments)
|
(実施回/ Week)
1
|
(内容/ Contents)
Introduction to this class: (1) Administrative matters (2) How computers are constructed from what? (3) Overview of Hardware Description Language (HDL)
|
(授業時間外の学習/ Assignments)
Project 0 (be familiar with how to use HDL and simulator)
|
(実施回/ Week)
2
|
(内容/ Contents)
Boolean logic: Designing a set of elementary logic gates from primitive And gates; Implementing the gates in HDL. Furthermore, how to use hardware simulator is shown.
|
(授業時間外の学習/ Assignments)
Project 1
|
(実施回/ Week)
3
|
(内容/ Contents)
Combinatorial logic: using the logic gates built in week 2 to design and implement a family of binary adders, culminating in the construction of a simple ALU (Arithmetic-Logic Unit).
|
(授業時間外の学習/ Assignments)
Project 2
|
(実施回/ Week)
4
|
(内容/ Contents)
Sequential logic: using the logic gates built in week 1 to design and implement a memory hierarchy, from elementary flip-flop gates to registers and RAM units of arbitrary sizes.
|
(授業時間外の学習/ Assignments)
Project 3
|
(実施回/ Week)
5
|
(内容/ Contents)
Machine language: introducing an instruction set, in both binary and assembly (symbolic) versions; Writing some low-level assembly programs and running them on a supplied CPU emulator.
|
(授業時間外の学習/ Assignments)
Project 4
|
(実施回/ Week)
6
|
(内容/ Contents)
Computer architecture: Integrating the chip-sets built in weeks 1-4 into a computer platform capable of running programs written in the machine language presented in week 5.
|
(授業時間外の学習/ Assignments)
Project 5
|
(実施回/ Week)
7
|
(内容/ Contents)
Assembler: Basic language translation techniques: parsing, symbol table, macro-assembly; Building an assembler for the assembly language presented in week 5.
|
(授業時間外の学習/ Assignments)
Project 6
|
(実施回/ Week)
8
|
(内容/ Contents)
Virtual machine I: The role of virtual machines in modern software architectures like Java and .NET; Introduction of a typical VM language, focusing on stack-based arithmetic, logical, and memory access operations; Implementing part I of a VM translator that translates from the VM language into the assembly language presented in week 5.
|
(授業時間外の学習/ Assignments)
Project 7
|
(実施回/ Week)
9
|
(内容/ Contents)
Virtual machine II: Continued discussion of the VM abstraction and implementation, focusing on stack-based flow-of-control and subroutine call-and-return techniques; Extending the VM translator from week 8 into a complete VM implementation that serves as the back-end component of the compiler built later in the course.
|
(授業時間外の学習/ Assignments)
Project 8
|
(実施回/ Week)
10
|
(内容/ Contents)
High Level Language: Introducing Jack, a simple high-level object-based language with a Java- like syntax; Discussing various trade-offs related to the language design and implementation; Using Jack to write a simple interactive game and running it on the computer built in weeks 2-6. This project makes use of the compiler and operating systems built in the remainder of the course.
|
(授業時間外の学習/ Assignments)
Project 9
|
(実施回/ Week)
11
|
(内容/ Contents)
Compiler I: Context-free grammars and recursive parsing algorithms; Building a syntax analyzer (tokenizer and parser) for the jack language; The syntax analyzer will generate XML code reflecting the structure of the translated program.
|
(授業時間外の学習/ Assignments)
Project 10
|
(実施回/ Week)
12
|
(内容/ Contents)
Compiler II: Code generation, low-level handling of arrays and objects; Morphing the syntax analyzer built in week 10 into a full-scale compiler; This is done by replacing the routines that write passive XML with routines that generate executable VM code for the stack machine presented in weeks 8-9.
|
(授業時間外の学習/ Assignments)
Project 11
|
(実施回/ Week)
13
|
(内容/ Contents)
Operating system I: Discussion of OS/hardware and OS/software design trade-offs, and time/space efficiency considerations; Design and implementation of some classical arithmetic and geometric algorithms that come to play in the implementation of our OS, as well as classical mathematical, memory management, string processing, and I/O handling algorithms, needed for completing the OS implementation.
|
(授業時間外の学習/ Assignments)
Review of the talk
|
(実施回/ Week)
14
|
(内容/ Contents)
Operating system II: Continued discussion of OS/hardware and OS/software design trade-offs, and time/space efficiency considerations; Design and implementation of some classical arithmetic and geometric algorithms that come to play in the implementation of our OS, as well as classical mathematical, memory management, string processing, and I/O handling algorithms, needed for completing the OS implementation.
|
(授業時間外の学習/ Assignments)
Project 12
|
(実施回/ Week)
15
|
(内容/ Contents)
Summary of this lecture
|
(授業時間外の学習/ Assignments)
Review of this lecture
|