Course Information
This is a course about the practice of programming, an attempt to expose students to the development of real programs. Programming is more than just writing code. Programmers must also assess tradeoffs, choose among design alternatives, debug and test, improve performance, and maintain software written by themselves and others. At the same time, they must be concerned with compatibility, robustness, and reliability, while meeting specifications. Advanced Programming is about programming, not about a specific programming language. The main objectives of this course are:- to provide the students with a deep understanding of high level programming concepts and metaphors and which are their costs and limitations
- to acquaint the students with modern principles, techniques, and best practices of sophisticated software construction
- to introduce the students to techniques of programming at higher abstraction levels
Regular class attendance is required and class participation helps.
Lecture Schedule
- Monday: 09:00 -- 11:00 Room N1.
- Wednesday: 16:00 -- 18:00 Room N1.
- Thursday: 09:00 -- 11:00 Room C1 ;
Study Materials
The readings for this course will mostly be in the form of handouts that are periodically distributed. All the handouts will be available online, so if you miss a class or are taking the course remotely, don't worry, everything will be posted.- Functional Programming in OCAML. Reading: Real world Ocaml: online book
- Concurrent Programming: Reading >Concurrent Object Oriented Programming: Notes Notes (pdf)
Policies
Assessment Method: At its core, Advanced Programming is a course about programming. Accordingly, this course will primarily build around programming. This course will have programming assignments and a comprehensive final
Lectures
Notes from lectures and further readings.
- Introduction to Functional Programming 1 lecture (pdf)
- Introduction to Functional Programming 2 lecture (pdf)
- Introduction to Functional Programming 3 lecture (pdf)
- Programming in OCAML lecture (pdf)
- OCAML Programming Tools lecture (pdf)
- OCAML Programming Tools code (zip)
- Higher Order Functions lecture (pdf)
- Closure lecture (pdf)
- Data Types lecture (pdf)
- Programming Example: DFA lecture (pdf)
- Implementing an Interpreter lecture (pdf)
- Am Environment-based Interpreter lecture (pdf)
- Homework 1 The problem (pdf)
- Python: an introduction Tutorial (pdf)
- Python: Functions lecture (pdf)
- Python: Functional Programming lecture (pdf)
- Python: Object Oriented Programming lecture (pdf)
- Python: Programming Examples Python Code Examples (zip)
- Homework 2 The problem (pdf)
- Java: Concurrent Object Oriented Programming Part 1 (pdf)
- Java: Concurrent Object Oriented Programming Part 2 (pdf)
- Java: Concurrent Object Oriented Programming Part 3 (pdf)
- Concurrent Object Oriented Programming: FineGrain, Lazy and Lock-free synchronization policies Note (pdf)
- Homework 3 The problem (pdf)
- Introduction to the Scala programming language Scala Basics
- Introduction to the Scala programming language Scala Basics 2
- Introduction to the Scala programming language Scala Collections (1)
- Introduction to the Scala programming language Scala Collections (2)
- Introduction to the Scala programming language Polymorphism
- Introduction to the Scala programming language Concurrency
Archive
Advanced Programming AA 205-16 aa2015-16FAQ
News
The lecture of October 12 will be in Room N1 from 14:00 to 16:00Contacts
Prof. Gian Luigi Ferrari:
E-mail: giangi at di.unipi.it