Programming Language Theory

MORI, Takuo
  Elective  2 credits
【Information and Electronic Engineering・1st semester】
19-1-0466-2349

1.
Outline
In this course, students learn each programming paradigm and its computational model, synth of programming languages, semantics of programming languages.

Especially, students learn the operational semantics of the C language which is one of the mostly used and the most practical languages, and the Java which is an object-oriented language, through virtual machines as a computational model, and intermediate languages executed on the virtual machines.

Students also learn the summaries of functional languages of which computational model is the lambda calculus, logic programming languages which are focused on because of Artificial Intelligence (AI), interpreter languages which are used in string processes

Students acquire skills related to the diplomatic policy, DP4C and DP4M


Students acquire skills related to the diplomatic policy, DP4C and DP4M.

<Comments>
In this course, students learn each programming paradigm and its computational model, synth of programming languages and semantics of programming languages.

Especially, students learn the operational semantics of the C language which is one of the mostly used and the most practical languages, and the Java which is an object-oriented language, through virtual machines as a computational model, and intermediate languages executed on the virtual machines.

Students also learn the summaries of functional languages of which computational model is the lambda calculus. Logic programming languages which are focused on because of Artificial Intelligence (AI), interpreter languages which are used in string processes

Students acquire skills related to the diplomatic policy, DP4C and DP4M
2.
Objectives
The goal of this class is that students master the following abilities;

Students understand the features of representative computational models, programming paradigm and programming languages and can explain those described above.

Students can classify programming languages from the viewpoint of translating source code to machine languages,
choose appropriate a programming language according to the purpose of use.

Students can explain the relation between notations used in defining programming languages and the context-free grammar, can show the derivation process by a context-free grammar by using a syntax tree and can explain how to remove the ambiguity from a context-free grammar.

Students can explain the behavior of the Random Access Machine whose computational model is a Von Neumann computer.

Students can explain how to incoke recursive functions/methods on a stack machine.

Students can explain the feature of procedural languages, such as C, and can explain how to work those executable codes, can explain those operational semantics of those.

Students can explain the feature of object-oriented languages, such as JAVA, and can explain how to work those executable codes, can explain those operational semantics of those.

<Comments>
The goal of this class is that students master the following abilities;

Students understand the features of representative computational models, programming paradigm and programming languages and can explain those described above.

Students can classify programming languages from the viewpoint of translating source code to machine languages,
choose appropriate a programming language according to the purpose of use.

Students can explain the relation between notations used in defining programming languages and the context-free grammar, can show the derivation process by a context-free grammar by using a syntax tree and can explain how to remove the ambiguity from a context-free grammar.

Students can explain the behavior of the Random Access Machine whose computational model is a Von Neumann computer.

Students can explain how to invoke recursive functions/methods on a stack machine.

Students can explain the feature of procedural languages, such as C, and can explain how to work those executable codes, can explain those operational semantics of those.

Students can explain the feature of object-oriented languages, such as JAVA, and can explain how to work those executable codes, can explain those operational semantics of those.
3.
Grading Policy
Grading policy:
Midterm report(50%), Examination(50%).

The way of feedback;
Answers for questions or feedback for the contents of class, worksheets, and examination will be given in a class, through LMS or in office hours.

<Comments>
訂正無し

4.
Textbook and Reference
Textbook: 大山口通夫,五味 弘共著、プログラミング言語論、コロナ社、ISBN-13: 978-4339027044
Teaching materials: Published through LMS.

<Comments>
訂正無し
5.
Requirements (Assignments)
Before a class, students are required to prepare the class by using materials, such as slides, handouts and
related materials which will be published on the LMS, which requires about 1.5 hours.

In a class, students should concentrate on, not to take notes, but to understand the contents of class,
to solve exercises in a class,
because most of the materials were published on the LMS before the class and students can bring them with
tablets or smart phones.

After a class, students are required to review the materials used in the class or quizzes on the LMS, which requires about 1.5 hours.

<Comments>
Before the class, students are required to prepare by using materials, such as slides, handouts and
related materials which will be published on the LMS, which requires about 1.5 hours.

In the class, students should not concentrate on taking notes, but on understanding the contents. And concentrate on solving exercises in the class.
Because most of the materials are published on the LMS before the class and students can bring them with
tablets or smart phones.

After the class, students are required to review the materials used in the class or quizzes on the LMS, which requires about 1.5 hours.

<Comments>
Before a class, students are required to prepare the class by using materials, such as slides, handouts and
related materials which will be published on the LMS, which requires about 1.5 hours.

In a class, students should concentrate on, not to take notes, but to understand the contents of class,
to solve exercises in a class,
because most of the materials were published on the LMS before the class and students can bring them with
tablets or smart phones.

After a class, students are required to review the materials used in the class or quizzes on the LMS, which requires about 1.5 hours.

<Comments>
Before the class, students are required to prepare by using materials, such as slides, handouts and
related materials which will be published on the LMS, which requires about 1.5 hours.

In the class, students should not concentrate on taking notes, but on understanding the contents. And concentrate on solving exercises in the class.
Because most of the materials are published on the LMS before the class and students can bring them with
tablets or smart phones.

After the class, students are required to review the materials used in the class or quizzes on the LMS, which requires about 1.5 hours.

6.
Note
Students can hardly earn credits not submitting the mid-term report. Thus, it is expected students to observe the deadline.
As for the self-learning support students are expected to utilize materials, such as slides, handouts and quizzes on the LMS

Before taking this course, students should take the following courses;
Programming 1, Programming 2,

At the same semester with this course, students should take the following courses;
Data structure and Algorithms, Computer Science Programming 1

After taking this course, students should take computer architecture, information security.
Computer Science Programming 2, Introduction to the theory of automata and computation, Computer Architecture

If a student has a question on quizzes or mid-term report or examinations, ask the question in the class or in office hours or through LMS.

This course is a required course, and relates to the mid term 4-4 of the attaining targets for learning and educating, in the JABEE program.

<Comments>
Students can hardly earn credits not submitting the mid-term report. Thus, it is expected students to observe the deadline.
As for the self-learning support students are expected to utilize materials, such as slides, handouts and quizzes on the LMS

Before taking this course, students should take the following courses;
Programming 1, Programming 2,

At the same semester with this course, students should take the following courses;
Data structure and Algorithms, Computer Science Programming 1

After taking this course, students should take computer architecture, information security,
Computer Science Programming 2, Introduction to the theory of automata and computation, and Computer Architecture

If a student has a question on quizzes or mid-term report or examinations, ask the question in the class or during the day or through LMS.

This course is a required course, and relates to the mid term 4-4 of the attaining targets for learning and educating, in the JABEE program.
7.
Schedule
1. Features and classification of programming languages 1, low level languages and high level languages, compiler language, interpreter language, intermediate language

<Comments>
訂正無し


2. Features and classification of programming languages 2, computational models, Turing machine, Random Access Machine and imperative languages

<Comments>
訂正無し


3. Features and classification of programming languages 3, lambda expressions, lambda calculus and functional programming languages

<Comments>
訂正無し

4. Features and classification of programming languages 4, prolog as a logic programming language, object-oriented languages and its computational model.

<Comments>
訂正無し


5. Notation techniques for programming languages, Backus Naur Form, Context-free grammar, the front-end and the back-end of compilers

<Comments>
訂正無し

6. Imperative programming languages 1, structured programming, data type

<Comments>
訂正無し


7. Imperative programming languages 2, procedures

<Comments>
訂正無し


8. Semantics of programming languages, operational semantics, the operational semantics of Random Access Machine(RAM)

<Comments>
訂正無し


9. Semantics of programming languages, the operational semantics of the C

<Comments>
訂正無し


10. The operational semantics of the small C, definition, invoking of functions, returning values from a function, pointer, array

<Comments>
訂正無し


11. Object-Oriented Programming languages 1

<Comments>
訂正無し


12. Object-Oriented Programming languages 2, interface, inheritance/composition/delegation

<Comments>
訂正無し


13. The operational semantics of a subset of Java1, non object-oriented functionality

<Comments>
訂正無し


14. The operational semantics of a subset of Java 2, object-oriented funcionality

<Comments>
訂正無し


15. Summary and examination

<Comments>
訂正無し


1.
Outline
In this course, students learn each programming paradigm and its computational model, synth of programming languages, semantics of programming languages.

Especially, students learn the operational semantics of the C language which is one of the mostly used and the most practical languages, and the Java which is an object-oriented language, through virtual machines as a computational model, and intermediate languages executed on the virtual machines.

Students also learn the summaries of functional languages of which computational model is the lambda calculus, logic programming languages which are focused on because of Artificial Intelligence (AI), interpreter languages which are used in string processes

Students acquire skills related to the diplomatic policy, DP4C and DP4M


Students acquire skills related to the diplomatic policy, DP4C and DP4M.

<Comments>
In this course, students learn each programming paradigm and its computational model, synth of programming languages and semantics of programming languages.

Especially, students learn the operational semantics of the C language which is one of the mostly used and the most practical languages, and the Java which is an object-oriented language, through virtual machines as a computational model, and intermediate languages executed on the virtual machines.

Students also learn the summaries of functional languages of which computational model is the lambda calculus. Logic programming languages which are focused on because of Artificial Intelligence (AI), interpreter languages which are used in string processes

Students acquire skills related to the diplomatic policy, DP4C and DP4M
2.
Objectives
The goal of this class is that students master the following abilities;

Students understand the features of representative computational models, programming paradigm and programming languages and can explain those described above.

Students can classify programming languages from the viewpoint of translating source code to machine languages,
choose appropriate a programming language according to the purpose of use.

Students can explain the relation between notations used in defining programming languages and the context-free grammar, can show the derivation process by a context-free grammar by using a syntax tree and can explain how to remove the ambiguity from a context-free grammar.

Students can explain the behavior of the Random Access Machine whose computational model is a Von Neumann computer.

Students can explain how to incoke recursive functions/methods on a stack machine.

Students can explain the feature of procedural languages, such as C, and can explain how to work those executable codes, can explain those operational semantics of those.

Students can explain the feature of object-oriented languages, such as JAVA, and can explain how to work those executable codes, can explain those operational semantics of those.

<Comments>
The goal of this class is that students master the following abilities;

Students understand the features of representative computational models, programming paradigm and programming languages and can explain those described above.

Students can classify programming languages from the viewpoint of translating source code to machine languages,
choose appropriate a programming language according to the purpose of use.

Students can explain the relation between notations used in defining programming languages and the context-free grammar, can show the derivation process by a context-free grammar by using a syntax tree and can explain how to remove the ambiguity from a context-free grammar.

Students can explain the behavior of the Random Access Machine whose computational model is a Von Neumann computer.

Students can explain how to invoke recursive functions/methods on a stack machine.

Students can explain the feature of procedural languages, such as C, and can explain how to work those executable codes, can explain those operational semantics of those.

Students can explain the feature of object-oriented languages, such as JAVA, and can explain how to work those executable codes, can explain those operational semantics of those.
3.
Grading Policy
Grading policy:
Midterm report(50%), Examination(50%).

The way of feedback;
Answers for questions or feedback for the contents of class, worksheets, and examination will be given in a class, through LMS or in office hours.

<Comments>
訂正無し

4.
Textbook and Reference
Textbook: 大山口通夫,五味 弘共著、プログラミング言語論、コロナ社、ISBN-13: 978-4339027044
Teaching materials: Published through LMS.

<Comments>
訂正無し
5.
Requirements (Assignments)
Before a class, students are required to prepare the class by using materials, such as slides, handouts and
related materials which will be published on the LMS, which requires about 1.5 hours.

In a class, students should concentrate on, not to take notes, but to understand the contents of class,
to solve exercises in a class,
because most of the materials were published on the LMS before the class and students can bring them with
tablets or smart phones.

After a class, students are required to review the materials used in the class or quizzes on the LMS, which requires about 1.5 hours.

<Comments>
Before the class, students are required to prepare by using materials, such as slides, handouts and
related materials which will be published on the LMS, which requires about 1.5 hours.

In the class, students should not concentrate on taking notes, but on understanding the contents. And concentrate on solving exercises in the class.
Because most of the materials are published on the LMS before the class and students can bring them with
tablets or smart phones.

After the class, students are required to review the materials used in the class or quizzes on the LMS, which requires about 1.5 hours.

<Comments>
Before a class, students are required to prepare the class by using materials, such as slides, handouts and
related materials which will be published on the LMS, which requires about 1.5 hours.

In a class, students should concentrate on, not to take notes, but to understand the contents of class,
to solve exercises in a class,
because most of the materials were published on the LMS before the class and students can bring them with
tablets or smart phones.

After a class, students are required to review the materials used in the class or quizzes on the LMS, which requires about 1.5 hours.

<Comments>
Before the class, students are required to prepare by using materials, such as slides, handouts and
related materials which will be published on the LMS, which requires about 1.5 hours.

In the class, students should not concentrate on taking notes, but on understanding the contents. And concentrate on solving exercises in the class.
Because most of the materials are published on the LMS before the class and students can bring them with
tablets or smart phones.

After the class, students are required to review the materials used in the class or quizzes on the LMS, which requires about 1.5 hours.

6.
Note
Students can hardly earn credits not submitting the mid-term report. Thus, it is expected students to observe the deadline.
As for the self-learning support students are expected to utilize materials, such as slides, handouts and quizzes on the LMS

Before taking this course, students should take the following courses;
Programming 1, Programming 2,

At the same semester with this course, students should take the following courses;
Data structure and Algorithms, Computer Science Programming 1

After taking this course, students should take computer architecture, information security.
Computer Science Programming 2, Introduction to the theory of automata and computation, Computer Architecture

If a student has a question on quizzes or mid-term report or examinations, ask the question in the class or in office hours or through LMS.

This course is a required course, and relates to the mid term 4-4 of the attaining targets for learning and educating, in the JABEE program.

<Comments>
Students can hardly earn credits not submitting the mid-term report. Thus, it is expected students to observe the deadline.
As for the self-learning support students are expected to utilize materials, such as slides, handouts and quizzes on the LMS

Before taking this course, students should take the following courses;
Programming 1, Programming 2,

At the same semester with this course, students should take the following courses;
Data structure and Algorithms, Computer Science Programming 1

After taking this course, students should take computer architecture, information security,
Computer Science Programming 2, Introduction to the theory of automata and computation, and Computer Architecture

If a student has a question on quizzes or mid-term report or examinations, ask the question in the class or during the day or through LMS.

This course is a required course, and relates to the mid term 4-4 of the attaining targets for learning and educating, in the JABEE program.
7.
Schedule
1. Features and classification of programming languages 1, low level languages and high level languages, compiler language, interpreter language, intermediate language

<Comments>
訂正無し


2. Features and classification of programming languages 2, computational models, Turing machine, Random Access Machine and imperative languages

<Comments>
訂正無し


3. Features and classification of programming languages 3, lambda expressions, lambda calculus and functional programming languages

<Comments>
訂正無し

4. Features and classification of programming languages 4, prolog as a logic programming language, object-oriented languages and its computational model.

<Comments>
訂正無し


5. Notation techniques for programming languages, Backus Naur Form, Context-free grammar, the front-end and the back-end of compilers

<Comments>
訂正無し

6. Imperative programming languages 1, structured programming, data type

<Comments>
訂正無し


7. Imperative programming languages 2, procedures

<Comments>
訂正無し


8. Semantics of programming languages, operational semantics, the operational semantics of Random Access Machine(RAM)

<Comments>
訂正無し


9. Semantics of programming languages, the operational semantics of the C

<Comments>
訂正無し


10. The operational semantics of the small C, definition, invoking of functions, returning values from a function, pointer, array

<Comments>
訂正無し


11. Object-Oriented Programming languages 1

<Comments>
訂正無し


12. Object-Oriented Programming languages 2, interface, inheritance/composition/delegation

<Comments>
訂正無し


13. The operational semantics of a subset of Java1, non object-oriented functionality

<Comments>
訂正無し


14. The operational semantics of a subset of Java 2, object-oriented funcionality

<Comments>
訂正無し


15. Summary and examination

<Comments>
訂正無し