Salta al contenuto principale della pagina

PROGRAMMING LANGUAGES AND OBJECT-ORIENTED PROGRAMMING

CODE 61799
ACADEMIC YEAR 2021/2022
CREDITS
  • 12 cfu during the 2nd year of 8759 INFORMATICA (L-31) - GENOVA
  • SCIENTIFIC DISCIPLINARY SECTOR INF/01
    LANGUAGE Italian
    TEACHING LOCATION
  • GENOVA
  • SEMESTER Annual
    TEACHING MATERIALS AULAWEB

    OVERVIEW

    Principles of programming languages: syntax, static and dynamic semantics, and intepreters.

    Functional programming: OCaml.

    Object-oriented programming: Java.

     

    AIMS AND CONTENT

    LEARNING OUTCOMES

    • the course requires a good knowledge of imperative programming, and provides foundational notions on high-level programming and skills on theory and practice of programming paradigms, with emphasis on the functional and object-oriented ones.
    • students will extend their skills acquired in the introductory courses on programming in the small, and
      learn to develop applications starting from informal requirements and use integrated development environments

       

    AIMS AND LEARNING OUTCOMES

    Students will acquire the following skills:

    • use of the basic concepts of the object-oriented paradigm for modeling data and programming in the small; development of Java programs structured modularly to favor code reuse.
    • comprehension, correct use and implementation of common object-oriented design patterns 
    • use of the basic concepts of the functional paradigm for programming in the small; development of OCaml programs based on the most common functional and generic programming techniques
    • comprehension of the specification of a programming language and its underlying implementation issues

    PREREQUISITES

    Basic notions on imperative programming, algorithms and data types and structures.

    TEACHING METHODS

    Standard

    SYLLABUS/CONTENT

    Principles of programming languages: overview, programming paradigms; syntax, static and dynamic semantics, development of a semantics-driven interpreter.
    Object-oriented paradigm (the Java programming language): objects, classes, interfaces, inheritance and dynamic binding, casting, overloading, exceptions. Advanced features: generic classes and methods. Practical uses of the standard API, iterator and visitor design pattern. 
    Functional paradigm (the OCaml programming language): higher-order and polymorphic functions, polymorphic type inference, currying, functions on lists, tail recursion, user-defined types.

    RECOMMENDED READING/BIBLIOGRAPHY

    -Davide Ancona, Giovanni Lagorio, Elena Zucca. Linguaggi di Programmazione. Città Studi Edizioni.
    -Ken Arnold, James Gosling, and David Holmes. The Java Programming Language, Fourth Edition, Prentice Hall.
    -Emmanuel Chailloux, Pascal Manoury, and Bruno Pagano. Developing Applications With Objective Caml.
    -Josh Bloch. Effective Java (second edition). Prentice Hall.  (advanced, optional)
    -Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. (advanced, optional)

    TEACHERS AND EXAM BOARD

    Exam Board

    DAVIDE ANCONA (President)

    ELENA ZUCCA

    PIETRO BARBIERI (Substitute)

    GIOVANNI LAGORIO (Substitute)

    PAOLA MAGILLO (Substitute)

    LESSONS

    LESSONS START

    Prerequisites: basic notions of imperative programming, and algorithms and data structures.

    Class schedule

    All class schedules are posted on the EasyAcademy portal.

    EXAMS

    EXAM DESCRIPTION

    Written test. Final software project and individual discussion on it.

    ASSESSMENT METHODS

    Use of the basic concepts of object-oriented programming in the small: development of a software project, Java comprehension and programming exercises in the written test. 

    Comprehension, use and implementation of the iterator and visitor design patterns: development of a software project, Java programming exercises in the written test. 

    Use of the basic concepts of functional and generic programming in the small: OCaml programming exercises in the written test. 

    Comprehension of the specification of a programming language and its underlying implementation issues: development of a software project, exercises on regular expressions and context free grammars in the written test. 

    Exam schedule

    Date Time Location Type Notes
    20/06/2022 09:00 GENOVA Scritto 8 settembre aule 506 e 505
    11/07/2022 09:00 GENOVA Scritto 8 settembre aule 506 e 505
    07/09/2022 09:00 GENOVA Scritto 8 settembre aule 506 e 505
    19/01/2023 09:00 GENOVA Scritto 8 settembre aule 506 e 505
    13/02/2023 09:00 GENOVA Scritto 8 settembre aule 506 e 505