Programma del corso

INTRODUCTION
Information and its representation. Binary coding and other codings. Code conversions. Natural binary arithmetics. Boolean algebra: operators, normal forms, Shannon theorem, synthesis of boolean functions.

ALGORITHMS
Definition and properties. Execution and executor. Variables, elementary operations. Analysis and synthesis of an algorithm. Representations and flowcharts. Structured programming primitives. Subroutines. Classification of programming languages: paradigms (procedural, functional, declarative, object oriented) and generations. Interpreters and compilers. Abstractions and virtual machines.

REMARKABLE ALGORITHMS AND DATA STRUCTURES
Search algorithms: linear search, search in ordered arrays, binary dichotomic search. Sorting algorithms: ordered insertion, fusion, bubble sort, quick sort. Introduction to computational complexity. Introduction to data structures: lists, trees, graphs.

FUNDAMENTALS OF SOFTWARE DEVELOPMENT PROCESSES
Introduction to software engineering and software development cycles. Software reuse and libraries.

INTRODUCTION TO PYTHON
Introduction to Python. Running Python code: interactive mode and programs. Python built-in types. Python indentation rules. Variables: assignment and expressions. Conditional if statement. While and for loops. String fundamentals. Complex types: lists, tuples and dictionaries. Functions. List comprehensions and recursion. Python standard library. Files. Python for data science.