Programming II (2015/2016)

Teaching is organised as follows:
Activity Credits Period Academic staff Timetable
Teoria 4 I semestre Nicola Fausto Spoto
Laboratorio 2 I semestre Nicola Fausto Spoto

Lesson timetable

I semestre
Activity Day Time Type Place Note
Teoria Tuesday 11:30 AM - 2:30 PM lesson Lecture Hall B  
Laboratorio Wednesday 8:30 AM - 11:30 AM laboratorio Laboratory Delta  

Learning outcomes

This course provides students with advanced programming abilities and allows them to develop complex algorithms in an imperative object-oriented language such as Java and use tools and techniques that support the programming task.


From the C language to Java: similarities and differences. Command-line development tools for Java. Developing in Eclipse. Primitive types. Arrays and collections. Classes and objects. Garbage collection. Use of the hierarchy. Basic Swing programming. Javadoc. Testing with JUnit. Implementing classes. Extending classes. Enums, generic types and interfaces. Organization of the memory and recursion. Exceptions. Java collections. Streams. Annotations. Reflection. Concurrency: threads and standard library for concurrency. Use of git for collaboration and version control. Clean code and refactoring.

Assessment methods and criteria

Four exams are scattered around the year and consist in writing Java code on paper and without the help of a computer. Students must show to be able to translate algorithms into code and organize information in classes, with no significant syntactical errors.

Reference books
Activity Author Title Publisher Year ISBN Note
Teoria Cay S. Horstmann, Gary Cornell Core Java, Volume I - Fundamentals Prentice Hall - Pearson Education   978-0-13-708189-9