シラバス
※学期中に内容が変更になることがあります。

2020年度


31696501 

△Computation Structure(E)
Computation Structure (E)
2単位/Unit  秋学期/Fall  インターネット/Internet  講義/Lecture

  芳賀 博英

<概要/Course Content Summary>

This lecture is a "Internet Lecture." You need not to attend the classroom. All contents of the lecture will be provided on the web page. You can watch at anytime and anyplace. You can watch the lecture video as many times as you want. URL of accessing the web page will be delivered after the start of spring semester. In order to watch the lecture video, you need to install the latest "Adobe flash player"on your web browser and remove the popup block of it. Flash player can be downloaded freely from Adobe's website. 
 
This class is opened to both CS major and non-CS major students, the only prerequisite being a programming experience. All the computer science knowledge necessary for completing this course is given in the lectures, projects, and textbook. 
 
Prerequisites:This course and book are completely self-contained. The course consists of two parts, as follows: 
(1) Part I, which covers chapters 1-7 of textbook, deals with building the hardware platform of the computer system (from elementary logic gates to a complete, general-purpose computer). This part of the course requires no previous knowledge in computer science of programming. 
(2) Part II, which covers chapters 8-14 of textbook, deals with building the computer's software hierarchy (compiler, virtual machine, and operating system). This part requires basic programming skills in a language like Java or Python. Other languages can be used as well, e.g. C++, C#, Ruby, and Perl. 
 
If you wish to learn programming, you can find several good and freely-available courses in such places as Coursera(https://www.coursera.org/), edX(https://www.edx.org/), and Udacity(https://www.udacity.com/). We recommend visiting these sites and searching for "computer science" or "programming" courses. Select any one of the introductory courses that teach Java or Python, and take it. Make sure that you do the homework assignments - you can't learn programming without getting your hands dirty. 
 
Course overview: Simply speaking, the students can have an experience of building computer from scratch. The course objective is to integrate key notions from algorithms, computer architecture, operating systems, compilers, and software engineering in one unified framework. This will be done constructively, by building a general-purpose computer system from the ground up. In the process, we will explore many ideas and techniques used in the design of modern hardware and software systems, and discuss major trade-offs and future trends. Throughout this lecture, you will gain many cross-section views of the computing field, from the bare bone details of switching circuits to the high level abstraction of object-based software design. 
Methodology: This is mostly a hands-on course, evolving around building a series of hardware and software modules. Each module development task is accompanied by a design document, an API, an executable solution, a test script (illustrating what the module is supposed to do), and a detailed implementation plan (proposing how to build it). The projects are spread out evenly, so there will be no special pressure towards the semester’s end. Each lecture will start by reviewing the work that was done thus far, and giving guidelines on what to do next. 
Programming: Programming is an essential task in this lecture. Therefore, students are required to have a programming experience. It is compulsory. The hardware projects will be done in a simple Hardware Description 
Language (HDL) that can be learned in a few hours. The resulting chips (as well as the topmost computer-on- a-chip system) will be tested and simulated on a supplied hardware simulator, running on the student's computer. The software projects can be done in either Java or Python. 
Resources: All software tools, tutorials, template and test programs can be downloaded freely from 
the textbook authors' web site. The supplied software can run as is on either Mac/Linux or Windows. 
Style: Usually no longer than 1 hour talk will be given to the students. The rest of the lecture time is to engage homework (project).

<到達目標/Goals,Aims>

(1) Students can understand the basic concept of computation   
(2) Students can understand the abstraction level of computation   

<授業計画/Schedule>

(実施回/
Week)
(内容/
Contents)
(授業時間外の学習/
Assignments)
(実施回/ Week) (内容/ 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) (内容/ 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) (内容/ 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) (内容/ 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) (内容/ 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) (内容/ 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) (内容/ 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) (内容/ 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) (内容/ 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 

If there is no foreign student, this lecture will be provided in Japanese. Otherwise the instructor will speak in English.

<成績評価基準/Evaluation Criteria>

Written practice  50%  Understanding of the contents of lectures.  
Programming practice  50%  Understanding of the contents of lectures.  

 

<成績評価結果/Results of assessment>   成績評価の見方について/Notes for assessment

    

登録者数

成績評価(%)

評点
平均値

備考

A+ A B+ B C+ C F
21 85.7 14.3 0.0 0.0 0.0 0.0 0.0 0.0 4.4

<テキスト/Textbook>

Noam Nisan, Shimon Schocken , The Elements of Computing Systems :  Building a Modern Computer from First Principles .   (The MIT Press, 2005) .  ISBN:978-0262640688 

 

<参照URL/URL>

Authors' homepage. 
You can download several software tools to accomplish projects (homework). 

<備考/Remarks>

In order to finish your projects (homework), you are required to have your own PC. Furthermore, I would like to emphasize that programming experience is essential. Students who do not have a programming experience may be able to take this class. However, they should study programming by themselves. This lecture does not offer the programming training. 

 

お問合せは同志社大学 各学部・研究科事務室まで
 
Copyright(C) 2020 Doshisha University All Rights Reserved. 無断転載を禁止します。