OO PROGRAMMING

Massimo FICCO OO PROGRAMMING

0512100053
COMPUTER SCIENCE
EQF6
COMPUTER SCIENCE
2022/2023

OBBLIGATORIO
YEAR OF COURSE 2
YEAR OF DIDACTIC SYSTEM 2017
AUTUMN SEMESTER
CFUHOURSACTIVITY
648LESSONS
324LAB


Objectives
KNOWLEDGE AND UNDERSTANDING
- ACQUISITION OF BASIC SKILLS FOR THE OBJECT-ORIENTED DESIGN THROUGH THE UNDERSTANDING OF DATA ABSTRACTION CONCEPT, ENCAPSULATION, COHESION, COUPLING, AND CODE REUSE;
- UNDERSTANDING THE DIFFERENCES BETWEEN THE PROCEDURAL PARADIGM PROGRAMMING AND OBJECT ORIENTED PROGRAMMING;
- LEARNING THE JAVA PROGRAMMING LANGUAGE USING JAVA FOR THE DEFINITION OF CLASSES AND FOR SOFTWARE REUSING.

APPLYING KNOWLEDGE AND UNDERSTANDING
- ABILITY OF PERFORMING PROBLEM ANALYSIS, REQUIREMENTS SPECIFICATION AND PROBLEM SOLVING IN THE OBJECT-ORIENTED PARADIGM, WITH IMPLEMENTATION IN THE JAVA LANGUAGE, BY GUARANTEEING A RIGHT BALANCE BETWEEN QUALITY AND EFFICIENCY OF THE RESULTING SOFTWARE;
- DEVELOPMENT OF PROJECTS WITH INDIVIDUAL AND GROUP ACTIVITIES.
Prerequisites
GOOD SKILLS OF C LANGUAGE PROGRAMMING TECHNIQUES, PROCEDURAL PROGRAMMING PARADIGM AND GOOD KNOWLEDGE OF THE ISSUES RELATED TO CODING SIMPLE ALGORITHMS. BASIC KNOWLEDGE AND FAMILIARITY WITH AN OPERATING SYSTEM (WINDOWS, LINUX, ...).
Contents
AFTER INTRODUCING OBJECT-ORIENTED PROGRAMMING, ALSO HIGHLIGHTING THE MAIN DIFFERENCES WITH OTHER PARADIGMS, THE COURSE WILL FOCUS ON THE FOLLOWING TOPICS:
- OBJECT-ORIENTED PROGRAMMING, CONCEPTS OF DATA ABSTRACTION AND ENCAPSULATION (2 HOURS OF THEORY)
- INTRODUCTION TO JAVA AND THE BUILD PROCESS (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- INTRODUCTION TO PROGRAMMING TOOLKIT JDK 8 (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- OBJECTS, VARIABLES, REFERENCES, CLASSES AND METHODS, COMMUNICATION BETWEEN OBJECTS, PARAMETERS EXPLICIT AND IMPLICIT, THE "THIS" REFERENCE (4 HOURS OF THEORY, 2 HOURS OF LABORATORY)
- FUNDAMENTAL DATA TYPES. ARITHMETIC AND MATHEMATICAL FUNCTIONS (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- INVOCATION OF STATIC METHODS (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- THE STRING CLASS (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- FILES AND STREAMS. READ AND WRITE TEXT FILES, BINARY AND TEXT FORMAT (2 HOURS OF THEORY, 2 HOUR OF LABORATORY)
- REMIND OF THE CONTROL CONSTRUCTS (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- THE JAVA COLLECTIONS (2 HOURS OF THEORY, 2 HOURS OF LABORATORY)
- NOTES ON GENERIC TYPES, ENUMERATED TYPES AND MECHANISMS OF 'AUTOBOXING' AND 'UNBOXING'. GENERIC FOR (FOR EACH) (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- DESIGNING CLASSES. UNDERSTANDING THE CONCEPTS OF COHESION AND COUPLING (4 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- INTERFACES AND POLYMORPHISM (2 HOURS OF THEORY, 2 HOURS OF LABORATORY)
- INHERITANCE AND REUSE (2 HOURS OF THEORY, 2 HOURS OF LABORATORY)
- EXCEPTION HANDLING MECHANISM (2 HOURS OF THEORY, 2 HOURS OF LABORATORY)
- TESTING: CHECKING THE BEHAVIOR OF OBJECTS, CHOICE OF TEST CASES, INTEGRATION OF CLASSES. DEBUGGING (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- LAMBDA EXPRESSIONS TO DEFINE ANONYMOUS FUNCTIONS (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- GRAPHICAL PROGRAMMING (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
- PROGRAM EVENTS (2 HOURS OF THEORY, 1 HOUR OF LABORATORY)
Teaching Methods
THE LECTURES ON THE THEORETICAL ASPECTS OF THE COURSE TOPICS ARE HELD IN A STANDARD CLASSROOM (6 CFUS, 48 HOURS)), BY USING POWERPOINT PRESENTATIONS OR SIMILAR. ON EACH TOPIC, THE STUDENTS ARE INVOLVED IN AN ACCURATE DISCUSSION AND, WHERE APPROPRIATE, COMPARISONS WITH ALTERNATIVE SOLUTIONS ARE DONE.
THE LECTURES ON THE PRACTICAL ASPECTS ARE HELD IN A PC LABORATORY WHERE EACH STUDENT CAN DIRECTLY EXPERIMENT ON A MACHINE THE TECHNIQUES AND THE CONCEPTS PRESENTED IN THE CLASSROOM (3 CFUS, 24 HOURS). THE FOLLOWED APPROACH IS TO ASSIGN AN EXERCISE AND ANALYZE IT TOGETHER, THEN LEAVE A SHORT PERIOD OF TIME TO COME UP WITH AN INDIVIDUAL SOLUTION, THEN DISCUSS THE SOLUTIONS TOGETHER AND THEN LET EACH ONE INDIVIDUALLY IMPLEMENT THE PROGRAM.
HOMEWORKS, CONSISTING IN SOFTWARE DEVELOPMENT PROJECTS, CAN BE ALSO ASSIGNED.
Verification of learning
TO REACH THE OBJECTIVE OF THE COURSE STUDENTS ARE ASKED TO PASS A FINAL EXAM (SCORE IN THE RANGE [1..30]) THAT IS COMPOSED OF A PRACTICE TEST AND AN ORAL DISCUSSION. TO ACCESS THE ORAL EXAM, STUDENTS MUST PASS THE
PRACTICAL TEST WITH A MINIMUM GRADE OF 18/30.
A TYPICAL PRACTICE TEST REQUIRES TO SOLVE PROGRAMMING EXERCISES AND TO IMPLEMENT THEM IN JAVA ON A PC BY USING THE SOFTWARE DEVELOPMENT ENVIRONMENT LEARNT AT THE LECTURES (THE DURATION IS ABOUT 2 HOURS).
THE GOAL OF THE PRACTICE TEST IS TO VERIFY THE ABILITY OF PERFORMING PROBLEM ANALYSIS, REQUIREMENTS SPECIFICATION AND PROBLEM SOLVING IN THE OBJECT-ORIENTED PARADIGM, WITH IMPLEMENTATION IN THE JAVA LANGUAGE, BY GUARANTEEING A RIGHT BALANCE BETWEEN QUALITY AND EFFICIENCY OF THE RESULTING SOFTWARE.
THE ORAL DISCUSSION CONSISTS OF AN INTERVIEW ON THE SOFTWARE PROJECTS AND THE TOPICS COVERED AT THE LECTURES, AND THE ANALYSIS OF THE EXERCISES FROM THE PRACTICE TEST.
THE ORAL DISCUSSION AIMS TO VERIFY THE ABILITY OF APPROPRIATELY APPLYING THE STUDIED OBJECT-ORIENTED PROGRAMMING TECHNIQUES, IMPLEMENTING CORRECT PROGRAMS, AND IDENTIFYING THE MAIN ASPECTS OF THE PROPOSED ISSUES, AND MOREOVER, THE UNDERSTANDING OF THE TECHNICAL DETAILS AND THE PRACTICAL CONSEQUENCES, AND THE CLARITY OF PRESENTATION ARE POSITIVELY EVALUATED (DURATION IS ABOUT 20/30 MINUTES).
BOTH PRACTICE TEST AND ORAL DISCUSSION EQUALLY CONTRIBUTE TO THE FINAL SCORE.

DURING THE COURSE, IT IS POSSIBLE TO CARRY OUT TWO PARTIAL TESTS, AFTER HALF OF THE LESSONS AND AT THE END OF THE SEMESTER, RESPECTIVELY. EACH TEST WILL WEIGH 50% ON THE FINAL SCORE. THE EVALUATION OF THE TWO TESTS WILL BE EXPRESSED IN THIRTIETHS AND THE FINAL SCORE WILL BE GIVEN BY THE WEIGHTED AVERAGE OF THE TWO TESTS. IF THE FINAL SCORE IS ABOVE 18/30 THE STUDENT CAN BE CONSIDERED EXEMPTED FROM THE WRITTEN TEST. THE EXONERATION WILL BE VALID EXCLUSIVELY FOR THE EXAMINATION SESSION FOLLOWING THAT OF THE TEACHING.
Texts
CAY S. HORSTMANN, BRIEF JAVA: EARLY OBJECTS, 9TH EDITION, WILEY.
More Information
IT IS HIGHLY RECOMMENDED TO COMPLETE ALL THE ASSIGNMENTS AND ATTEND ALL THE LECTURES (INCLUDING THE LABORATORY PRACTICE). A GOOD PREPARATION TAKES ABOUT TWO HOURS OF INDIVIDUAL STUDY FOR EACH HOUR AT THE LECTURES AND THREE ADDITIONAL HOURS PER WEEK OF INDIVIDUAL PRACTICE WITH THE JAVA LANGUAGE PROGRAMMING AND THE USE OF AN INTEGRATED DEVELOPMENT ENVIRONMENT.
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2024-08-21]