Algorithms and Data Structures

Pasquale FOGGIA Algorithms and Data Structures

0612700006
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
EQF6
COMPUTER ENGINEERING
2016/2017

OBBLIGATORIO
YEAR OF COURSE 2
YEAR OF DIDACTIC SYSTEM 2015
PRIMO SEMESTRE
CFUHOURSACTIVITY
990LESSONS


Objectives
The course has the goal to present in detail the issues of design and implementation of algorithms, using both iterative and recursive techniques, and evaluating the efficiency of the obtained programs; the course also presents the fundamental data structures, showing their implementation in the C language.

Knowledge and understanding
Knowledge of the fundamental algorithms and data structures. Knowledge of the iterative and recursive programming paradigms. Comparison of algorithms with respect to their memory and execution time.

Applied knowledge and understanding
Analysis of typical problems and implementation of applications using standard algorithms and data structures in the C language, with an evaluation of their efficiency. Implementation of small-scale software projects using both integrated environments and separate compilation.
Prerequisites
THE COURSE REQUIRES PREVIOUS KNOWLEDGE ABOUT THE C PROGRAMMING LANGUAGE.
Contents
COMPLEMENTS OF C LANGUAGE: POINTERS, ARRAYS AND POINTER ARITHMETIC. STRUCTURES.

RECURSION: GENERAL DEFINITIONS. MATHEMATICAL INDUCTION. DIVIDE ET IMPERA. NOTEWORTHY RECURSIVE ALGORITHMS: HANOI TOWER, QUICKSORT, MERGESORT.

COMPUTATIONAL COMPLEXITY: DEFINITIONS; THE RAM MODEL; NOTATIONS (BIG O, OMEGA, THETA); COMPLEXITY EVALUATION; RECURENCE RELATIONS, NOTABLE CASES AND THEIR SOLUTIONS; AMORTIZED ANALYSIS.

DYNAMIC LISTS: GENERAL ASPECTS, DATA STRUCTURE, BASIC ALGORITHMS (BOTH ITERATIVE AND RECURSIVE): CREATION,
INSERTION, SEARCH, DELETION, VISIT, OTHER ALGORITHMS.

BINARY TREES: GENERAL ASPECTS, DATA STRUCTURE, BASIC ALGORITHMS (BOTH ITERATIVE AND RECURSIVE): CREATION,
INSERTION, SEARCH, DELETION, VISIT, OTHER ALGORITHMS.

HASHTABLES: GENERAL ASPECTS, DATA STRUCTURE, BASIC ALGORITHMS (BOTH ITERATIVE AND RECURSIVE): CREATION,
INSERTION, SEARCH, DELETION, VISIT, OTHER ALGORITHMS.

CASE TOOLS: INTEGRATED DEVELOPMENT ENVIRONMENT; DEBUGGING AND TESTING; SEPARATE COMPILATION; LIBRARIES; MAKEFILES.

RUN-TIME SUPPORT: GENERAL ASPECTS ON MEMORY ALLOCATION; STATIC AND DYNAMIC ALLOCATION, PROGRAM STACK AND ACTIVATION RECORDS; NAMES AND ENVIRONMENTS, STATIC AND DYNAMIC SCOPING.
Teaching Methods
THE COURSE INCLUDES THEORY LESSONS, EXERCISES AND LABORATORY ACTIVITIES. IN THE EXERCISES, THE TEACHER WILL PROPOSE AND DESCRIBE ALGORITHMIC PROBLEMS AND THEIR SOLUTION USING THE C LANGUAGE. IN THE LABORATORY ACTIVITIES, THE STUDENTS WILL DEVELOP THE SOLUTION TO A PROBLEM SPECIFIED BY THE TEACHER. THE LABORATORY ACTIVITIES ALSO INCLUDE THE REALIZATION OF GROUP PROJECTS MADE BY 3-4 STUDENTS TEAMS.

In order to participate to the final assessment and to gain the credits
corresponding to the course, the student must have attended at least 70%
of the hours of assisted teaching activities.
Verification of learning
THE EXAM AIMS AT EVALUATING: THE KNOWLEDGE AND UNDERSTANDING OF THE CONCEPTS PRESENTED IN THE COURSE; THE ABILITY TO APPLY THIS KNOWLEDGE FOR SOLVING PROBLEMS INVOLVING FUNDAMENTAL ALGORITHMS AND DATA STRUCTURES, EVALUATING THEIR EFFICIENCY; THE JUDGEMENT AUTONOMY; THE COMMINICATION SKILLS; THE LEARNING ABILITY.
THE EXAM CONSISTS OF A PRACTICAL TEST AND AN ORAL DISCUSSION. THE PRACTICAL TEST IS MADE USING A COMPUTER. IN ORDER TO PASS THE TEST, THE STUDENT MUST SHOW THE ABILITY TO SOLVE AN ASSIGNED PROBLEM WITHOUT SIGNIFICANT ERRORS. ONLY STUDENTS PASSING THE PRACTICAL TEST ARE ADMITTED TO THE ORAL DISCUSSION.
THE ORAL DISCUSSION WILL INVOLVE ALL THE ARGUMENTS PRESENTED IN THE COURSE, AND WILL EVALUATE THE KNOWLEDGE OF THE STUDENT AND THE COMMUNICATION SKILLS.
THE FINAL SCORING WILL BE ASSIGNED BY WEIGHTING 60% THE PRACTICAL TEST AND 40% THE ORAL DISCUSSION. THE "CUM LAUDE" SCORE CAN BE ASSIGNED TO STUDENTS THAT DEMONSTRATE AN EXCELLENT ABILITY TO ANALYZE AND DESIGN THE ALGORITHMS AND DATA STRUCTURES.
Texts
. VENTO, P. FOGGIA, “ALGORITMI E STRUTTURE DATI”, MCGRAW-HILL.

LECTURE NOTES, EXAMPLES AND EXERCISES ARE AVAILABLE ON LINE.


ADDITIONAL BOOKS:
T.H. CORMEN, C.E. LEISERSON, R.R. RIVEST, C. STEIN, “INTRODUZIONE AGLI ALGORITMI E STRUTTURE DATI 2/ED”, MCGRAW-HILL.
More Information
THE COURSE WILL BE HELD IN ITALIAN.
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2019-03-11]