Course code 02 53 5182 00
Number of ECTS points 4
Course title in the language of instruction
Advanced Algorithms (Zaawansowane algorytmy)
Course title in Polish Advanced Algorithms (Zaawansowane algorytmy)
Course title in English
Advanced Algorithms (Zaawansowane algorytmy)
Language of instruction English
Form of classes
Lecture Tutorials Laboratory Project Seminar Other Total of teaching hours during semester
Contact hours 15 45 0 60
E-learning No No No No No No
Assessment criteria (weightage) 0.35 0.65 0.00
Unit running the course Instytut Informatyki Stosowanej
Course coordinator dr hab. Szymon Grabowski
Course instructors dr inż. Tomasz Jaworski, dr inż. Tomasz Kowalski, dr inż. Robert Susik
Prerequisites
Skills of programming in C or Java/C#, and in Python.
Course learning outcomes
  1. define fundamental computational models, their advantages and drawbacks, and recognize the cases of their successul application
  2. analyze selected advanced algorithms and data structures, with respect to their computational complexities
  3. implement selected advanced algorithms and data structures and discuss the resulting tradeoffs, e.g. space-time ones
  4. design algorithms for previously unknown problems, using the learned techniques and components
Programme learning outcomes
    Programme content Students get acquired with selected advanced algorithmic techniques and advanced data structures. Popular computational models are explained (comparison/decision tree mode, Word-RAM model, I/O model, streaming model, etc.). The topics include, i.a., sorting in the RAM model (radix sort and its variants), the Bloom filter with its variants and applications, compact and compressed data structures (e.g., the sparse suffix array, the FM-index), bit-parallelism, succinct representation of integers and graphs with fast access and selected graph algorithms.
    Assessment methods
    Ad 1: oral exam.
    Ad 2: tutorial test, oral exam.
    Ad 3: assessment of lab exercises (implementation of chosen algorithms/data structures), tutorial test, oral exam.
    Ad 4: assessment of lab exercises (implementation of chosen algorithms/data structures).
    
    
     
    Grading policies Oral exam, lab work (including acceptance of small projects), presence at laboratory classes.
    Course content LECTURE: Computational complexity (definitions and notation -- recalling and extending the knowledge from the basic A&DS course). Computational models. Advanced sorting algorithms. Modern algorithms and data structures based on hashing and their applications. The Bloom filter, its variants and applications. Techniques of bit-parallelism. Succinct data structures, including text indexes (e.g., sparse suffix array, FM-index). Selected graph algorithms (e.g. for the shortest path from a single source). LABORATORIES: Students implemented selected algorithms and data structured in a given programming language: either an efficient/compiled language (C/C++, Java, C#) is required for a given problem, or a scripting language (Python). Stress is imposed on the code efficiency, its complience with the theoretical computational complexities, and its flexibility. Relatively simple applications may be required (e.g., a simple text editor, spreadsheet, small database, a problem in bioinformatics).
    Basic reference materials
    1. Dasgupta S., Papadimitriou C.H., Vazirani U.V.: Algorithms, McGraw-Hill Education, 2006. Freely available at authors' URL: http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-Vazirani.pdf
    2. Cormen T., Leiserson Ch., Rivest R., Stein C.: Introduction to Algorithms, MIT Press, 2009
    Other reference materials
    1. Knuth D.: The Art of Computer Programming, 3rd Edition, Addison-Wesley, 1997
    2. Navarro G.: Compact Data Structures. A practical approach, Cambridge University Press, 2016
    Average student workload outside classroom
    51
    Comments
     
    Updated on 2022-02-18 15:08:11
    Archival course yes/no no