Diario delle lezioni (Ingegneria degli Algoritmi, A.A. 2011-2012)

Wednesday, March 7th - Introduction and overview. Administrivia. Slides: course overview

Friday, March 9th - Microscopic and macroscopic operations: from nanoseconds to seconds. External memory model (Aggarwal & Vitter): N, M, and B. Fundamental external memory bounds: scanning, sorting, searching. Data permutation: I/O-analysis of the naive linear-time algorithm, scan&sort algorithm. Back of the envelope calculations for external memory: how long does it take to sort 1TB of data?

  • The back of the envelope (Column 7 of Programming Pearls, by Jon Bentley). On-line version. Interesting and funny reading: highly recommended!

Wednesday, March 14th - Spatial and temporal locality, reuse distance. Matrix multiplication. I/O analysis of the naive algorithm. Blocking: a technique to improve temporal locality. Getting rid of the tall cache assumption (M ≥ B2): Vitter and Shriver's recursive algorithm.

Friday, March 16th - External memory sorting. 2-way mergesort: I/O analysis, recursive and iterative implementation, discussion of its key inefficiency. Multiway mergesort: analysis of the number of I/Os and of the running time (using a priority queue for minimum extraction). Can we do more than one pass? Another back of the envelope calculation.

  • K. Mehlhorn, P. Sanders. Algorithms and data structures: The basic toolbox, 2009, Chapter 5 (Sorting and selection), Section 7. On-line version.

Wednesday, March 21st - giornata Shenker-D'Ambrosio, didattica sospesa come da delibera CAD

Friday, March 23rd - Hands on external memory algorithms. Experiment 1: which B should we use? Goal: maximizing disk throughput. Experiment 2: matrix multiplication. Evaluating the effect of I/Os in computationally intensive computations.

Wednesday, March 28th - Proving lower bounds via adversary-based arguments. Two examples: 20-questions game, comparison-based sorting. Lower bound on the number of I/Os required by external memory comparison-based sorting algorithms.

Friday, March 30th - Balanced search trees by split and fuse. (2,3)-trees: implementation and analysis. Searching in external memory: B-trees.

Wednesday, April 4th - Introduction to cache-friendly algorithms. Recap on memory hierarchy. How do caches work? Sets, lines, blocks. Fundamental cache parameters. Impact of associativity: conflict misses (an example on direct-mapped caches). Cache performance metrics.

  • R. Bryant, D. O'Hallaron. Computer systems: a programmer's perspective. Chapter 6.
  • Slides on memory hierarchies: part 1

Wednesday, April 11th - The memory mountain: effect of different strides (spatial locality) and different working set sizes (temporal locality). Writing cache-friendly code: miss rate analysis for matrix multiplication with permuted loops. Programming difficulties posed by hierarchical memories. Towards a theoretical model: introduction to cache-obliviousness. Ideal cache and justification.

Wednesday, April 18th - First cache oblivious algorithms and analyses. A trivial example: array scan. Deterministic selection: the median-of-5 algorithm by Blum, Floyd, Pratt, Rivest and Tarjan. Cache miss analysis: a failed attempt, a successful attempt using a stronger base case. Formal analysis and intuition on the recursion tree.

Friday, April 20th - Binary search: stronger base case doesn't help here. Van Emde Boas recursive layout. Cache-oblivious matrix multiplication (row-major and Z-order layouts).

  • Lecture notes by Erik Demaine linked above
  • Original cache-oblivious paper by Frigo, Leiserson, Prokop, and Ramachandran, appeared in IEEE Symposium on Foundations of Computer Science, FOCS'99. The matrix multiplication algorithm described in class only applies to square matrices, and the analysis is simpler than the one contained in the paper.

Tuesday, April 24th - Prova intermedia

Wednesday, May 2nd - Lezione annullata causa missione del docente

Friday, May 4th - Didattica sospesa per 27° IT Meeting (incontro con le aziende)

Wednesday, May 9th - MapReduce: introduction

Friday, May 11th - Computational models and algorithm design in MapReduce

Wednesday, May 16th - Data streaming: applications, computational model, three puzzles (missing number, fishing, pointer and chaser).

Friday, May 18th - Sampling infinite streams: reservoir sampling (algorithm and analysis). Approximating the solution (parameter epsilon) and probabilistic guarantees (parameter delta). The frequent items problem: definitions, sticky sampling algorithm (without analysis).

Wednesday, May 23rd - Frequent items: analysis of sticky sampling. Triangle counting: a sampling-based approach.

Friday, May 25th - Sketches. Approximating the number of distinct elements via probabilistic counting: FM-sketch. Definition of frequency moments.

  • Survey and slides (linked above)

Wednesday, May 30th - Graph matching. Proving lower via communication complexity reductions.

Friday, June 1st - Amdahl's law. Performance profiling.

-- IreneFinocchi - 18 Mar 2013

Topic revision: r1 - 2013-03-18 - IreneFinocchi






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback