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)