The main objectives are to introduce the main peculiatities of programming languages and to provide the necessary tools for the critical evaluation of programming languages.
A second objective is to provide in-depth knowledge on the structures of programming languages that allow to understand the actual functionality in the different fields of application.
The course illustrates programming languages by providing an application-based taxonomy. Formal languages and some programming languages oriented to specific applications such as cloud and Big Data will be studied.
The advanced techniques of modern programming languages will be studied with particular attention to multi paradigm languages, use of types, dynamic type checking, concurrent programming. These techniques will be analyzed in the context of the following languages: Scala, R, C ++, GO.
The lessons are arranged into Modules according to the arguments contents.
The main teaching methods are as follows:
lessons, to acquire the basic theoretical knowledge and all the language syntactic elements;
exercises proposed and solved by the teacher to develop student’s “problem solving” methodologies, to apply knowledge and to use the IDEs;
The teacher also proposes individual activities consisting in some problem that the student must solve independently and discuss with the classroom.
Module 1: Characteristics of programming languages and formal languages for the specification and translation of programming languages Evolution of the main programming languages - Formal languages for the description of the syntax of the syntax and of the semantics of programming languages Data types - Expressions and assignment declarations - Declaration level control structures - Subprograms and their implementation - Memory management - Garbace collector - Exception and event handler
Module 2; Functional programming oriented to objects: the SCALA language SYNTAX SCALE: Classes and Objects, Basic Types and Operations, Functional Objects Built-in Control Structures, Functions and Closure, Abstraction, Inheritance and Class Hierarchy, Lambda Calculus, Lists, Pattern Maching, Actors and Competition, GUI
Module 3: C ++ language Introduction to C ++, use of predefined classes, C ++ class creations, pointers and references, overloading of functions and operators, creation of objects at runtime, reuse of C ++ code, writing of extensible programs, arguments and return values , container classes and C ++ models, exception handling, Standard C ++ Library, STL
Module 4: The GO language Introduction to the Go language, Language syntax: Data types and variables and Control and decision constructs, Data structures: arrays, slices and maps, Functions and defers Structure of memory and pointers Object-Oriented programming, P, Input and output management on terminal and file, the compiler and the garbage collector
Module 5: the language R Introduction to Language R, Syntax of R language, arrays, matrices and data frames. Use and definition of procedures, functions and packages. Vvectorisation, loops, control structures (if, while, for), Non-linear optimization and convergence. I / O and visualization
[[T1] material provided by the teacher
[T2] Sebesta, Concepts of Programming Languages, 11th Edition - Pearson
[T3] Martin Odersky, Lex Spoon, and Bill Venners: Programming in Scala, Third Edition, Artima
[T4] Alan A. A. Donovan and Brian W. Kernighan, Go Programming Language, Addison-Wesley Professional Computing Series
[T5] Norman Matloff, The Art of R Programming, ISBN-13: 978-1-59327-384-2
[T6] Thinking in C++, Vol 1 Thinking in C++, Bruce Eckel