Programming Techniques

Ingegneria Informatica Programming Techniques

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



OBBLIGATORIO
YEAR OF COURSE 1
YEAR OF DIDACTIC SYSTEM 2017
PRIMO SEMESTRE
CFUHOURSACTIVITY
540LESSONS
432EXERCISES
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
PYTHON LANGUAGE
- DATA TYPES AND FUNCTIONS (2 LECTURE HOURS AND 4 PRACTICE HOURS)
- CLASSES, MODULES AND LIBRERIES (2 LECTURE HOURS AND 2 PRACTICE HOURS)

ADVANCED DATA STRUCTURES
- ABSTRACT DATA TYPES (2 LECTURE HOURS AND 4 PRACTICE HOURS)
- BINARY SEARCH TREE (2 LECTURE HOURS AND 2 PRACTICE HOURS)
- BALANCED TREES (6 LECTURE HOURS AND 8 PRACTICE HOURS)
- PRIORITY QUEUES (2 LECTURE HOURS AND 2 PRACTICE HOURS)
- MAPS AND HASH TABLES (2 LECTURE HOURS AND 2 PRACTICE HOURS)
- DATA STRUCTURES FOR STRINGS (4 LECTURE HOURS AND 2 PRACTICE HOURS)
- GRAPHS (8 LECTURE HOURS AND 6 PRACTICE HOURS)

PROGRAMMING TECHNIQUES
- GREEDY PROGRAMMING (4 LECTURE HOURS AND 4 PRACTICE HOURS)
- EXHAUSTIVE SEARCH AND DYNAMIC PROGRAMMING (6 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 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 AN INTERVIEW, 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 60% WHILE THE INTERVIEW 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
M.T. GOODRICH, M. TAMASSIA, M.H. GOLDWASSER, “DATA STRUCTURES & ALGORITHMS IN PYTHON”,
WILEY 2013

OTHE MATERIAL WILL BE MADE AVAILABLE ON THE COMPANION WEB SITE.

SUGGESTED READINGS:
KLEINBERG, TARDOS, "ALGORITHM DESIGN", PRENCTICE HALL, 2005.
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.
P. MORIN, ”OPEN DATA STRUCTURES", (HTTP://WWW.OPENDATASTRCTURES.ORG).
C. DEMETRESCU, I. FINOCCHI, G. ITALIANO, “ALGORITMI E STRUTTURE DATI”, MCGRAW HILL, 2008.
More Information
THE COURSE LANGUAGE IS ITALIAN.

THERE IS A COMPANION WEB SITE PUBLISHED ON THE DIEM E-LEARNING PLATFORM (HTTP://ELEARNING.DIEM.UNISA.IT - CORSO DI TECNICHE DI PROGRAMMAZIONE DEL CDS MAGISTRALE IN INGEGNERIA INFORMATICA) WHERE YOU CAN FIND ANNOUNCEMENTS, NEWS, MATERIAL, SLIDES, LECTURES' CALENDAR, A SUMMARY OF THE ARGUMENTS TOUCHED IN CLASS, PROJECTS, HOMEWORKS, EXAM TESTS.
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2019-05-14]