hwechtla-tl: 
Hyviä aiheita teoreettisen tietojenkäsittelytieteen alalta
Olennaisesti, nämä ovat aiheita, joista voi järjestää esityksiä /
keskusteluita / työpajoja nörtti ja geek -henkisille ihmisille.
Alkuperäinen lista oli täällä:
https://wiki.helsinki.fi/pages/viewpage.action?pageId=123603803
-  miten päästä alkuun funktionaalisen ohjelmoinnin kanssa (Joel Kaasinen)
 -   funktionaaliset ohjelmointikielet (Lauri Alanko)
 -   esimerkkejä lambdakalkyylistä (Panu / Lauri / Joel)
 -   Ryhmien toiminnat & pizzan palaset (Matti Åstrand)
 -   Functional Reactive Programming (Ilmari Vacklin)
 -   Luonnollisten kielten vaativuustasot: onko Chomskyn kielihierarkialla mitään relevanssia luonnollisten kielten kannalta?  (Panu Kalliokoski / Anssi Ylijyrä)
 -   Deskriptiivinen kompleksisuusteoria (Janne Korhonen)
 -   tyyppiteoria ja curry-howard-isomorfismi (Panu? Lauri?)
 -   proof assistants (Lauri? Joel Kaasinen? Miikka Koskinen?)
 -   intuitionistic/constructive logic (Panu?)
 -   säännöllisten lausekkeiden derivointi (Juhana Laurinharju)
 -   category theory overview (with applications?) (ask Alexandr Pasharin)
 -   tietorakenteiden derivointi, zipperit (Joel / Juhana?)
 -   funktionaalisen ohjelmoinnin opettaminen lapsille (Panu Kalliokoski)
 -   rekursio (Panu Kalliokoski)
 -   äärellistilaisten automaattien käyttötapauksia (Panu Kalliokoski)
 -   äänestysjärjestelmät (Panu Kalliokoski)
 -   reifioidut jatkeet - kaikkien suoritusympäristöjen ja kontrollirakenteiden äiti (Panu Kalliokoski)
 -   Clojuren tietorakenteet (Juhana Laurinharju)
 -   monadit (Joel Kaasinen)
 -   monad transformers (Joel? Panu?)
 -   Tron-tekoälyt (Panu Kalliokoski)
 -   patch commutation (Panu Kalliokoski)
 -   Computercraft-turtlejen käyttö (Panu Kalliokoski)
 -   Eodermdrome - verkkojen uudelleenkirjoituskieli (Panu Kalliokoski)
 -   Scratch (Panu & Joel?)
 -   Logo - paras ja ystävällisin kehitysympäristö ikinä (Panu Kalliokoski)
 -   Perusasioita automaattisesta päättelystä (Panu Kalliokoski)
 -   Yleistyslogiikat (Panu Kalliokoski)
 -   Ohjelmointikielten ilmaisuvoima (Panu Kalliokoski)
 -   Tee-se-itse-fraktaali (Panu Kalliokoski)
 -   Peliteoreettisia pähkinöitä (Panu & Kalle Viiri)
 -   Peliteorian soveltamista lautapeleihin (Kalle)
 -   Matematiikan kognitiotiedettä (Kaj Sotala)
 -   Parsereiden toteuttaminen (funktionaalisilla ohjelmointikielillä) (Panu Kalliokoski)
 -   Ihmisjoukkojen simulointi: hyödyllistä tutkimustietoa, propagandaa vai kusetusta? (Panu)
 -   Graafiset ohjelmointikielet (Panu Kalliokoski)
 -   Combinator calculus: the easy way to implement (lazy) functional languages (Panu Kalliokoski)
 -   dependent types
 -   topological spaces
 -   properties of cartesian closed categories
 -   Various common combinators and their uses (in Haskell)
 -  avoimen lähdekoodin tapahtuma : mahdollisia aiheita: Docker, Ansible, vim, Git, kehitystyökalut, R, Scheme, Clojure, IPA/muu OS corporate infra
 -  avoimet formaatit?  CSV,conf suomeen, JSON, RDF
 
Blogiaiheita:
-  GDPR, mainosten kohdentamisluvan vaikutus ja mitä tietoa minusta oikeastaan on
 -  yesql, migratus ja c3p0-pooling
 -  tietorakenteiden testaus -blogikirjoitus valmiiksi
 -  intronit koodissa: lähdekoodiin upotettua huumoria
 -   tietomallinnus, metatiedot, protokollat
 -   oudot ohjelmointikielet, voiko niistä oppiakin jotain?
 -   kilpailutukset, miten softaa voi edes hankkia?
 -   kommunikointi koodereiden ja tavisten välillä
 -   mitä siitä koodauksesta siis kannattaa opettaa?
 -   versiohallinta: mikä on käytännöllistä, mikä turhaa viilausta?
 -   datan rooli CI:ssä ja CD:ssä, miten se siirretään ja propagoidaan?
 -   Unix vastaan Java
 -   Lightweight issue tracker in version control
 -   Static typing, dynamic typing, strong typing, shitty typing - Clojure esimerkkinä huonosta dynaamisesta tyypityksestä
 -   Static duck typing - minimum and maximum types, field-relational semantics
 -   Using SQL from code
 -   GraphQL
 -   rekursio, korkeamman asteen funktiot, monadinen ohjelmointi - monta eri ratkaisua kokoelmien läpikäyntiin
 -   poikkeusten käyttötapoja
 -   funktionaalinen ohjelmointi Pythonilla
 -   miten ne julkiset hankinnat sitten pitäisi hoitaa?  muistivihot vs rakennukset vs joku
 -   prosessiparannukset kilpailuvalttina
 -   miten voi olla avoin firmakulttuurin suhteen? 
 -   joku yhteenvetokirjoitus Principles of Modern Software Development -koulutuksesta
 -   Tietorakenteiden testaus
 -   mitä APIen jälkeen?
 -   buildisysteemittömästä Clojuresta
 -   komonadit + zipperit stilisoituna
 -   Hyvät CD-käytännöt
 -   cfn+aws+ecs+docker+täysautomaatio
 -   esoteeriset ohjelmointikielet
 -   mediakasvatusyhdistykselle vallasta ja ohjelmoinnista
 -   työnjohdon korvautuminen ohjelmoinnilla
 
FP monthly-aiheita:
-  Deutch-Schorr-Waite : Miten tehdään garbage collectori parillakymmenellä koodirivillä
 -  Suffiksitaulut : Paljon tarvetta nopeille hauille? Indeksoi data ja voita! Vain lineaarinen maksu.
 -  Microlisp : Lisp in 15 minutes. Esitietona parsintafunktiot ja Deutch-Schorr-Waite.
 -  Kieliteoria 101 : Formaalien Kielten ja tilakoneiden käyttö ja hyväksikäyttö koodiesimerkein.
 -  Kombinaattorilogiikka 101 : Miten laskea kaikki mahdollinen kahdella symbolilla, oikeasti.
 -  Parserikombinaattorit : Kuin recursive descent, mutta funktionaalisemmin.
 -  Clojurescript-Javascript interop     
 -  funktionaalisen ohjelmoinnin opettaminen lapsille : hands-on: vihjeitä, pointtereita, harjoitusaiheita
 -  rekursio : ehkä monipuolisin ohjelmointitekniikka ikinä
 -  patch commutation : Miten git rebase toimii (tai pitäisi toimia)
 -  esimerkkejä lambdakalkyylistä : Miten ihmeessä pärjää, kun ainoa tietorakenne on funktio?
 -  Functional Reactive Programming : Tapahtumien mallintaminen tietorakenteina
 -  tyyppiteoria ja curry-howard-isomorfismi : Miksi ihmeessä funktioiden tyypit ovat samalla valideja logiikkalauseita?
 -  tietorakenteiden derivointi, zipperit : helposti päivitettäviä applikatiivisia tietorakenteita (sydän)
 -  monadit : Lähinnä se, mitä niillä voi tehdä ja miten
 -  Logo - paras ja ystävällisin kehitysympäristö ikinä : Mitä nykyiset ohjelmointiympäristöt voisivat oppia 70-luvulta?
 -  funktionaalinen ohjelmointi Unix-työkaluilla : Komentoriviltä voi tehdä ihmeitä.  Ja se on nopeaa.
 -  Point-free notation : Miten ymmärtää niitä käsittämättömiä kombinaattoreilla määritettyjä funktioita?
 -  Katenatiivinen ohjelmointi : Ohjelmat, jotka ovat vielä lyhyempiä kuin funktionaaliset yleensä
 -  Applikatiivisia tietorakenteita : Tehokas funktionaalinen ohjelmointi vaatii monipuoliset tietorakenteet.
 -  Makro-ohjelmointi : Kielen laajentaminen uusilla rakenteilla ja mitä hyötyä siitä on
 -  Clojure-makrot : Esimerkkejä makrojen hyödyllisestä (ja hyödyttömästä?) käytöstä
 -  Clojure test.check-generaattorit monadina : Kuinka generoin testeille syötettä ja sälilytän mielenterveyden
 -  Hash Array Mapped Tries : Miten Clojuren tietorakenteet (vector ja hash-map) toimivat ja miks ne on niin tehokkaita
 -  konferenssin aikataulu & ohjelma core.logic:lla : Automaattisesti päivittyvä konferenssiohjelma rajoiteohjelmointina
 -  unifikaatio : Salainen algoritmi automaattisen tyyppi-inferenssin ja logiikkaohjelmoinnin taustalla
 -  RRB-vektorit : Mahtava uusi funktionaalinen tietorakenne (fingertree, relaxed radic-balanced trees)
 -  Rekursion eristäminen : Miten rekursiivisen koodin voi yleistää parametrisoimalla; sekä kiva tekniikka (reduce)en, jonka reducer kuljettaa useampia arvoja
 -  Hajautetut laiskasti synkronoidut tietorakenteet : CRDT, OT ja diffpatch -tekniikat tiedon synkronointiin mielivaltaisessa tiedonvaihtotopologiassa
 -  Transduktorit : yhdisteltävät abstrahoidut tiedonprosessointikomponentit
 -  CPS (jatkeohjaustyyli) : Continuation passing style on ohjelmointitapa, jossa funktio ei palauta arvoa suoraan vaan sille annetaan argumenttina "jatke", toinen funktio, jolle funktio antaa syötteeksi tuloksensa.  CPS:llä pystyy tekemään kaikenlaisia muuten hankalia kontrollirakenteita ja se on myös yksi tapa toteuttaa poikkeus-, indeterminismi- ja korutiinimonadeja.
 -  datan käsittelyä clojurella : joku vastaan tullut ongelma, jossa on esim. pitänyt kaivaa isosta tietomassasta esiin jotain clojurella.  (Panulla on yksi esimerkki: huonosti dokumentoidun rajapinnan JSON-objektien pakollisten ja valinnaistan avainten etsintä)
 -  yksinkertainen regexp-toteutus : jos ei ole kiinnostunut indeterminismin eliminoinnista, säännölliset lausekkeet on helppo toteuttaa rekursiivisesti.
 -  numeerisia ongelmia clojurella       
 -  linssit ja muut optiikat : funktionaalinen tapa käsitellä ja päivittää osaa tietorakenteesta, ynnä muuta, Jyri-Matti Lähteenmäki:n materiaalit: https://lahteenmaki.net/dev_*16/
 -  laiskuus tietorakenteissa ja algoritmeissa : Miten faktoroin koodin siten, että (rekursion/iteraation) laskentalogiikka ja lopetusehto ovat erillään?  On yleensä myös siistimpää kirjoittaa monta kompositiolla yhdistettävää käsittelyvaihetta äärettömille tietorakenteille kuin yhdistää kaikki käsittelyvaiheet yhteen funktioon.
 -  Clojure-refaktorointi hands on : Tuo kamalimmat Clojure-koodipätkäsi näytille!  Mietitään yhdessä, miten niistä saa / olisi saanut nätimpiä.
 -  Puiden uudelleenkirjoitus : yksi näkökulma siihen, mitä funktionaalinen ohjelmointi on
 -  Lispiä mikrokontrollerilla : katsotaan, miten Trinket M0 -mikrokontrollerilla ajetaan minimalistista lisp-toteutusta
 -  applikatiiviset parserit : tehdään Haskellilla applikatiivisia parsereita yksinkertaisille kielille
 -  Haskell 101 : yritetään huolehtia, että ihmiset osaavat ainakin lukea Haskellia, mieluusti vähän kirjoittaakin
 -  Tyypitetty API fullstack typescriptilla : Tapausesimerkki siitä, miten väärinkäytetään typescriptia tuottamaan REST API, jossa on määritelty syötteiden ja tulosten rakenne tyypeillä siten, että epäyhteensopivuus serverin ja clientin välillä tulee ilmi tyyppivirheiden kautta
 -  REPL: mitä kaikkea saa ja pitää odottaa REPLiltä? : 
    - human-readable representation for outputs
    - human-readable error messages
    -- debugger for error situations
    - history
    - search
    - (auto)reload
    - tracing
    - in-place edit
    -- saving definitions from repl
    - access to all state
    - reflection
    - documentation
    - source
    - possible to make short names and use names in a short way
    - autosave
 
Liittyviä sivuja Wikissä:
kommentoi
 (viimeksi muutettu 28.10.2018 20:04)