- 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)
-
from Sep 20, 2023 to Dec 13, 2023
-
from Sep 25, 2023 to Oct 31, 2023
-
from Nov 06, 2023 to Dec 19, 2023
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