ADVANCED PROGRAMMING

Computer science ADVANCED PROGRAMMING

0512100047
DIPARTIMENTO DI INFORMATICA
EQF6
COMPUTER SCIENCE
2019/2020

YEAR OF COURSE 3
YEAR OF DIDACTIC SYSTEM 2017
PRIMO SEMESTRE
CFUHOURSACTIVITY
648LESSONS
Objectives
KNOWLEDGE AND UNDERSTANDING
THE STUDENT WILL ACQUIRE KNOWLEDGE, SKILLS, AND THE PRACTICAL EXPERIENCE NEEDED TO DESIGN AND IMPLEMENT COMPLEX PROGRAMS, IN PARTICULAR WITH REGARD TO THE OOP AND FUNCTIONAL PROGRAMMING PARADIGMS.
DURING THE INITIAL PART OF THE COURSE THE STUDENT WILL UNDERSTAND THE TECHNOLOGIES (STATE OF THE ART) NEEDED TO DESIGN A COMPLEX PROGRAM. LATER ON, THE STUDENT WILL BE ENCOURAGED TO APPLY THE ACQUIRED KNOWLEDGE IN DESIGNING AND DEVELOPING
A MORE COMPLEX APPLICATION WITH ROBUSTNESS AND EFFICIENCY REQUIREMENTS.

APPLYING KNOWLEDGE AND UNDERSTANDING
AT THE END OF THE COURSE, THE STUDENT WILL BECOME FAMILIAR WITH THE MOST IMPORTANT CONSTRUCTS OF OBJECT-ORIENTED PROGRAMMING AND FUNCTIONAL PROGRAMMING, AND WITH OTHER RELEVANT ADVANCED ASPECTS OF PYTHON PROGRAMMING, SUCH AS CONCURRENCY AND NETWORKING. MOREOVER, THE STUDENT WILL BE ABLE TO USE THE STUDIED DESIGN PATTERNS AS GENERAL SCHEMES FOR THE SOLUTION OF SPECIFIC PROBLEMS IN SOFTWARE DEVELOPMENT.
THE STUDENT WILL BE ABLE TO DESIGN AND DEVELOP COMPLEX PROGRAMS,
AND TO VERIFY THEIR CORRECTNESS, PORTABILITY AND MAINTAINABILITY.
Prerequisites
BASIC KNOWLEDGE OF AN IMPERATIVE PROGRAMMING LANGUAGE AND AN OBJECT ORIENTED PROGRAMMING LANGUAGE.
Contents
A REVIEW OF THE FUNDAMENTALS OF PYTHON PROGRAMMING (4 HOURS)
OBJECT ORIENTED PROGRAMMING IN PYTHON (3 ORE)
EXCEPTIONS, ASSERTIONS (2 HOURS)
FUNCTIONAL PROGRAMMING (5 HOURS)
CREATIONAL DESIGN PATTERNS (3 HOURS)
STRUCTURAL DESIGN PATTERN (4 HOURS)
BEHAVIORAL DESIGN PATTERNS (6 HOURS)
INTROSPECTION (4 HOURS)
GENERATORS, COROUTINES (3 ORE)
MEMORY MANAGEMENT, GARBAGE COLLECTION (2 HOURS)
INPUT-OUTPUT, SERIALIZATION (2 HOURS)
MULTIPROCESSING (3 HOURS)
MULTITHREADING (3 HOURS)
NETWORKING (4 HOURS)

Teaching Methods
THE COURSE CONSISTS OF 48 HOURS OF CLASS LECTURES AIMED AT SHOWING CONCEPTS OF ADVANCED PROGRAMMING ALSO THROUGH MANY EXAMPLES OF CODE FRAGMENTS. THE STUDENTS WILL BE ALSO ENCOURAGED TO SOLVE PROGRAMMING EXERCISES THAT INVOLVE THE USE OF THE ILLUSTRATED TECHNIQUES.
Verification of learning
THE EXAM CONSISTS IN A PROGRAMMING EXAMINATION AND AN ORAL DISCUSSION. THE EXAM IS MAINLY INTENDED TO ASSESS THE LEVEL OF KNOWLEDGE AND UNDERSTANDING OF THE METHODOLOGIES PRESENTED IN CLASS. THE FINAL GRADE IS THE AVERAGE OF THE GRADES OF THE PROGRAMMING EXAM AND THE ORAL DISCUSSION.
Texts
MARK LUTZ, "LEARNING PYTHON", O'REILLY, 5TH EDITION.

MARK SUMMERFIELD, “PYTHON IN PRACTICE: CREATE BETTER PROGRAMS USING CONCURRENCY, LIBRARIES, AND PATTERNS ”, ADDISON-WESLEY PROFESSIONAL.

TEACHING MATERIAL MADE AVAILABLE BY THE LECTURER AND MATERIAL TAKEN FROM TEXTBOOKS THAT WILL BE REFERENCED DURING THE LESSONS.
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2021-02-19]