Programowanie funkcyjne/Tematy programów zaliczeniowych

From Studia Informatyczne

Oto przykładowe tematy programow zaliczeniowych z ubiegłych lat:

  • Wybrana(e) gry i łamigłówki:
    • kółko i krzyżyk,
    • kółko i krzyżyk 3D,
    • gomoku,
    • szachy (końcówki),
    • szachy,
    • chińskie szachy Xiang Qi,
    • reversi,
    • hex,
    • liero,
    • Pylos,
    • uproszczony backgammon,
    • bilard,
    • domino,
    • kości,
    • ScraMLe -- gra typu scrabble,
    • skrulki = scrabble + kulki,
    • Bullint (strzelanie),
    • turowa gra militarna,
    • gra typu WarCraft.
Algorytmy wykorzystywane do tworzenia strategii w grach:
  • mini-max,
  • \alpha-\beta obcięcie,
  • drzewa and-or,
  • różnorakie funkcje oceniające,
  • algorytmy genetyczne (do wyznaczenia funkcji oceniających),
  • metoda GLEM (szt. int.).
  • Łamigłówki i algorytmy je rozwiązujące:
    • Sudoku,
    • obrazki logiczne.
  • Grafika:
    • Fraktale:
      • iterowane przekształcenia liczb zespolonych (np. żółw Mandelbrota, zbiory Juli),
      • opisywane przekształceniami afinicznymi,
      • L-systemy,
      • fraktale Newtona.
    • Funkcyjnie reprezentowane obrazki i operacje na nich.
    • Animowane obrazki funkcyjne (--> Interpretery).
    • Ray-tracing.
    • Wizualizacja i układanie kostki Rubika.
    • Wyznaczanie możliwych ścian kryształów i ich wizualizacja.
    • Wykresy 3D funkcji \cal R^2 \to \cal R.
    • Interfejs 3D dla szachów (--> Gry).
  • Interpreter/semantyka języka programowania:
    • Logo (uproszczone),
    • imperatywnego języka programowania z mikrowątkami (semantyka kontynuacyjna),
    • imperatywnego języka do obliczeń numerycznych,
    • jezyka Tiny,
    • język opisujący animowane obrazki funkcyjne,
    • zintegrowany język zapytań,
    • optymalizacja zapytań bazodanowych,
    • kalkulator ze:
      • zmiennymi, przypisaniami, definicjami funkcji i wykresami,
      • zmiennymi, przypisaniami, definicjami funkcji i symbolicznym obliczaniem pochodnych.
  • Symulacje:
    • symulacja życia bakterii.
  • Struktury danych (z zastosowaniem funktorów):
    • Wielowymiarowe drzewa przedziałowe,
    • Przeszukiwanie pełnotekstowe w oparciu o B-drzewa,
    • Implementacja i wizualizacja drzew BST.
    • Algorytm Dijkstry i kopiec dwumianowy.
    • Tester struktur danych.
  • Implementacja sieci neuronowej i jej zastosowania:
    • rozpoznawanie cyfr pisanych odręcznie (OCR).
  • Implementacja algorytmów genetycznych i ich zastosowania:
    • funkcje oceniające w grach (--> Gry),
    • znajdowanie ekstremów funkcji.
  • System dowodzenia twierdzeń.
  • Generator parserów z wizualizacją.
  • Generator parserów uproszczonego XML'a w OCaml'u.
  • Wykrywanie niesamodzielnie napisanych programów.
  • Przetwarzanie strumieni danych: kompresja, szyfrowanie.
  • Wyszukiwanie podobieństw między plikami MP3.
  • Mikro-Enigma --- implementacja uproszczonej wersji Enigmy.
  • Szyfrowanie za pomocą RSA.
  • Wycena opcji w modelu dwumianowym.