LECTURER
Tutor |
Andrea Corradini
<andrea@di.unipi.it>
Matteo Busi <matteo.busi@di.unipi.it> |
Timetable | Monday 11-13, Room Fib A1
Tuesday 9-11, Room Fib C1 Thursday 16-18, Room Fib L1 |
Office hours | Click here
To fix a date, send an email to <andrea@di.unipi.it> |
For Functional Programming:
For Object-Oriented programming:
Presentation of the course |
Slides: AP-2018-01.pdf
AP-2018-02.pdf |
|||
Languages and Abstract Machines Compilation and interpretation schemes |
Slides: AP-2018-03.pdf | Suggested readings: Chapter 1 of Programming Languages: Principles and Paradigms by Maurizio Gabbrielli and Simone Martini | ||
Compilation and interpretation schemes Entry test |
Slides: AP-2018-03.pdf | The entry test is intented to evaluate if students have the necessary prerequisites of the course, namely knowledge of concepts of Object-Oriented and Functional programming. | ||
Runtime Systems and Introduction to the JVM |
Slides: AP-2018-04.pdf |
Suggested readings: JVM Internals, by James D. Bloom http://blog.jamesdbloom.com/JVMInternals.html Chapter 7: Run-time Enviroments Section 7.1, 7.2 and 7.4.1-2 of "The Dragon Book" Reference documentation: The Java Virtual Machine Specification, Java SE 8 Edition The Java Language Specification, Java SE 8 Edition |
JVM internals |
Slides: AP-2018-05.pdf |
The JVM Instruction Set |
Slides: AP-2018-06.pdf |
Suggested readings:
Chapter 2 of
The Java Virtual Machine Specification, Java SE 8 Edition Java Code To Byte Code - Part One, by James D. Bloom, http://blog.jamesdbloom.com/JavaCodeToByteCode_PartOne.html A First Taste of InvokeDynamic, by Charles Nutter, http://blog.headius.com/2008/09/first-taste-of-invokedynamic.html |
||
Room A1 |
Exercises: Inspecting the JVM Students are invited to bring their own laptop. |
Instructions: exercises_1.html Files: javaSources_1.zip |
Software needed for the exercises:
|
Software Components: an introduction | Slides: AP-2018-07.pdf |
Suggested readings: Chapters 1 and 4 of [COMP], Software Components: Beyond Object-Oriented Programming. C. Szyperski, D. Gruntz, S. Murer, Addison-Wesley, 2002. |
Software Components: the Sun approach, JavaBeans | Slides: AP-2018-08.pdf |
Suggested readings:
|
||
Reflection in Java | Slides: AP-2018-09.pdf |
Suggested readings: The Java Tutorial on Reflection API, excluding Arrays and Enumerated Types. |
||
Software Components: the Microsoft way | Slides: AP-2018-10.pdf, till page 29 |
Suggested readings: Chapter 15 of [COMP], sections 15.1, 15.2, 15.4, 15.11, and 15.12. |
||
Software Components: the Microsoft way (cont.) | Slides:
AP-2018-10.pdf, all. Reflection in CLR and C#: optional reading. |
|||
Room A1 |
Exercises: JavaBeans and Reflection in Java
|
Instructions: exercises_2.html |
Software needed for the exercises:
|
|
Frameworks and Inversion of Control | Slides: AP-2018-11.pdf, till page 32. |
Suggested readings:
|
||
On Designing Software Frameworks | Slides:
AP-2018-11.pdf, all AP-2018-12.pdf |
Suggested readings: |
||
|
Slides:
AP-2018-12.pdf, all AP-2018-13.pdf (Polymorphism) AP-2018-14.pdf (C++ templates), till page 7 |
Suggested readings:
|
||
Presentation of programming assigments on NetBeans, JavaBeans and Reflection in Java. |
First programming assignment [Deadline: November 12, 2018] |
Software needed for the exercises:
|
||
Universal Parametric Polymorphism: C++ Templates and Java Generics
|
Slides:
AP-2018-14.pdf (C++ templates) all AP-2018-15.pdf (Java Generics) |
Suggested readings:
|
||
The Standard Template Library for C++ |
Slides:
AP-2018-16.pdf (STL) |
Suggested readings:
|
Introduction to Functional Programming
|
Slides: AP-2018-17.pdf |
Suggested readings:
|
|
Slides: AP-2018-18.pdf |
Suggested readings:
|
More on Haskell and on Functional Programming
|
Slides: AP-2018-19.pdf |
Suggested readings:
|
Exercises on Functional Programming in Haskell. Students are invited to bring their own laptop. |
Instructions: exercises_3.html |
Students are invited to install the Glasgow Haskell Compiler and Interpreter (GHCI) downloadable
from https://www.haskell.org/platform/ An excellent tutorial on Haskell: http://learnyouahaskell.com |
Type classes in Haskell | Slides: AP-2018-20.pdf, all. |
Suggested readings:
|
Constructor Classes and Monads in Haskell |
Slides: AP-2018-21.pdf. |
Suggested readings: |
Exercises on Type Classes and Monads in Haskell. Students are invited to bring their own laptop. |
Instructions: exercises_4.html | An excellent tutorial on Haskell: http://learnyouahaskell.com | Lambda expressions in Java 8 | Slides: AP-2018-22.pdf |
Suggested readings:
|
The Stream API in Java 8 | Slides: AP-2018-23.pdf |
Suggested readings:
|
Exercises on the Stream API and on partial functions in Java 8. Students are invited to bring their own laptop. |
Instructions: exercises_5.html Auxiliary file: people.csv |
Suggested readings: Use of Optional in Java, http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html |
The RUST programming language | Slides: AP-2018-24.pdf |
Suggested readings: Reference documentation of Rust: |
Scripting Languages | Slides: AP-2018-25.pdf |
Suggested readings:
|
Exercises on the Stream API and on partial functions in Java 8 (cont.). Students are invited to bring their own laptop. |
Instructions: exercises_5.html Auxiliary file: people.csv Note: In the last 20 minutes the Second Programming Assignment will be presented |
Suggested readings: Use of Optional in Java, http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html |
||
Presentation of programming assigment on Haskell and Java 8 Stream API. |
Second programming assignment [Deadline: December 20, 2018]
|
|
Introduction to Python
|
Slides: AP-2018-26.pdf PythonFunction.pdf |
Suggested readings:
|
More about Python
|
Slides: AP-2018-27.pdf |
Suggested readings:
|
Exercises on Python Students are invited to bring their own laptop. |
Instructions: exercises_6.html Auxiliary files: anagram.txt, people.csv
|
Students should install the Python interpreter
from https://www.python.org/downloads/ |
Even More about Python
|
Slides: AP-2018-28.pdf |
Suggested readings:
|
Scripting in Python
|
Slides: AP-2018-29.pdf |
Suggested readings:
|
Publication of programming assigment on Scripting in Python, presented in the lecture of December 13. |
Third programming assignment [Deadline: January 15, 2019] |
|