20410427 - IN490 - PROGRAMMING LANGUAGES

Introduce the main concepts of formal language theory and their application to the classification of programming languages. Introduce the main techniques for the syntactic analysis of programming languages. Learn to recognize the structure of a programming language and the techniques to implement its abstract machine. Study the object-oriented paradigm and another non-imperative paradigm.

Curriculum

teacher profile | teaching materials

Programme

The objective of Linguaggi di Programmazione course is to introduce main formal language theory concepts and results as well as their application for programming language classification.
Most relevant approaches for syntactic analysis of programming languages are introduced. Learning how to recognize the structure of a programming language and the implementation techniques for the abrstract machine.
Understanding the Object Oriented paradigm together with other non imperative approaches.


Core Documentation

[1] Maurizio Gabbrielli, Simone Martini,Programming Languages - Principles and paradigms, 2/ed. McGraw-Hill, (2011).
[2] Dean Wampler, Alex Payne, Programming Scala: Scalability = Functional Programming + Objects, 2 edizione. O’Reilly Media, (2014).
[3] David Parsons, Foundational Java Key Elements and Practical Programming. Springer- Verlag, (2012).
Course Slides

Reference Bibliography

[4] Kip R Irvine, Assembly Language for X86 Processors. Pearson, (2015). [5] Bruce Tate, Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages Pragmatic Bookshelf . (2010). [6] Daniel P. Friedman, Mitchell Wand, Essentials of Programming Languages. MIT Press, (2008).

Type of delivery of the course

Lecture attendance is strongly suggested. There will also be seminars, simulations, lab sessions and exercise solving sessions

Type of evaluation

Evaluation is based on a written exam plus the implementation of a software project.

teacher profile | teaching materials

Programme

The objective of Linguaggi di Programmazione course is to introduce main formal language theory concepts and results as well as their application for programming language classification.
Most relevant approaches for syntactic analysis of programming languages are introduced. Learning how to recognize the structure of a programming language and the implementation techniques for the abrstract machine.
Understanding the Object Oriented paradigm together with other non imperative approaches.


Core Documentation

[1] Maurizio Gabbrielli, Simone Martini,Programming Languages - Principles and paradigms, 2/ed. McGraw-Hill, (2011).
[2] Dean Wampler, Alex Payne, Programming Scala: Scalability = Functional Programming + Objects, 2 edizione. O’Reilly Media, (2014).
[3] David Parsons, Foundational Java Key Elements and Practical Programming. Springer- Verlag, (2012).
Course Slides

Reference Bibliography

[4] Kip R Irvine, Assembly Language for X86 Processors. Pearson, (2015). [5] Bruce Tate, Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages Pragmatic Bookshelf . (2010). [6] Daniel P. Friedman, Mitchell Wand, Essentials of Programming Languages. MIT Press, (2008).

Type of delivery of the course

Lecture attendance is strongly suggested. There will also be seminars, simulations, lab sessions and exercise solving sessions

Type of evaluation

Evaluation is based on a written exam plus the implementation of a software project.

teacher profile | teaching materials

Programme

The objective of Linguaggi di Programmazione course is to introduce main formal language theory concepts and results as well as their application for programming language classification.
Most relevant approaches for syntactic analysis of programming languages are introduced. Learning how to recognize the structure of a programming language and the implementation techniques for the abrstract machine.
Understanding the Object Oriented paradigm together with other non imperative approaches.


Core Documentation

[1] Maurizio Gabbrielli, Simone Martini,Programming Languages - Principles and paradigms, 2/ed. McGraw-Hill, (2011).
[2] Dean Wampler, Alex Payne, Programming Scala: Scalability = Functional Programming + Objects, 2 edizione. O’Reilly Media, (2014).
[3] David Parsons, Foundational Java Key Elements and Practical Programming. Springer- Verlag, (2012).
Course Slides

Reference Bibliography

[4] Kip R Irvine, Assembly Language for X86 Processors. Pearson, (2015). [5] Bruce Tate, Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages Pragmatic Bookshelf . (2010). [6] Daniel P. Friedman, Mitchell Wand, Essentials of Programming Languages. MIT Press, (2008).

Type of delivery of the course

Lecture attendance is strongly suggested. There will also be seminars, simulations, lab sessions and exercise solving sessions

Type of evaluation

Evaluation is based on a written exam plus the implementation of a software project.