Programming Techniques

Carlo BLUNDO Programming Techniques

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



OBBLIGATORIO
YEAR OF COURSE 1
YEAR OF DIDACTIC SYSTEM 2016
SECONDO SEMESTRE
CFUHOURSACTIVITY
972LESSONS
Objectives
The course provides the methodology and tools for analyzing a problem, designing an efficient solution, using advance programming techniques and data structures, and realizing it in an object-oriented programming language.

Knowledge and understanding
Students will learn advanced programming techniques and data structures. They will learn the implementation of the most relevant data structures in standard libraries. They will learn to understand terminology used in the context of algorithm design.

Applying knowledge and understanding
Students will learn to use proposed programming techniques and advanced data structures to solve complex problems. They will be able to implement algorithms and data structures in an object-oriented programming language.

Prerequisites
KNOWLEDGE OF BASIC DATA STRUCTURES AND FUNDAMENTALS OF PROGRAMMING AND ALGORITHM ANALYSIS IS REQUIRED FOR THE SUCCESSFUL ACHIEVEMENT OF COURSE OBJECTIVES.
FLUENCY IN OBJECT-ORIENTED PROGRAMMING IS RECOMMENDED.

Contents
ADVANCED DATA STRUCTURES
-INTRODUCTION AND ADT DICTIONARY (2 LECTURE HOURS AND 4 PRACTICE HOURS)
-BINARY SEARCH TREE (2 LECTURE HOURS AND 2 PRACTICE HOURS)
- HEAPS (2 LECTURE HOURS AND 2 PRACTICE HOURS)
-BALANCED TREES (6 LECTURE HOURS AND 8 PRACTICE HOURS)
-DATA STRUCTURES FOR STRINGS (2 LECTURE HOURS AND 2 PRACTICE HOURS)
-GRAPHS (8 LECTURE HOURS AND 8 PRACTICE HOURS)

PROGRAMMING TECHNIQUES
- GREEDY PROGRAMMING (4 LECTURE HOURS AND 4 PRACTICE HOURS)
- DIVIDE-AND-CONQUER (2 LECTURE HOURS AND 2 PRACTICE HOURS)
- EXHAUSTIVE SEARCH AND DYNAMIC PROGRAMMING (8 LECTURE HOURS AND 4 PRACTICE HOURS)
Teaching Methods
TEACHING METHODS:
LECTURES, GUIDED EXERCISES AND LABS.
DURING THE LECTURES ALGORITHMS AND DATA STRUCTURES ARE PRESENTED AND THEIR APPLICATIONS TO REAL-LIFE PROBLEMS ARE DISCUSSED.
IN THE LABS STUDENTS ARE REQUIRED TO IMPLEMENT DATA STRUCTURES AND ALGORITHMS PRESENTED IN THE LECTURES.
IN THE GUIDED EXERCISES STUDENTS ARE DIVIDED IN GROUPS AND EACH GROUP IS ASSIGNED A PROJECT-WORK TO DEVELOP DURING THE WHOLE COURSE. THE PROJECT INCLUDES ALL THE MATERIAL OF THE COURSE AND IS FINALIZED TO THE ACQUISITION OF THE CAPACITY TO SOLVE A PROGRAMMING PROBLEM, DESIGNING AND IMPLEMENTING A PROGRAM USING ADVANCED DATA STRUCTURES AND PROGRAMMING TECHNIQUES. THE PROJECT-WORK IS ALSO USED TO DEVELOP THE ABILITY OF WORKING IN A TEAM.
Verification of learning
THE FINAL EXAM IS DESIGNED TO EVALUATE AS A WHOLE THE KNOWLEDGE AND UNDERSTANDING OF THE CONCEPTS PRESENTED IN THE COURSE, AND THE ABILITY TO APPLY SUCH KNOWLEDGE IN DESIGNING ALGORITHMS AND IMPLEMENTING THEM IN AN OBJECT-ORIENTED PROGRAMMING LANGUAGE TO SOLVE NON TRIVIAL COMBINATORIAL PROBLEMS.

THE EXAM CONSISTS OF THE DISCUSSIONE OF THE PROJECT AND THE HOMEWORKS REALIZED DURING THE COURSE, WHOSE AIM IS TO ASSESS THE ABILITY OF APPLYING KNOWLEDGE OF THE DATA STRUCTURES AND PROGRAMMING TECHNIQUES PROPOSED IN CLASS AND REALIZE EFFICIENT IMPLEMENTATIONS, AND A TEST, THAT CAN BE WRITTEN OR ORAL., WHOSE AIM IS TO ASSESS THE ACQUIRED KNOWLEDGE OF ADVANCED DATA STRUCTURES AND PROGRAMMING TECHNIQUES AND ABILITY TO UNDERSTANDING AND THE PRESENTATION SKILLS.

IN THE FINAL EVALUATION, EXPRESSED IN THIRTIES, THE EVALUATION OF THE PROJECT WILL ACCOUNTS FOR 50%, THE HOMEWORKS ACCOUNT FOR 40% WHILE THE TEST FOR THE REMAINING 40%. THE CUM LAUDE MAY BE GIVEN TO STUDENTS WHO DEMONSTRATE THAT THEY CAN APPLY THE KNOWLEDGE AUTONOMOUSLY EVEN IN CONTEXTS OTHER THAN THOSE PROPOSED IN THE COURSE.
Texts
MICHAEL T. GOODRICH, ROBERTO TAMASSIA, MICHAEL H. GOLDWASSER, "DATA STRUCTURES AND ALGORITHMS IN PYTHON", WILEY, 2013.


OTHER MATERIAL WILL BE MADE AVAILABLE ON THE WEB SITE OF THE COURSE.

SUGGESTED READINGS:
KLEINBERG, TARDOS, "ALGORITHM DESIGN", PRENCTICE HALL, 2005.
P. MORIN, "OPEN DATA STRUCTURES", (SCARICABILE ALL'INDIRIZZO WWW.OPENDATASTRUCTURES.ORG).
T.H. CORMEN, C.E. LEISERSON, R.L. RIVEST, C. STEIN, “INTRODUZIONE AGLI ALGORITMI E STRUTTURE DATI”, SECONDA EDIZIONE, MCGRAW-HILL, 2005.
M. VENTO, P. FOGGIA, “ALGORITMI E STRUTTURE DATI”, MCGRAW-HILL.
More Information
The course language is Italian.
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2019-03-11]