Credits
6
Types
- GRAU: Specialization compulsory (Computing)
- GCED: Elective
Requirements
- Corequisite: PROP
Department
CS
Teachers
Person in charge
- Gerard Escudero Bakx ( gerard.escudero@upc.edu )
Others
- Edelmira Pasarella Sanchez ( edelmira@cs.upc.edu )
- Jordi Delgado Pin ( jdelgado@cs.upc.edu )
- Jordi Petit Silvestre ( jpetit@cs.upc.edu )
Weekly hours
Theory
2
Problems
0
Laboratory
2
Guided learning
0
Autonomous learning
6
Competences
Effective oral and written communication
- G4.3 - To communicate clearly and efficiently in oral and written presentations about complex topics, becoming adapted to the situation, the type of audience and the communication goals, using the strategies and the adequate means. To analyse, value and respond adequately to the questions of the audience.
Information literacy
- G6.3 - To plan and use the necessary information for an academic essay (for example, the final project of the grade) using critical reflection about the used information resources. To manage information in a competent, independent and autonomous way. To evaluate the found information and identify its deficiencies.
Computer science specialization
- CCO1.2 - To demonstrate knowledge about the theoretical fundamentals of programming languages and the associated lexical, syntactical and semantic processing techniques and be able to apply them to create, design and process languages.
Objectives
-
Knowing the different compilation steps, including lexical, syntactic and semantic.
Related competences: CCO1.2, -
Conocer herramientas para la creación de analizadores léxicos y sintácticos.
Related competences: CCO1.2, -
Knowing the differences between a compiler and an interpreter.
Related competences: CCO1.2, -
Distinguish the main features of a given programming language. Identify its strengths and weaknesses and be able to justify a choice.
Related competences: CCO1.2, G4.3, -
Understand the main features of functional programming languages​​.
Related competences: CCO1.2, -
Learn advanced programming language concepts
Related competences: CCO1.2, -
Being able to model and specify hardware or software problems using functional languages​​.
Related competences: CCO1.2, G4.3, G6.3, -
Learn the main features of scripting languages​​.
Related competences: CCO1.2, -
Ability to learn new programming languages ​​independently.
Related competences: CCO1.2, G6.3,
Contents
-
Introduction to programming languages.
Turing completeness. Programming paradigms. Main features. -
Introduction to compilers.
Compilers vs interpreters. The lexical analysis. Parsing. Grammars. Table of symbols. Abstract syntax tree. Semantic analysis. Code generation. -
Functional languages.
Foundations. Pattern Matching. Eager/Lazy evaluation. Introduction to Haskell. -
Type systems.
Types in programming languages​​. Types and reliability. Type systems in functional languages ​​and object-oriented languages​​. -
Higher-order programming
Higher-order functions. Applications. Programming higher-order functions in functional and object-oriented languages​​. -
Modeling and Specification using functional languages
Modeling and specification using declarative languages ​​. Prototyping. Executable specifications. Program transformation. -
Scripting languages
Features. Using scripting languages​​. Combining paradigms. Types. Higher-order features. Short introduction to Python.
Activities
Activity Evaluation act
Introduction to compilers
Presentació dels continguts a les classes de teoria. Realització de pràctiques de laboratori utilitzant analitzadors lèxics i sintàctics i realitzant un petit treball pràctic.Objectives: 1 2 3
Contents:
Theory
2h
Problems
0h
Laboratory
8h
Guided learning
0h
Autonomous learning
8h
Higher-order programming
Presentació de continguts a les sessions de teoria i aplicació al llenguatge Haskell a les sessions de laboratori.. També es veurà quines formes de programació d'ordre superior admeten a d'altres llenguatges coneguts com ara Java.Objectives: 4 5 6 9
Contents:
Theory
2h
Problems
0h
Laboratory
2h
Guided learning
0h
Autonomous learning
6h
Modeling and specification using functional languages
Presentació de continguts a les sessions de teoria i realització d'algun cas pràctic, que posteriorment es codificat a la sessió de laboratori.Objectives: 5 7
Contents:
Theory
4h
Problems
0h
Laboratory
2h
Guided learning
0h
Autonomous learning
6h
Scripting languages
Presentació de les característiques principals i d'algun exemples de llenguatges a classe de teoria. Utilització de llenguatges de scripting al laboratori, com ara gestors de processos o per navegadors web, etc.Objectives: 3 4 8 9
Contents:
Theory
2h
Problems
0h
Laboratory
6h
Guided learning
0h
Autonomous learning
6h
Learning a new programming language
L'estudiant haurà d'aprendre un nou llenguatge que se li assignarà.
Theory
2h
Problems
0h
Laboratory
2h
Guided learning
0h
Autonomous learning
4h
Reviewing activities
Theory
2h
Problems
0h
Laboratory
2h
Guided learning
0h
Autonomous learning
6h
Teaching methodology
Classes are divided into theory and lab sessions.In the theory sessions the concepts of the subject will be developed. The presentation of new theoretical material is combined with the resolution of examples and the interaction with the students to promote the discussion of introduced concepts.
In the laboratory classes the introduced concepts will be put into practice and applied to specific problems and programming languages​​. There will be three small practices associated with the different evaluation tests.
Evaluation methodology
The grade isN = 0.50·F + 0.20·P1 + 0.20·P2 + 0.10·D
where:
F = grade of the final exam
P1 = grade of the midterm exam (half course)
P2 = grade of the project (end of course)
D = note of the directed work
The midterm exam will be a computer exam that Haskell assesses. The final exam will be a written exam that will evaluate all the contents of the course. The practice is to use tools to generate compilers and Python to solve a case study.
The directed work consists in preparing a video and a written document about the properties of one or some programming languages. Assessment will be done by peer evaluation (co-evaluation). The qualifications of the transversal competences are obtained from the directed work.
Bibliography
Basic
-
Compiler design
- Wilhelm, R.; Maurer, D,
Addison-Wesley,
1995.
ISBN: 978-0201422900
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001228599706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Compilers: principles, techniques, and tools
- Aho, A.V.; Sethi, R.; Ullman, J.D,
Addison-Wesley,
2007.
ISBN: 9780321491695
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003301129706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Concepts in programming languages
- Mitchell, J.C,
Cambridge University Press,
2003.
ISBN: 978-0521780988
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002623469706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Programming language pragmatics
- Scott, M.L,
Morgan Kaufmann,
2016.
ISBN: 9780124104099
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004180229706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Haskell: the craft of functional programming
- Thompson, S,
Addison-Wesley,
2011.
ISBN: 978-0201882957
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003978689706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Razonando con Haskell: un curso sobre programación funcional
- Ruiz Jiménez, B.C,
Thomson-Paraninfo,
2004.
ISBN: 9788497322775
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002768069706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Previous capacities
Prior skills on logic acquired in the course on Foundations of Mathematics (FM):- Knowledge of basic concepts of logic propositions and predicates
- Knowledge of logical inference.
Prior programming skills acquired in the courses on Data structures and algorithms (EDA) and Programming Projects (PROP):
- Knowledge of programming.
- Knowledge of object oriented programming languages