Theory of Programming Languages

Spring 2018

Division of Computer Science and Engineering (Junior)

 

Instructor:

Prof. LEE, Moonkun Ph.D.

Office : College of Engineering, Bldg #7, Rm #624

e-mail : moonkun@chobuk.ac.kr

Class Room:

College of Engineering, Bldg #7, Rm #302

Lecture Hours:

Wed, 12:00pm12:50pm; Fri, 11:00am12:50pm

Office Hours:

Approx. 30 minutes after class

 

Description: 

The purpose of this class is to understand the basic principle of programming languages and practice the priciple with the languages on operating systems. The principle includes the definition, history, basic concepts, and the category of the languages, and the practice does the acquisition of the basic knowledge of the languages and constructing codes with the languages on Unix/Linux, as follows:

 

        • Procedural languages: Pascal, C
        • Functional languages: Lisp, Scheme, ML
        • Object-oriented languages: Smalltalk, C++
        • Logic languages: Prolog
        • Parallel/Distributive languages: CSP, Ada (if time is available ...)

 

1) The first part of the class: We are learning, with respect to procedural languages, the basic principle of the languages, such as, its design principle, grammar, basic semantics, data types, expression-statements, procedure-environment, etc.

 

2) The second half of the class: We are leaning, with respect to functional languages, abstraction (in the procedure and data perspective), modularity, objects/state, meta-linguistic abstraction, etc.

 

Lab/homework: We will practice the basic theory of the languages with the over languages on Unix/Linux environment.

 

그림1.png


 

 

Prerequisite: 

This class is one of the most fundamental classes in the area of computer science and engineering, both theoretically and practically. Therefore your hard effort and sincere enthusiasm are definitely required in order to make this course valuable and practical. To make it possible, there are two prerequisite knowledge on the following two subjects: 


1) the basic understanding and coding skill of general programming languages, such as, C, and 

2) of operating systems, such as Unix or Linux, for coding. 


If you don't satisfy the prerequisite, you have to talk to me in person to discuss your qualification to take this class.

 

Recommended Textbooks:

) Kenneth C. Louden, Programming Languages: Principles and Practice, 2nd Edition, Brooks & Cole, 2003.

) Jeffrey D. Ullman. Elements of ML Programming. Prentice Hall, 1997. (교보문고)

Reference Books:

) Ravi Sethi. Programming Languages: Concepts & Constructs. Addison Wesley, 1996. (홍릉과학출판사)

) H. Abelson and G. J. Sussman with J. Sussman. Structure and Interpretation of Computer Programs. The MIT Press, 1996. (교보문고)

) Samuel N. Kamin. Programming Languages: An Interpreter-Based Approach. Addison Wesley, 1990. (교보문고, 홍릉출판사)

) 이문근, 정형기법, 전북대학교출판원, 2017.

 

Lecture Notes: 

The lecture notes for the class will be posted in the lecture page at my homepage: http://moon.jbnu.ac.kr . Weekly lecture materials will be there at the end of the monday of each week. You are responsible for your own hardcopy of the notes.

 

Schedule:

Weeks

Topics

Homework

Project

1

Overview, Classification

 

 

2

Functional Language : ML (1)

 

 

3

Functional Language : ML (2)

 

C/C++

4

Functional Language : ML (3)

 

 

5

Functional Language : ML (4)

 

 

6

Functional Language : ML (5)

 

 

7

Functional Language : ML (6)

 

ML

8

Mid-term Exam

 

 

9

Scheme (1)

 

 

10

Scheme (2)

 

 

11

Object-Oriented Language : Smalltalk (1)

 

 

12

Object-Oriented Language : Smalltalk (2)

 

 

13

Logic languages : Prolog (1)

 

 

14

Logic languages : Prolog (2)

 

 

15

Semantics

 

 

16

Final Exam

 

 

 

Grading:

 

%

Contents

Criteria

Homework

20

Coding works for each languages

 

Exam

40

Mid-term (20%): Concepts, definitions, problem solving, coding, etc.

Final (20%): Same as the above

Generality

Project

40

Project 1 (20%): C/C++ coding in the middle size

Project 2 (20%): ML project in the middle size

Design

Documentation

Executability