ADVANCED PROGRAMMING LANGUAGES
Academic Year 2022/2023 - Teacher: Vincenza CARCHIOLOExpected Learning Outcomes
Knowledge and understanding abilities
- knowledge of different programming paradigms
- knowledge of different memory management techniques
- knowledge of the different translation techniques
- knowledge of communication and competition management methods
- knowledge of error management methods
Applying knowledge and understanding abilities)
- ability to write programs in C++
- Program development capacity in C#
- Software development capability in Python
- ability to resolve in Go
Ability of making judgements
- the student acquires knowledge of different programming languages and paradigms and is able to choose the best one based on the problem to be solved
Communication skills
- the student is able to evaluate the most suitable language for the implementation of an application that solves a given problem
Learning skills
- To introduce the main constructs of programming languages and to provide the tools necessary for the critical evaluation of programming languages.
- Acquire in-depth knowledge of the structures of programming languages that allow you to understand the actual ...
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 teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus.
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
Textbook Information
[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
Course Planning
Subjects | Text References | |
---|---|---|
1 | Valutazione dei linguaggi di programmazione | [T2] 1.1-1.4 (inclusive), 1.6 |
2 | Storia dei linguaggi di programmazione | [T2] 2 |
3 | Naming, Binging e Scope | [T2] capitolo 5 |
4 | Data Type e Valutazione delle Espressioni | [T2] capitolo 6, 7 |
5 | Gestione della memoria e Garbage Collection | Aho Ulmann, Compilers: Principles, Techniques, and Tools, 2nd Edition, cap 7.4 -7.8 |
6 | Strutture di controllo e sottoprogrammi | [T2] capitolo 8,9,10 |
7 | Tecniche avanzate di programmazione | [t2] capitolo 13,14 |
8 | Il linguaggio C++ | |
9 | Il linguaggio C# | |
10 | Il linguaggio Python | |
11 | Il linguaggio GO |