Code Monkey home page Code Monkey logo

tirakirja's Introduction

tirakirja's People

Contributors

pllk avatar leovaris avatar

Stargazers

Jaakko avatar Arttu Pennanen avatar  avatar Pavel Belonosov avatar Alexander Elovesi avatar Terracraft avatar Eetu avatar Marko Leinikka avatar Baobab Koodaa avatar  avatar  avatar  avatar Jukka Selesniemi avatar Samu Mäkinen avatar Antti Juustila avatar Riku Rauhala avatar Joel Hassan avatar Otso Helenius avatar Hannupekka Sormunen avatar  avatar  avatar Riku Talvisto avatar Juho Juurinen avatar Juha Tauriainen avatar  avatar Juho Gröhn avatar Rasmus Heikkinen avatar Olli Rousu avatar Paul Saikko avatar Tuomas Tynkkynen avatar

Watchers

James Cloos avatar  avatar Alexander Elovesi avatar

tirakirja's Issues

Lähestymistavat NP-koviin ongelmiin

Osiossa 15.3 voisi mielestäni mainita approksimointialgoritmit yhtenä lähestymistapana, ja olla mainitsematta satunnaisalgoritmeja, koska satunnaisuus on algoritmisuunnittelutekniikka jota käytetään hyödyksi kaikissa mainituissa lähestymistavoissa, ja satunnaisuudella ei ole mitenkään erityisen suuri rooli P vs NP asioissa (huom. konjektuurit että ZPP = BPP = P).

Pseudokoodi vs Java-koodi

Pseudokoodia voi olla vaikea lukea, jos on kokemusta vain Java-koodista. Olisi hyvä olla selkeä vertailu näiden välillä.

Hajautusrakenteiden tehokkuus

Hajautusta esitettäessä voisi mainita tilanteen jossa hajautustaulussa on tai siihen kerätään n indeksoitavaa alkiota jolloin pelkkä n-pituinen taulukko on käytännössä huomattavasti nopeampi. Näin vältetään ehkä tulevaisuudessa turha hajautusrakenteiden viljely.

Mikä on virtaus?

Sanalla "virtaus" tuntuu olevan monta merkitystä: virtaus kaarta pitkin, funktio joka antaa virtauksen joka kaarelle tai yhteisvirtaus verkossa. Tätä olisi hyvä selventää.

Taulukkolista ja hajautus

Taulukossa 4.1 taulukkolista tarkoittaa kaksipäistä listaa. Usein kuitenkin opiskelijat ajattelevat, että taulukkolista on sama kuin ArrayList tai Pythonin list. Pitäisi miettiä tähän yhtenäinen terminologia, koska nyt laskari- ja tenttitehtävissä pitää aikavaativuuksia kysyessä aina selittää, millaista taulukkolistaa tarkoitetaan, ja silti aina joku opiskelija ymmärtää väärin.

Sivun 53 alalaidassa "luokkaa n/N" on myös vähän hankala. Avoimessa osoitteenmuodostuksessa n/N on aina korkeintaan 1, ja ketjutuksessakin kai yleensä (esim. Javassa oletusarvoisesti). Tässä toisaalta ei tarkoiteta skaalautumista hyvin pienillä n (kun n voi olla paljon pienempi kuin N).

Muuten huomasin nyt, että Tirakirjassa puhutaan avoimesta hajautuksesta. Itse olen yrittänyt käyttää sanasta sanaan käännöstä avoin osoitteenmuodostus, koska joidenkin lähteiden (esim. Wikipedian) mukaan "open hashing" tarkoittaa ketjutusta (mikä tietysti on sekavaa suomensi miten vain).

Miksi O(n log n) nopeampi kuin O(n)

"Ihmettelen tuossa TiRa-kirjassa lukua 6.5. Siellä lopputulos on, että O(n log n)-algoritmi (ratkaisu 3) on nopeampi kuin O(n)-algoritmi (ratkaisu 2). Tätä ei kuitenkaan ole yhtään selitetty, että miksi näin on. Olisiko tähän joku selkeä syy?"

Koodiesimerkkien tyyli

Java- ja Python-koodien tulisi seurata kielien tyyliohjeita, jos se on mielekkäästi mahdollista.

TreeMap-esimerkki

On epäselvää, mikä on avaimen "biisoni" rooli ja mikä esimerkissä on ideana.

Rekursio ja luku 8

Järkevämpi teema luvulle 8 voisi olla rekursio ongelmanratkaisussa (peruuttava haku jne.). Nämä asiat ovat liian vaikeita luvussa 1, jossa voisi olla vain pieni esimerkki rekursiosta.

Aikajana

Kirjan lopussa voisi olla aikajana, joka esittelee algoritmien historiaa.

Pseudokoodimääritelmät olio-ohjelmointia tai ei

Kirjassa käytetään mjono.length()-tyyppistä notaatiota. Myös tyyli length(mjono) on hyvin yleinen. Voisi esitellä molemmat ja lisätä huomion siitä että notaatiot ovat ekvivalentteja ja kyse on vain abstraktiosta. Kunhan valitsee tyylinsä ja pitäytyy siinä.

Ohjelmointitekniikkaa lukuun 1

Luvussa 1 olisi hyvä käydä enemmän ohjelmointitekniikkaa, kuten:

  • taulukon käyttötapoja
  • syntaksi a ? b : c
  • muuttujan tyypin valinta, int vs. long
  • muuta ohjelmointityyliin liittyvää

Pieni typo luvussa 15

Luku 15.3: "Ideana on laskea tarkastella osaongelmia..." pitäisi varmaankin olla "Ideana on tarkastella osaongelmia...".

PDF Nordic letter handling

The pdf downloadable from Github (and distributed by my teacher for our course) has issues with Nordic letter (Ä. Ö, Å) representation.
When opening the pdf in chrome the letters render fine. However, highlighting the letters and trying to copy paste out of the pdf is problematic. For example the second sentence from foreword "Alkusanat" comes out looking like this "Ensimm¨ainen vaihe on oppia ohjelmoinnin perustaidot, kuten miten k¨aytet¨a¨an muuttujia, ehtoja, silmukoita ja taulukoita."

This has some unsavory consequences for TTS (text-to-speech): the apps typically fail to recognize the words because of this erroneous representation and default to spelling out the word letter by letter. This makes the pdf borderline unusable for both blind people and people who just wish to review chapters in public transit or such. Especially modern deeplearning TTS solutions (such as Google's WaveNet) are capable of a very natural audiobook like narration, so it is quite a shame that the pdf doesn't work for this.

In my testing importing the github pdf to Microsoft Word also breaks all the nordic letters, however replacing them and then re-exporting as pdf generates a pdf that is copy-paste'able and works with TTS. It might just be export setting related issue? For the Word exported one PDF/A compliant and Document structure tags for accessibility were enabled but it is hard to say if this alone is the reason. (Word also defaults to Cambria when importing the pdf so font might also play a part)

Would be interesting to hear if other people can verify similar behaviour with copy pasting from the pdf and TTS.

Termit englanniksi

Olisi hyvä mainita myös englanninkielinen termi, jos se ei ole ilmeinen

Kuva 11.6

Hei, hyvää työtä kirjan kanssa!

Selatessani PDF:ää löysin virheen sivulta 124.

Kuva 11.6:

  • Olen siinä käsityksessä että Floydin-Warshallin algoritmi alustaa aluksi solmun etäisyyden itseensä dist[x][x] = 0.
  • Tämän lisäksi lyhin polku 1 -> 4 on 6 eikä 8. Tämä olisi pitänyt päivittyä kierroksella 3.

Luku 10, labyrintin läpikäynti vaikeaselkoinen

Esimerkissä puhutaan lyhyimmän reitin löytämisestä A ja B välillä, mutta pseudokoodi-esimerkki on syvyyshaulle, jolla ei välttämättä löydy lyhin reitti. Tähän olisi hyvä lisätä esimerkiksi pseudokoodi myös leveyshaulle, tai vaihtoehtoisesti muuttaa esimerkkiä siten, että siinä ei haeta lyhintä reittiä.

Verkon määritelmä?

Voiko verkossa olla kahta samanlaista kaarta jne. Kirja ei nyt ota tähän kantaa.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.