PROGRAMMING LANGUAGES AND OBJECT-ORIENTED PROGRAMMING

PROGRAMMING LANGUAGES AND OBJECT-ORIENTED PROGRAMMING

_
iten
Code
61799
ACADEMIC YEAR
2020/2021
CREDITS
12 credits during the 2nd year of 8759 Computer Science (L-31) GENOVA
SCIENTIFIC DISCIPLINARY SECTOR
INF/01
LANGUAGE
Italian
TEACHING LOCATION
GENOVA (Computer Science)
semester
Annual
Teaching materials

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 programming techniques
  • comprehension of the specification of a programming language and its underlying implementation issues

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, inheritance and dynamic binding, casting, overloading, exceptions. Advanced features: generic classes and methods, outline on nested classes and lambda-expressions. 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, 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

Ricevimento: Appointment by email  

Exam Board

DAVIDE ANCONA (President)

ELENA ZUCCA

GIOVANNI LAGORIO (Substitute)

PAOLA MAGILLO (Substitute)

LESSONS

Teaching methods

Standard

LESSONS START

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

EXAMS

Exam description

Written and oral test. Final software project.

Assessment methods

Use of the basic concepts of the object-oriented paradigm for programming in the small: development of a software project, Java comprehension and programming exercises assigned at the written and oral (if needed) test. 

Comprehension, use and implementation of the iterator and visitor design patterns: development of a software project, Java programming exercises assigned at the written and oral (if needed) test. 

Use of the basic concepts of the functional paradigm for programming in the small: OCaml programming exercises assigned at the written and oral (if needed) 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 assigned at the written and oral (if needed) test. 

Exam schedule

Date Time Location Type Notes
03/06/2021 09:00 GENOVA Scritto
21/06/2021 09:00 GENOVA Scritto
12/07/2021 09:00 GENOVA Scritto
08/09/2021 09:00 GENOVA Scritto
20/01/2022 09:00 GENOVA Scritto

FURTHER INFORMATION

Core knowledge initially required includes imperative programming and data structures and algorithms.