Programmazione ad oggetti 2019/2020

pages
learning outcomes

At the end of the course, students will be acquainted with basic knowledge of the object-oriented paradigm of software construction, of its basic design patterns, its incarnation in the Java programming language and the corresponding framework, including advanced aspects like GUIs, multi-threading and events.

course contents
  • Basic elements of object-oriented programming and design
  • The case of the Java programming language: overview and development tools
  • Basic functionality: classes, objects, methods, fields, and instantiation
  • Polymorphism, inheritance, reuse: interfaces and abstract classes
  • Advanced aspects: generics, annotations, exceptions, inner classes, lambda expressions
  • Basic libraries for program construction
  • I/O management and graphical interfaces
  • Elements of concurrency programming in Java
  • Brief overview of design patterns and techniques of effective programming
  • Development tools: JDK, Eclipse, Mercurial
  • Overview of C# programming and IDEs
readings / bibliography
  • Reference book:
    • Bruce Eckel. Thinking in Java -- Fourth Edition
  • Additional books:
    • Joshua Bloch. Effective Java -- Second Edition
    • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns
      The course will also rely on tutorials and documentation available on the Internet.
teaching methods

9 hours of lesson per week, typically 6 in the teaching room and 3 in the lab
In room, we will illustrate object-oriented programming techniques and details of the Java programming language, and conduct exercises to stimulate a critical attitude in students.
In lab, we illustrate various development tools, and assign developing tasks to exercise practical abilities of students.

assessment methods

Assessment is conducted in two stages, not necessarily ordered:
1) Practical test on Java programming in lab. With a couple of programming exercises in Java, including automated tests or pertaining the production of a simple graphical user interface, we assess the student's capacity of concluding quickly and with pertinence a simple programming/designing task.
2) Oral exam based on presentation of a project. In 3-persons teams, students realise a software development project in Java, producing documentation of requirements, design, and implementation. Assessment includes check of software quality and discussions of design choices. Additionally, each student presents a mini-deliverable in C# obtained by translating some of the code he/she developed during the project.
Each stage produces an evaluation in the range [0,33], and the final evaluation is the weighted average of 60% (best of the two votes) - 40% (worst of the two votes).

teaching tools

Slides projected during the lessons, published on the web site Software: Java Development Kit, Eclipse, Microsoft VisualStudio

course series