ADVANCED PROGRAMMING LANGUAGES

Academic Year 2025/2026 - Teacher: MARCO GRASSIA

Expected Learning Outcomes

Knowledge and Understanding Abilities

The course provides students with knowledge of different programming paradigms, techniques for memory management, and methods for code translation. It also covers approaches for handling communication and concurrency, as well as strategies for error management.

Applying Knowledge and Understanding Abilities

Students will develop the ability to write programs in C++, as well as to design and implement applications using C# and Python. They will also acquire skills to solve problems using Go.

Ability of Making Judgements

By gaining familiarity with various programming languages and paradigms, students will be able to critically evaluate and select the most suitable language based on the specific problem to be solved.

Communication Skills

Students will learn to assess and justify the choice of the most appropriate programming language for implementing an application that addresses a given problem.

Learning Skills

The course aims to introduce the main constructs of programming languages and provide the tools necessary for a critical evaluation of these languages. Furthermore, students will acquire in-depth knowledge of language structures, enabling them to understand their actual functionality across different application domains.

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. 

Should the course be delivered in blended or remote mode, the necessary adjustments may be introduced with respect to what was previously stated, in order to comply with the program outlined and reported in the Syllabus.

Required Prerequisites

Knowledge of basic computer architectures and their related issues, as well as assembly languages.

Basic knowledge of Computer Science.

Basic knowledge of software engineering.

Understanding of procedural and object-oriented programming paradigms.

Proficiency in the C and Java programming languages.

Attendance of Lessons

Attendance at lessons is not mandatory but strongly recommended.

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: 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 3:  Functional programming oriented to objects: the C# language: C# syntax, 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 4: 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 5: 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

[T1] material provided by the teacher

[T2] Sebesta, Concepts of Programming Languages, 11th Edition - Pearson

[T3] Mark Michaelis, Essential C# 8.0,Addison-Wesley Microsoft Technology English

[T4] Alan A. A. Donovan and Brian W. Kernighan, Go Programming Language, Addison-Wesley Professional Computing Series

[T5]   Thinking in C++, Vol 1 Thinking in C++, Bruce Eckel

Textbook Information

[T1] material provided by the teacher

[T2] Sebesta, Concepts of Programming Languages, 12th Edition - Pearson, ISBN-13: 9781292436821

[T3] Mark Michaelis, Essential C# 8.0,Addison-Wesley Microsoft Technology English, ISBN-13. 978-0135972267

[T4] Alan A. A. Donovan and Brian W. Kernighan, Go Programming Language, Addison-Wesley Professional Computing Series, ISBN-13: 978-0134190563

[T5] Thinking in C++, Vol 1 Thinking in C++, Bruce Eckel, ISBN-13: 978-0139798092

Course Planning

 SubjectsText References
1[T2] 1.1-1.4 (inclusive), 1.6
2[T2] 2
3[T2] chapter 5
4[T2] chapters 6, 7
5Aho Ulmann, Compilers: Principles, Techniques, and Tools, 2nd Edition, cap 7.4 -7.8
6[T2] chapters 8,9,10
7[T2] chapters 13,14
8Lecture notes provided by the instructor
9Lecture notes provided by the instructor
10Lecture notes provided by the instructor
11Lecture notes provided by the instructor

Learning Assessment

Learning Assessment Procedures

The development of an assignment assigned by the instructor and a subsequent oral exam after the discussion of the assignment is planned.

The student must fill out a request form for assignment of the assignment, containing some information based on which the instructor will proceed with the assignment of the assignment.

The request must be made during the lecture period, and the assigned assignment can be submitted within the academic year.

The submission of the assignment (code and report) must be done through the Microsoft Teams portal by the agreed-upon date at the time of assignment.

The assignment must be developed by groups of 2 students. Only in motivated cases will it be possible to develop the assignment individually.

The exam will be organized into two parts that will take place on the same day.

The first part will involve the discussion of the completed assignment, while the second part will involve a discussion of the entire program, and the ability to develop code in the 4 specified languages will be required.

The first part of the exam will have a value of 25%, while the second part will account for the remaining 75%.

Waiving the development of the assignment will allow for a maximum grade of 23 to be achieved.

The evaluation scale is: not approved, 18–23, 24–27, 28–30 with honors.

The assessment of learning may also be carried out online, should circumstances require it.

Students with disabilities and/or specific learning disorders (SLD) must contact the instructor, the CInAP representative at DMI (Prof. Daniele), and CInAP sufficiently in advance to access the appropriate compensatory measures.

Examples of frequently asked questions and / or exercises

Available on Microsoft Teams. Note that these questions are purely indicative: the questions asked during the exam may differ, even significantly.
VERSIONE IN ITALIANO