70219 - Object-Oriented Programming

Academic Year 2022/2023

  • Docente: Mirko Viroli
  • Credits: 12
  • SSD: ING-INF/05
  • Language: Italian
  • Moduli: Mirko Viroli (Modulo 1) Danilo Pianini (Modulo 2) Roberto Casadei (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 C# programming and IDEs

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. 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 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, Microsoft VisualStudio

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 Roberto Casadei