PROGRAMMING 2

Course objectives

General goals: Learning fundamental notions in object oriented programming through the Java language. Specific goals: Notions of object oriented programming: classes and objects, embedding, inheritance, polymorphism, static and dynamic binding, design patterns. Functional programming. Tools and methodologies of software development. The Java language. Knowledge and understanding: Knowledge of the constructs of object oriented programming, with special focus on Java. Understanding a Java program. Competence in developing small and medium size Java programs. Applying knowledge and understanding: Capability of applying basic development methodologies for small and medium size software systems. Experience with tools for developing such systems in Java. Critical and judgmental skills: Critical skills in distinguishing wrong or inefficient instructions, programming constructs and patterns from the appropriate and efficient ones. Communication skills: Presentation of the developed project. Learning ability: Capability of learning and applying new programming techniques starting from the ones viewed in the course.

Channel 1
PIETRO CENCIARELLI Lecturers' profile

Program - Frequency - Exams

Course program
- Introduction to Object oriented programming. The Java language. - Algebra and abstract data types. Classes and objects. Encapsulation. - Polymorphism (part one): extending classes and inheritance. - Abstract classes and interfaces. - Packages. Access modifiers and scoping rules. - Nested classes. Anonymous classes. Lambda expressions. - Polymorphism (part two): Generics. Generic type hierarchy. - Threads and process synchronization. Deadlock and starvation. - Reflection. - Data consistency: annotations and assertions. - Functional programming: functors and monads
Prerequisites
Basic knowledge in programming
Books
Cay S. Horstmann, Core Java for the Impatient, Addison-Wesley Professional, 2015
Teaching mode
Blended
Frequency
Recommended
Exam mode
Oral exam and discussion of the project
Bibliography
Cay S. Horstmann, Core Java for the Impatient, Addison-Wesley Professional, 2015
  • Lesson code10600241
  • Academic year2024/2025
  • CourseApplied Computer Science and Artificial Intelligence
  • CurriculumSingle curriculum
  • Year1st year
  • Semester2nd semester
  • SSDINF/01
  • CFU6
  • Subject areaDiscipline Informatiche