Department of Information and Computing Sciences

Departement Informatica Onderwijs
Bachelor Informatica Informatiekunde Kunstmatige intelligentie Master Computing Science Game&Media Technology Artifical Intelligence Human Computer Interaction Business Informatics

Onderwijs Informatica en Informatiekunde

Vak-informatie Informatica en Informatiekunde

Talen en compilers

Website:website met extra informatie
Studiepunten:7.5 ECTS
Historie:Dit vak is de opvolger van Grammatica's en ontleden (INFOGONT). Je kunt maar een van beide vakken voor je examen opvoeren
Periode:periode 2 (week 46 t/m 5, d.w.z. 11-11-2019 t/m 31-1-2020; herkansing week 16)
Deelnemers:tot nu toe 25 inschrijvingen
Rooster:De officiële roosters staan ook in Osiris
college   di 9.00-10.4546-50 KBG-ATLAS Jurriaan Hage
do 13.15-15.0046-50 KBG-ATLAS
51 BOL-1.206
werkcollege groep 1 di 11.00-12.4546 BBG-161 Jurriaan Hage
Jip Wijnia
47 BBG-161
48 BBG-061
49 BBG-201
50 RUPPERT-002
2 BBG-201
3 BBG-201
4 BBG-201
do 15.15-17.0046-51 BBG-214
2-4 BBG-214
groep 2 di 11.00-12.4546 BBG-061 Matthijs Vákár
Joris Dral
47 BBG-065
48 BBG-065
49 BBG-065
50 BOL-1.204
2 BBG-065
3 BBG-065
4 BBG-161
do 15.15-17.0046 BBG-065
47 BBG-061
48 BBG-065
49 BBG-061
50 BBG-165
51 BBG-083
2 BBG-161
3 BBG-161
4 BBG-065
groep 3 di 11.00-12.4546-49 BBG-219 Marco van de Weerthof
Niek Mulleners
50 BOL-1.022
2-4 BBG-219
do 15.15-17.0046 BBG-061
47 BBG-065
48 BBG-165
49 BBG-065
50 BBG-061
51 BBG-165
2 BBG-065
3 BBG-165
4 BBG-079
week: 51di 17-12-201911.00-13.00 uurzaal: EDUC-BETA
week: 5di 28-1-202011.00-13.00 uurzaal: OLYMPOS-HAL3
Nota bene:Er is geen recente vakbeschrijving beschikbaar.
Onderstaande tekst is een oude vakbeschrijving uit collegejaar 2018/2019

Note: this course is taught in English.

Many programs take a sequence of symbols as input. These sequences almost always have some structure. Examples of such sequences of symbols are: programs in any programming language; a packet of information sent over the Internet; or information written into a file by a program (with the intention of that information being later re-read).

The structure of those sequences is described with the help of grammars (grammatica's). From these descriptions one can automatically generate programs that recognise the corresponding structure, known as parsers (ontleders). This process of recognition is an important component of many programs, for example, a translator from one data type (say, a source code file) into another (the internal structures used by the compiler). The description of the process of translation makes use of a grammar formalism. By using some specific classes of grammars, we can not only express the structure of the sequence, but also ensure that the structure is easy to recognise; for example, that it can be recognised in linear time.

Grammars play a central role in Computer Science, thus this course provides an important conceptual support for the rest of your studies. In this course you learn to design grammars, how to build parsers from those, and how to further use the result of those parser. You will see how to generate code for a subset of the C# programming language. More precisely, after successful completion of this course you will be able to:

  • describe structures (formulas, terms, ...) using context-free and regular grammars
  • recognize or parse sequences of symbols into structures
  • analyze grammars to see whether several properties hold
  • put together different components such as parsers, analyzers, and code generators
  • apply these techniques in the construction of different kinds of programs
  • relate grammar formalisms to different sorts of automata
  • understand why some programs may or may not be described using context-free and regular grammars

In this course we use Haskell to describe the different components. Knowledge of this language at the level of the Functioneel programmeren course is thus required.

Literatuur:Kan veranderen!
  • Slides from the lectures
  • Lecture Notes
  • Additional material: Languages and Machines by Thomas A. Sudkamp (chapters 3 to 7)
Werkvorm:The load per week is:
  • 2 × 2 h. lectures, on Tuesdays and Thursdays
  • 1 × 2 h. practicals, on Tuesdays
  • 1 × 2 h. werkcollege, on Thursdays
Attendance is not strictly mandatory (albeit recommended).
Toetsvorm:The final grade depends on the two exams and three practical assignments.
  • The theory grade is T = 0.4 × grade of mid-term + 0.6 × grade of final exam. You need T >= 5.0 to pass the course.
  • The practical grade is P = 0.2 × first practical + 0.3 × second practical + 0.5 × third practical. You need P >= 5.0 to pass the course.
The final grade is computed as F = 0.5 × T + 0.5 × P. If you have done all the practicals and at least one exam, then the final result of the course is:
  • Passed with grade F (rounded to half points) if F >= 5.5, T >= 5.0, and P >= 5.0.
  • Not passed with grade 5.0 if F >= 5.5, but T < 5.0 or P < 5.0
  • Not passed with grade F otherwise.
If you have not submitted one of the practical assignments, or have not taken any of the exams, then the final result is:
  • AANV if F >= 4.0
  • NVD otherwise
Results from previous years are not transported to this year.
Inspanningsverplichting voor aanvullende toets:Om aan de aanvullende toets te mogen meedoen moet de oorspronkelijke uitslag minstens 4 zijn.