- 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