70219 - Object-Oriented Programming

Academic Year 2023/2024

  • Docente: Mirko Viroli
  • Credits: 12
  • SSD: ING-INF/05
  • Language: Italian
  • Moduli: Mirko Viroli (Modulo 1) Danilo Pianini (Modulo 2) Danilo Pianini (Modulo 3)
  • Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2) Traditional lectures (Modulo 3)
  • Campus: Cesena
  • Corso: First cycle degree programme (L) in Computer Science and Engineering (cod. 8615)

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
  • Polimorphism, 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, Git 
  • Overview of OO programming in other languages

Readings/Bibliography

Reference book:
Bruce Eckel. Thinking in Java -- Fourth Edition
Additional books:
Joshua Block. Effective Java -- Second Edition Erich Gamma, Richard Elm, 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, e 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. 

Each stage produces an evaluatation 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

Links to further information

http://apice.unibo.it/xwiki/bin/view/MirkoViroli/

Office hours

See the website of Mirko Viroli

See the website of Danilo Pianini

See the website of Danilo Pianini