COMPUTER PROGRAMMING, ALGORITHMS AND DATA STRUCTURES
Stampa
Enrollment year
2021/2022
Academic year
2021/2022
Regulations
DM270
Academic discipline
INF/01 (COMPUTER SCIENCE)
Department
DEPARTMENT OF MATHEMATICS "FELICE CASORATI"
Course
ARTIFICIAL INTELLIGENCE
Curriculum
PERCORSO COMUNE
Year of study
Period
Annual (04/10/2021 - 17/06/2022)
ECTS
12
Lesson hours
110 lesson hours
Language
English
Activity type
WRITTEN AND ORAL TEST
Teacher
FERRARI STEFANO (titolare) - 6 ECTS
DONDI PIERCARLO - 6 ECTS
Prerequisites
None
Learning outcomes
The course introduces the student to programming in Python and solving computational problems using algorithms. The main notions of imperative programming (variables, expressions, loops, functions, recursion, input / output) and the fundamental elements of object-oriented programming are provided. The course also illustrates the analysis and design of algorithms (asymptotic analysis, dynamic programming, greedy algorithms), presents the most important data structures (arrays, lists, trees, graphs) and the algorithms that work on them.
Course contents
Module 1: Computer Programming

Computer science overview
- logic circuits
- computer architecture
- operating system
- computer network
- information systems

Imperative programming
- top-down / bottom-up programming
- values, variables, expressions
- I/O instructions
- constructs, selection, loop
- functions, recursion
- I/O file
- libraries

Object-oriented programming
- fields and methods
- data types (arrays, lists)

++++++++++++++++++++++++

Module 2: Algorithms and Data Structures

Introduction
- concept of algorithm and structured data
- notion of cost (time / space)

Complexity measure
- asymptotic notations for cost functions
- methods of analysis (worst case, average, best case)

Analysis of recursive algorithms
- abstract data types (stacks, queues, trees)
- tree visit algorithms

Sorting algorithms
- SelectionSort, InsertionSort, BubbleSort, HeapSort, MergeSort, QuickSort
- cost of the order (comparison / exchanges)
- lower bound

Search algorithms
- type of dictionary data
- binary search trees
- hash table

Algortmi on graphs
- visit
- greedy techniques
- coverage
- shortest path
Teaching methods
Frontal lessons and laboratories
Reccomended or required readings
Think Python: How to Think Like a Computer Scientist by Allen B. Downey
Beijing: O'reilly Media

Problem Solving With Algorithims and Data Structures Using Python, 2nd edition, By Brad Miller and David Ranum
Franklin Beedle & Assoc

(Optional) Introduction to Algorithms, 3rd edition By Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
The MIT Press
Assessment methods
Written test
Further information
Sustainable development goals - Agenda 2030