ING-INF/05 - 9 CFU - 1° Semester

Teaching Staff


Learning Objectives

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 ++, Python, GO.

Course Structure

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.

Detailed Course Content

Module 1: Characteristics of programming languages ​​and formal languages ​​for the specification and translation of programming languages Evolution of the main 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 Pythom Language: Introduction to Python, Data Structures, Strings, Advanced Functions and OOPs, Standard Library, Development Tools, Networking, Crawling and Scraping, Serialization and Data Persistence, GUI Programming, Distributing Python

Module 6: 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

Textbook Information

[[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

Open in PDF format Versione in italiano