|Teoria||4||I semestre||Nicola Fausto Spoto|
|Laboratorio||2||I semestre||Nicola Fausto Spoto|
|Teoria||Tuesday||11:30 AM - 2:30 PM||lesson||Lecture Hall B|
|Laboratorio||Wednesday||8:30 AM - 11:30 AM||laboratorio||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. Java collections. Streams. Annotations. Reflection. Concurrency: threads and standard library for concurrency. Use of git for collaboration and version control. Clean code and refactoring.
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.
|Teoria||Cay S. Horstmann, Gary Cornell||Core Java, Volume I - Fundamentals||Prentice Hall - Pearson Education||978-0-13-708189-9|