ADVANCED PROGRAMMING TECHNIQUES

Giuseppe CATTANEO ADVANCED PROGRAMMING TECHNIQUES

0512100026
DIPARTIMENTO DI INFORMATICA
COMPUTER SCIENCE
2014/2015



YEAR OF DIDACTIC SYSTEM 2008
SECONDO SEMESTRE
CFUHOURSACTIVITY
648LESSONS
Objectives
KNOWLEDGE AND UNDERSTANDING:
THE COURSE PRESENTS MODELS AND PROGRAMMING TECHNIQUES TO DEAL WITH FULL-SIZE PROBLEMS. BY MEANS OF THE PYTHON PROGRAMMING LANGUAGE AND A SERIES OF CONCRETE EXAMPLES, STUDENTS WILL BE DRIVEN TO THE USE OF COMPLEX TOOLS SUCH AS CLASSES AND OBJECT-ORIENTED PROGRAMMING PATTERNS, MULTIPLE INHERITANCE, RECURSION, CONCURRENCY MANAGEMENT AND EVENT HANDLING. AMONG THE VARIOUS EXAMPLES WILL BE DEVELOPED SPECIFIC CASE STUDIES RELATED TO GUI, WEB, AND DISTRIBUTED PROGRAMMING. THE PYTHON LANGUAGE WILL BE INTRODUCED ALONG WITH ITS MAIN HIGH LEVEL DATA STRUCTURES (DICTIONARIES, LISTS AND TREES) AND THE MOST COMMON LIBRARIES IN WEB PROGRAMMING.

APPLYING KNOWLEDGE AND UNDERSTANDING:
UPON COMPLETION OF THIS COURSE STUDENTS SHOULD BE ABLE TO SOLVE COMPLEX PROBLEMS BY CHOOSING THE OPTIMAL IMPLEMENTATION STRATEGY ACCORDING TO THE AVAILABLE PYTHON CLASS LIBRARIES AND APPLYING THE EXPERIENCES GAINED DURING THE COURSE. GIVEN THE FUNCTIONAL REQUIREMENTS EACH STUDENT IS SUPPOSET TO BE ABLE TO FIND AN OPTIMAL SOLUTION BASED ON THE TOOLS AVAILABLE AND THE POSSIBILITY OF TRANSFORMING THE INPUT PROBLEM INTO ONE OF THE CLASSES ADDRESSED

COMMUNICATION SKILLS:
EACH PROGRAMMING TECHNIQUE WILL ALSO BE DEMONSTRATED DURING THE EXERCISES IN THE LAB DEVELOPING AD-HOC PROJECTS AND GRADUALLY EXTENDING THE SET OF CLASSES.
STUDENTS WILL BE ENCOURAGED TO COMPARE THE NEW ADOPTED SOLUTIONS WITH PREVIOUS PROGRAMMING EXPERIENCE GAINED DURING THEIR STUDIES, TO REMARK THE ADVANTAGES OF THE NEW APPROACH AND TO UNDERSTAND CONCRETELY WHEN YOU CAN SUCCESSFULLY USE THE NEW PROGRAMMING PATTERN CONSIDERING ADVANTAGES AND DISADVANTAGES.

MAKING JUDGMENT:
STUDENTS WILL BE DRIVEN TO CRITICALLY LEARN EVERYTHING IS INTRODUCED IN CLASS. THEIR JUDGMENT CAPABILITY WILL BE INCREASED THROUGH A COMPARATIVE APPROACH THAT WILL REMARK THE MOTIVATIONS AND BENEFITS OF NEW APPROACHES COMPARED TO WHAT WAS ALREADY KNOWN. IN PARTICULAR, EXPLOITING THE EXTREME POPULARITY OF THE PYTHON LANGUAGE STUDENT WILL BE ENCOURAGED TO ACCESS LARGE DEVELOPER COMMUNITIES SHARING PROBLEMS AND SOLUTIONS.

LEARNING SKILLS:
THE COURSE HAS BEEN DESIGNED TO PROMOTE A MODEL BASED ON INCREMENTAL LEARNING, MOVING GRADUALLY FROM PROGRAMMING TECHNIQUES ALREADY KNOWN TO MORE SOPHISTICATED TECHNIQUES. THROUGH THE EXERCISES IN THE LABORATORY WILL BE CONSTANTLY MONITORED THE LEVEL OF LEARNING ACHIEVED. THE REALIZATION OF THE SUGGESTED SAMPLE PROGRAMS WILL ALSO ALLOW STUDENTS TO CHECK THEIR LEVEL OF LEARNING AND THE RESULTS ACHIEVED AT VARIOUS STAGES.
ALL STUDENTS WILL DEVELOP A FULL-SIZE PROJECT ORGANIZING THEMSELVES INTO SMALL GROUPS TO STIMULATE A GREATER COMMITMENT AND TO ALLOW THE IMMEDIATE APPLICATION OF WHAT HAS BEEN LEARNT.
Prerequisites
THIS COURSE ASSUMES THAT EACH STUDENT HAVE ALREADY PASSED AT LEAST AN INTRODUCTORY COURSE ON OBJECT ORIENTED PROGRAMMING AND DATA STRUCTURES (JAVA). A BASIC KNOWLEDGE ABOUT DISTRIBUTED PROGRAMMING IS ALSO RECOMMENDED.
Contents
HOURS OF LECTURES: 48
LABORATORY HOURS: 36
THE COURSE IS DIVIDED INTO 3 PARTS:

THE FIRST PART BRIEFLY INTRODUCES THE CONCEPT OF PROCEDURAL PROGRAMMING LANGUAGE SYNTAX, BASIC DATA TYPES AND THE SEMANTICS OF THE CONSTRUCTS AVAILABLE IN PYTHON (CONTROL STRUCTURE, FUNCTION, MODULE, PACKAGE, EXCEPTION HANDLING). THEN INTRODUCES ABSTRACT DATA TYPES (COLLECTION AND ITERATORS) AND THE MAIN DATA STRUCTURES OF THE PYTHON STANDARD LIBRARY.
THE SECOND PART IS DEVOTED TO A REVIEW OF THE CONCEPT OF OBJECT ORIENTED PROGRAMMING IN THE PYTHON LOGIC, SHOWING ALSO HOW TO TAKE ADVANTAGE FROM THE AVAILABLE FUNCTIONAL PROGRAMMING FEATURES.
THE LAST PART OF THE COURSE INTRODUCES THE MAIN DESIGN PATTERNS, INCLUDING: STRUCTURAL DESIGN PATTERNS CREATIONAL DESIGN PATTERNS, BEHAVIORAL DESIGN PATTERNS. USING THESE FEATURES WILL BE DEVELOPED SOLUTIONS IN THE FIELD OF: CONCURRENT PROGRAMMING (PROCESS AND THREAD), NETWORK PROGRAMMING, DATABASE PROGRAMMING AND GUI DEVELOPMENT (OVERVIEW).
Teaching Methods
LECTURES (100%), OF WHICH ABOUT 40% ON EXERCISES AND PROGRAMMING EXAMPLES. A PROJECT WILL BE DEVELOPED BY SMALL GROUPS OF STUDENTS.
Verification of learning
THE EXAM CONSISTS OF A WRITTEN TEST AND AN ORAL TEST, WITH THE DISCUSSION OF A DRAFT PREPARED BY THE STUDENTS. THE WRITTEN TEST CONSISTS OF THE IMPLEMENTATION OF A SOLUTION TO A SPECIFIC PROBLEM. THE PROJECT IS BASED ON THE DEVELOPMENT OF AN APPLICATION, INCLUDING THE TECHNICAL DOCUMENTATION. WILL BE ASSESSED THE QUALITY OF DOCUMENTATION, THE MOTIVATION OF THE DESIGN CHOICES MADE, THE EFFECTIVENESS AND EFFICIENCY OF THE PROPOSED SOLUTIONS. THE OUTCOME OF THE WRITTEN TEST, ORAL EXAM AND DISCUSSION OF THE PROJECT CONTRIBUTE TO THE FORMULATION OF THE FINAL VOTE WITH WEIGHTS 40%, 40%, 20%, RESPECTIVELY.
Texts

MARCO BUTTU, "PROGRAMMARE CON PYTHON. GUIDA COMPLETA",
EDITORE: LSWR; 1 EDIZIONE (26 FEBBRAIO 2014), LINGUA: ITALIANO, ISBN-10: 8868950243, ISBN-13: 978-8868950248


MARK SUMMERFIELD, "PYTHON IN PRACTICE - CREATE BETTER PROGRAMS USING CONCURRENCY, LIBRARIES, AND PATTERNS",
EDITORE: ADDISON WESLEY (0001), LINGUA: INGLESE, ASIN: B00GSCOAEQ
More Information
E-MAIL: CATTANEO@UNISA.IT
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2016-09-30]