Difference between revisions of "Programming Languages and Compilers"

From Marek Běhálek Wiki
Jump to navigation Jump to search
(Created page with "<translate> == Basic introduction == The course introduces the functional style of programming. It covers basic properties of the functional programming like: the side effec...")
 
 
(30 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
== Basic introduction ==  
 
== Basic introduction ==  
  
The course introduces the functional style of programming. It covers basic properties of the functional programming like: the side effect-free programming, functions as first-class values, high-order functions, recursion, pattern matching, or function closures. Also, course introduces selected data structures like a list and a tree and a functional style of working with these structures. As a programming language, Haskell will be used. It is a pure functional, statically typed, lazy evaluated language.  
+
Students get an overview of the area of programming, main programming paradigms (imperative, functional, logic) and their typical representatives. They also get some theoretical body of knowledge and practical experience of compiling methods, especially concentrated to the source code analysis and intermediate code synthesis phases. Students develop practical abilities to use compiler generators like JavaCC.
  
 
===Subject aims expressed by acquired skills and competences===  
 
===Subject aims expressed by acquired skills and competences===  
 
Students get an overview of the area of programming, main programming paradigms (imperative, functional, logic) and their typical representatives. They also get some theoretical body of knowledge and practical experience of compiling methods, especially concentrated to the source code analysis and intermediate code synthesis phases. Students develop practical abilities to use compiler generators like JavaCC.
 
  
 
After this lectures student should be able to effectively implement analyzers of a structured text data or of simple languages. Also they should understand concepts and constructions common for today's programming languages.  
 
After this lectures student should be able to effectively implement analyzers of a structured text data or of simple languages. Also they should understand concepts and constructions common for today's programming languages.  
  
 
===Recommended literature===  
 
===Recommended literature===  
 +
 
</translate>
 
</translate>
 
Torben Mogensen: Basics of Compiler Design - freely available at http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/
 
Torben Mogensen: Basics of Compiler Design - freely available at http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/
Line 20: Line 19:
 
<translate>
 
<translate>
 
===Way of continuous check of knowledge in the course of semester===  
 
===Way of continuous check of knowledge in the course of semester===  
During the exercises, students will be programming assigned tasks. The results of these tasks will be the crucial part of the final evaluation. Additionally, two smaller projects will be given.  
+
 
 +
Evaluation compose from two parts. During the exercise, students will be programing assigned tasks (40 points). Remaining points can be obtained for a project – a compiler that will be continuously implemented during the semester (60 points).  
  
 
== Software ==
 
== Software ==
Line 33: Line 33:
 
</translate>
 
</translate>
  
[http://linedu.vsb.cz/~beh01/wiki_data/FPR_uvod.pdf Úvod do FPR] [http://linedu.vsb.cz/~beh01/wiki_data/FPR_introduction.pdf Introduction to FPR]
+
[http://linedu.vsb.cz/~beh01/wiki_data/PLC_uvod.pdf Úvod do PLC] [http://linedu.vsb.cz/~beh01/wiki_data/PLC_introduction.pdf Introduction to PLC]
 +
 
 +
[http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf Programming Languages and Compilers]
 +
 
 +
[http://linedu.vsb.cz/~beh01/wiki_data/PLC_ANTLR.pdf ANTLR Tutorial]
 +
[http://linedu.vsb.cz/~beh01/wiki_data/antlr_tutorial.zip ANTLR Tutorial - complementary source codes]
 +
 
 +
[http://linedu.vsb.cz/~beh01/wiki_data/PLC_advanced_topics.pdf Advanced Topics]
  
 
<translate>
 
<translate>
 
Schedule:
 
Schedule:
 
</translate>
 
</translate>
* Lecture 1: [http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf#page=1 Beginning] - [http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf#page=36 Page 34] (2 hours)
+
* Lecture 1: [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=1 Beginning] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=30 Page 28]  
 +
* Lecture 2: [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=31 Page 29] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=57 Page 55] 
 +
* Lecture 3: [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=58 Page 56] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=68 Page 66] 
 +
* Lecture 4: [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=69 Page 68] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=80 Page 78]
 +
* Lecture 5: [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=81 Page 80] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=91 Page 89]
 +
* Lecture 6: [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=92 Page 90] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=99 Page 97][http://linedu.vsb.cz/~beh01/wiki_data/PLC_ANTLR.pdf#page=1 ANTLR Beginning] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_ANTLR.pdf#page=12 ANTLR Page 10]
 +
* Lecture 7: [http://linedu.vsb.cz/~beh01/wiki_data/PLC_ANTLR.pdf#page=13 ANTLR Page 11] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_ANTLR.pdf#page=23 ANTLR Page 21]
 
<translate>
 
<translate>
  
Line 45: Line 58:
 
{{anchor|laboratories}}
 
{{anchor|laboratories}}
 
<translate>
 
<translate>
* [[FP_Laboratory_1 | Laboratory 1]]
+
* [[PLC_Laboratory_1 | Laboratory 1]]
 +
* [[PLC_Laboratory_2 | Laboratory 2]]
 +
* [[PLC_Laboratory_3 | Laboratory 3]]
 +
* [[PLC_Laboratory_4 | Laboratory 4]]
 +
* [[PLC_Laboratory_5 | Laboratory 5]]
 +
* [[PLC_Laboratory_6 | Laboratory 6]]
 +
* [[PLC_Laboratory_7 | Laboratory 7]]
 +
* [[PLC_Laboratory_8 | Laboratory 8]]
 +
* [[PLC_Laboratory_9 | Laboratory 9]]
 +
* [[PLC_Laboratory_10 | Laboratory 10]]
 +
* Project's evalution
 +
 
 +
== Project==
 +
 
 +
* [[PLC_Project | Project's definition]]
  
== Homework ==
 
 
== Combine study ==  
 
== Combine study ==  
 
=== Tutorial 1 ===  
 
=== Tutorial 1 ===  
 +
* Presentation [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=1 Beginning] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=57 Page 55]
 +
* [[PLC_Laboratory_1 | Laboratory 1]]
 +
* [[PLC_Laboratory_2 | Laboratory 2]]
 +
 
=== Tutorial 2 ===  
 
=== Tutorial 2 ===  
 +
 +
* Presentation [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=58 Page 56] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=70 Page 68]
 +
* Activity (10 points) - for solution of [[PLC_Laboratory_1 | Laboratory 1]]
 +
* [[PLC_Laboratory_3 | Laboratory 3]]
 +
* [[PLC_Laboratory_4 | Laboratory 4]]
 +
 
=== Tutorial 3 ===  
 
=== Tutorial 3 ===  
 +
* Presentation [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=71 Page 69] - [http://linedu.vsb.cz/~beh01/wiki_data/PLC_Presentation.pdf#page=97 Page 95]
 +
* Activity (20 points) - written test on FIRST and FOLLOW.
 +
* [[PLC_Laboratory_5 | Laboratory 5]]
 +
* [[PLC_Laboratory_6 | Laboratory 6]]
 +
 
=== Tutorial 4 ===  
 
=== Tutorial 4 ===  
 +
 +
* [http://linedu.vsb.cz/~beh01/wiki_data/PLC_ANTLR.pdf ANTLR Tutorial]
 +
* [http://linedu.vsb.cz/~beh01/wiki_data/antlr_tutorial.zip ANTLR Tutorial - complementary source codes]
 +
* [[PLC_Laboratory_7 | Laboratory 7]]
 +
* Activity (10 points) - written test on LL1 grammars.
 +
* Guidelines to project - [[PLC_Project | Project's description]].
 +
 
=== Tutorial 5 ===  
 
=== Tutorial 5 ===  
 +
* [http://linedu.vsb.cz/~beh01/wiki_data/PLC_advanced_topics.pdf Advanced Topics]
 +
* [[PLC_Laboratory_8 | Laboratory 8]]
 +
* [[PLC_Laboratory_9 | Laboratory 9]]
 +
* [[PLC_Laboratory_10 | Laboratory 10]]
 +
* You can ask about the project, if you already solve it, it will be evaluated.
 
</translate>
 
</translate>

Latest revision as of 08:24, 17 April 2024

Basic introduction

Students get an overview of the area of programming, main programming paradigms (imperative, functional, logic) and their typical representatives. They also get some theoretical body of knowledge and practical experience of compiling methods, especially concentrated to the source code analysis and intermediate code synthesis phases. Students develop practical abilities to use compiler generators like JavaCC.

Subject aims expressed by acquired skills and competences

After this lectures student should be able to effectively implement analyzers of a structured text data or of simple languages. Also they should understand concepts and constructions common for today's programming languages.

Recommended literature

Torben Mogensen: Basics of Compiler Design - freely available at http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/

Aho, A. V., Lam M.S., Sethi, R., Ullman, J. D.: Compilers. Principles, Techniques, and Tools. Addison Wesley; 2nd edition (September 10, 2006). ISBN 0321486811.7

Pierce B.C.: Types and Programming Languages, MIT Press, 2002, ISBN: 9780262162098.

Way of continuous check of knowledge in the course of semester

Evaluation compose from two parts. During the exercise, students will be programing assigned tasks (40 points). Remaining points can be obtained for a project – a compiler that will be continuously implemented during the semester (60 points).

Software

In our lectures, we will be using...

Presentations

Presentations used in our lectures:

Úvod do PLC Introduction to PLC

Programming Languages and Compilers

ANTLR Tutorial ANTLR Tutorial - complementary source codes

Advanced Topics

Schedule:

Laboratories

Project

Combine study

Tutorial 1

Tutorial 2

Tutorial 3

Tutorial 4

Tutorial 5