|Teoria||4||I semestre||Nicola Fausto Spoto|
|Laboratorio||2||I semestre||Nicola Fausto Spoto|
|Teoria||Tuesday||10:30 AM - 11:30 AM||lesson||Lecture Hall B|
|Teoria||Thursday||8:30 AM - 10:30 AM||lesson||Lecture Hall A|
|Laboratorio||Wednesday||10:30 AM - 1:30 PM||lesson||Laboratory Delta|
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. Dynamic data structures: lists and trees. Streams. Annotations. Reflection. Concurrency: threads and standard library for concurrency. Use of git for collaboration and version control. Clean code and refactoring.
6 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. The note is between 0 and 22. No later than February, students must implement a software project that will be described during the course. This project should be realized in groups of around 3 students. Its evaluation is between 0 and 10. The final note is the sum of the note of the exam and of that of the project, between 0 and 30.
|Teoria||Giovanni Pighizzini, Mauro Ferrari||Dai fondamenti agli oggetti. Corso di programmazione JAVA (Edizione 3)||Pearson Addison-Wesley||2008||978 88 7192 448 9||Testo di riferimento consigliato.|