Tietojenkäsittelytieteen yliopisto-opiskeluun liittyviä lainauksia

Quotations Related to University Studies of Computer Science

Sisältö / Table of Contents

  1. Oppimisesta ja opettamisesta / On Learning and Teaching
  2. Sivistyksestä, oppimisesta ja kouluttamisesta
  3. Opiskelijamääristä
  4. Harjoituksista ja tenteistä / On Exercises and Exams
  5. Opintosuoritusvilpistä
  6. Ohjelmoinnista ja sen oppimisesta / On Programming and Learning to Program
  7. On Experimentation
  8. On Problem Solving and Scientific Discovery
  9. Kielestä ja kirjoittamisesta / On Language and Writing
  10. On Scientific Literature / Tieteellisestä kirjallisuudesta
  11. "Mielenkiintoisia" koevastauksia
  12. Teoreettisista pohjatiedoista
  13. Määritelmistä ja abstraktioista / On Definitions and Abstractions
  14. On Mathematics and Computer Science / Matematiikasta ja tietojenkäsittelytieteestä
  15. On Proofs
  16. Oppimateriaalista / On Course Material
  17. On Recursion
  18. On CS Curriculum Requirements
  19. Jatko-opiskelijoille / For Post-Graduate Students
  20. On Knowledge and Thinking
  21. On Quotations
  22. Useful Advice

Oppimisesta ja opettamisesta / On Learning and Teaching

Yliopisto-oppimisen pitää pakottaa tekemään töitä, ratkaisemaan ongelmia ja perustelemaan tehdyt valinnat.
- Suomen ylioppilaskuntien liiton puheenjohtaja Tommi Laitio Suomen Kuvalehdessä 16–17/2003
Opetuksen tehtävänä on kasvattaa opiskelijoita vastuuseen itsestään ja kehittää valmiuksia osallistua yhteiskunnalliseen toimintaan. Kyse on siis aktiiviseksi saattamisesta, mikä koskee kaikkia oppijoita, ei vain vahvojen ja nopeasti oppivien joukkoa. On tärkeää huomata, että aktiivisuus omassa oppimisessa ja itseohjautuvuus, valtautuminen, ovat osa vaikuttamiseen sekä ennen kaikkea osallisuuteen ja demokraattisuuteen kasvamista. Tämä on erittäin tärkeä osa oppimisen ja opettamisen tavoitetta.
- O. Luukkainen: Opettajan työn ydintä etsimässä. Opettaja 44–45/2005, s. 18.
"[...] edelleenkin yliopistossa opiskelu on nyrkit savessa tapahtuvaa opiskelijan omakohtaista toimintaa. Siinä parhaimmankin luennoitsijan kateederikoreografiat ja powerpointshowt voivat vain auttaa alkuun."
- Prof. Esko Ukkonen Kymenlaakson Osakunnan Kypsä-lehdessä julkaistussa kirjoitelmassa "Yliverstas".
"Oppimista ei tapahdu, ellet suostu opiskelemaan määrätietoisesti ja tavoitteellisesti, pistämään nenää kirjoihin ja lukemaan."
Kasvatustieteen professori Kari Uusikylä, AJASSA (Nordean asiakaslehti) 3/2006.
Learning results from what the student does and thinks, and only from what the student does and thinks. The teacher can advance learning only by influencing the student to learn.
- H. Simon (according to Richard Pattis of Carnegie Mellon University; this quotation, like several others, is borrowed from his page Quotations for Learning and Programming.)
We think too much about effective methods of teaching and not enough about effective methods of learning. No matter how good teaching may be, each student must take the responsibility for his own education.
- J. Carolus S.J.
"I cannot teach anybody anything, I can only make them think."
- Socrates (470–399 BC) (but see also some nihilistic comments about making someone think.)
The mediocre teacher tells. The good teacher explains. The superior teacher demonstrates. The great teacher inspires.
- W. A. Ward
The first rule of teaching is to know what you are supposed to teach. The second rule of teaching is to know a little more than what you are supposed to teach.
- G. Polya: How to Solve It. Princeton University Press, 1945 (and Expanded Princeton Science Library Edition, 2004).
"One comment said that it would be best improvement of pedagogy to force me to watch videos of my own lecturing. (cheerless laughter)"
- A professor colleague on student feedback of his teaching
"[...] Henkinen rakenteeni on sellainen, etten opi mitään pakolla. Mutta kun annetaan tilaisuus oppia asioita rauhassa ja omaan tyyliin, tuloksia tulee. En usko olevani tässä suhteessa kovinkaan poikkeava.

[...]

Oppimistyylejä on monenlaisia, samoin kiinnostuksen kohteita. Pakottamalla saadaan tuloksia vain lyhyellä aikavälillä."

- Juha Haataja kolumnissaan tietoyhteys-lehdessä 4/2006

Do the teachers still have some relevant role in helping students to learn, given the abundance of easily available information? I think they do:

"The teacher sees his job as one of processing very tough material into more easily digestible nutrients for rather simple minds."
- D. Fox: Personal theories of teaching. Studies in Higher Education, 8(2), 1983, 151-163; according to Nira Hativa on p. 157 of her book Teaching for Effectice Learning in Higher Education, Kluwer Academic Publishers, 2000.

Sivistyksestä, oppimisesta ja kouluttamisesta

"Sivistynyt tietää tiedon rajat. Syvästi sivistynyttä henkilöä leimaa ymmärtävä levollisuus, toleranssi tiedon puutetta kohtaan ja ennen kaikkea pidättyvyys tuomitsemisessa. Myös tietynlainen varovaisuus, ellei haluttomuus, opettaa."
- Prof. Kari S. Tikka (1944–2006) Helsingin Sanomien Kuukausiliitteessä, lokakuu 2005.
"Minulla on teesi: jos hankkii vahvan osaamisen jollakin alueella, osaamisen halu tarttuu ja heijastuu muihinkin asioihin."

"Jos ei rakasta ketään, ei sivistykselläkään ole merkitystä. Tieto ei muutu ymmärrykseksi."

- Ohjaaja Kari Heiskanen Helsingin Sanomien Kuukausiliitteessä, lokakuu 2005
Snellmanille kunnolla tekeminen liittyi sivistymiseen. Hänen mielestään korkeakoulussa on opittu jotain vasta silloin, kun käsitetään, että sivistysprosessi on koko elämän kattava vakaumus. Joka suorittaa yliopiston saadakseen sieltä maisterin paperit, kieltää itse ihmisyyden, sillä vasta sivistys tekee meistä ihmisiä.

[...] Snellman ei katsoisi suopeasti graduntekijöitä, jotka haluavat nopeasti maisterin paperit, eikä myöskään tohtoritehtaiksi muuttunutta yliopistojärjestelmää.

Hänen mielestään opiskeluun tulee vihkiytyä tosissaan.

Snellman kritisoi sellaisia akateemisia opintoja, jotka ovat pelkkää kurssien päähän pänttäämistä, tenttien suorittamista ja opintokokonaisuuksien kasaamista. Luennoillakin käydään vain mielistelemässä kuulustelijaa, oppimassa hänen mielifraasinsa.

[...] Snellman ei kannattanut koulutusta, vaan sivistystä. Näiden kahden erottaminen oli osa Snellmanin filosofiaa.

- J. Holvas: "Ketä Jii Vee tänään kiinnostaa?" Helsingin Sanomat, 8.1.2006, s. C1
Yksilön tiedot ovat täysin tyhjän päällä eivätkä ansaitse tietämisen tai sivistyksen nimeä, jos ne eivät ole itsenäisesti hankittua, ajateltua ja yksilölliseksi kokonaisuudeksi muokattua tietoa.
- J.V. Snellman artikkelissa '"Suomi" ja isänmaallinen kirjallisuus' Saima-lehden numerossa 1, 4.1.1844.
(J. V. Snellmanin kootut teokset, Osa 6, s. 29)
Hollywood-elokuvissa sivistys- ja koulutusosio sivuutetaan nopealla leikkauksella. Päähenkilö syventyy paksuihin opuksiin sekunniksi.

Asemiin vaaditaan kompetenssia. Se on suomeksi: työtä, työtä, työtä. Jonkinlainen kiinnostus johonkin asiaan ei ole pahitteeksi.

- Sami Vainio kolumnissaan Savon Sanomissa 6.12.2006

Opiskelijamääristä

"Ainakin ennen muinoin ne, joilla ei ollut edellytyksiä, karsiutuivat. Nämä aineet [assyrologia ja indologia] ovat varsin vaativia. Nykyään tilanne saattaa olla toinen siksi, että laitoksia painostetaan määrärahojen vähentämisen uhalla 'tuottamaan' mahdollisimman paljon maistereita ja tohtoreita, mistä seuraa väistämättä tason lasku. Mihin ne maisterit ja tohtorit pannaan?"
- Virpi Hämeen-Anttila Helsingin Sanomien Kuukausiliitteessä, heinäkuu 2003

Harjoituksista ja tenteistä / On Exercises and Exams

"Tämä tehtävä on liian vaikea: joutuisin oppimaan jotain pystyäkseni ratkaisemaan sen."
- Anonyymi opiskelija ohjelmointia vaatineesta tehtävästä syventävien opintojen valinnaisella kurssilla (Tietämyksen muodostaminen, HY 1998)
Perhaps I can summarize all of these remarks by saying that methods are more important than facts. The educational value of a problem given to a student depends mostly on how often the thought processes that are invoked to solve it will be helpful in later situations. It has little to do with how useful the answer to the problem may be.
- D.E. Knuth, Are Toy Problems Useful? Chapter 10 in Selected Papers on Computer Science, CSLI Publications and Cambridge University Press, 1996.
I've been requested to give out "correct" solutions to the exercise assignments. I'll do that selectively, mainly for the longer code samples, which are impossible to be written down during the exercise session.

(I'm doing this rather reluctantly because looking at the solutions may lead you to wrong tracks. I'd wish the process of independently applying knowledge and understanding hopefully gathered at the lecture, and information available in the references to solving the given problems to be a rewarding educational experience. Looking at the outcome of this process, that is, the "solutions" is less fruitful.)

- P. Kilpeläinen, Structured-Document Processing Languages: Selected Solutions (Spring 2003)
Questions are the important thing, answers are less important. Learning to ask a good question is the heart of intelligence. Learning the answer---well, answers are for students. Questions are for thinkers.
- R. Schank (in "The Connosseur's Guide to the Mind")
Opiskelijan tulisi harjoitella muodostamaan sellaisia ratkaisuja, joista voi kontrolloida, onko vastaus oikein. Eihän insinööri käytännössäkään voi tarkistaa jonkin kirjan toiseksi viimeiseltä sivulta, onko hän ratkaissut kohtaamansa ongelman oikein.
- Pertti Laininen (1940–2006) kirjansa Todennäköisyyslasku ja tilastomatematiikka (Otatieto Oy 1979) alkusanoissa
"jälkimmäisessä välikokeessa kysyttiin paljon sellaisia asioita jotka käytiin vain tunnilla läpi --> ei ollut harjoituksissa (tietenkin aihealuetta sivuttiin jollain lailla) --> harjoitteliko oppilaat vääriä asioita? [...] Näin jälkikäteen ajateltuna ehkä helpommalla olisi päässyt jos vain olisi ilmoittautunut suoraan lopputenttiin."
- Algoritmien suunnittelu ja analysointi (syksy 2003) -kurssin palautteesta
Opiskelun ja opetuksen päämäärä on mieluummin oppiminen kuin tenttiin valmentautuminen. Opintojaksojen läpäiseminen minimaalisella osaamisella on epäilemättä helpompaa kuin laadukas oppiminen.
- P. Kilpeläinen, 2004
It is difficult, if not impossible, for anyone to learn a subject purely by reading about it, without applying the information to specific problems and thereby being encouraged to think about what has been read. Furthermore, we all learn best the things that we have discovered ourselves.
- D.E. Knuth: The Art of Computer Programming, Volume 4A / Combinatorial Algorithms, Part 1. Addison-Wesley, 2011, p. xi.

Opintosuoritusvilpistä

"Luokittelen tenttivilpin samaan kategoriaan keltaisen lumen syömisen kanssa."
- Risto Honkanen, 2007
"Hyvin sanottu. Touhu on nimenomaan tekijälle itselleen haitaksi, mutta siitä huolimatta tai juuri sen takia aikuisten/opettajien pitäisi jaksaa sitä estää."
- P. Kilpeläinen, 2007

Ohjelmoinnista ja sen oppimisesta / On Programming and Learning to Program

What is the central core of the subject [computer science]? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread which gathers these disparate branches into a single discipline. My answer to these questions is simple -it is the art of programming a computer. It is the art of designing efficient and elegant methods of getting a computer to solve problems, theoretical or practical, small or large, simple or complex. It is the art of translating this design into an effective and accurate computer program.
- C.A.R. Hoare (1934 –)
Programming is an essential skill that must be mastered by anyone studying computer science. [... however ...] Focusing on programming to the exclusion of other topics gives students a limited sense of the discipline, thereby reinforcing the common misperception that  'computer science equals programming.'
- Computing Curricula 2001 - Computer Science. Final Report of the joint tasks force on computing curricula by IEEE Computer Society and Association for Computing Machinery, December 2001; Section 7.2.
"Varsinainen ohjelmointi ei kiinnosta yhtään."
- Anonyymi opiskelija perusteluissaan ohjelmistotekniikan linjan valinnalle syksyllä 2005
"I have a good idea why it's hard to verify programs. They're usually wrong."
- Manuel Blum at FOCS 94 (according to Ian Parberry)
...I think that computing per se is a useful thing; learning it is difficult for most people, but ... there is no reason why the task cannot be made mildly entertaining and fun.
- F. Gruenberger, 1976, according to D.E. Knuth, Are Toy Problems Useful? Chapter 10 in Selected Papers on Computer Science, CSLI Publications and Cambridge University Press, 1996.
The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be. ... The computer resembles the magic of legend in this respect, too. If one character, one pause, of the incantation is not strictly in proper form, the magic doesn't work. Human beings are not accustomed to being perfect, and few areas of human activity demand it. Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.
- F. Brooks ("The Mythical Man Month", pages 7-8)
If you don't think carefully, you might believe that programming is just typing statements in a programming language.
- W. Cunningham
My basic idea is that programming is the most powerful medium of developing the sophisticated and rigorous thinking needed for mathematics, for grammar, for physics, for statistics, for all the "hard" subjects.... In short, I believe more than ever that programming should be a key part of the intellectual development of people growing up.
- S. Papert (in "The challenges of IDC: what have we learned from our past?" by D. Kestenbaum, CACM Vol 48, No. 1 (January 2005), 35-38)
It goes against the grain of modern education to teach students to program. What fun is there to making plans, acquiring discipline, organizing thoughts, devoting attention to detail, and learning to be self critical.
- A. Perlis
"In the end, only familiarity with the tools and techniques of the field will provide the right solution for a particular problem, and only a certain experience will provide consistently professional results."
- R. Fielding, The Technique of Special Effects Cinematography (according to The Practice of Programming by B.W. Kernighan and R. Pike, Addison-Wesley, 1999)
To some extent we claim that the composition of [...] programs is a skill learned by apprenticeship or osmosis, and most definitely by practice. For simple relationships, the best axiomatizations have an aesthetic elegance which look obviously correct when written down. Through solving the exercises, the reader may find, however, that there is a difference between recognizing and constructing elegant [...] programs.
- L. Sterling and E. Shapiro: The Art of Prolog, p. 51. MIT Press, 1986. (They write about logic programs, but I think that the quote applies to learning to construct programs in general, too.)
A class, in Java, is where we teach objects how to behave.
- R. Pattis
Ohjelmoinnista jatko-opintojen osana ks. Jukka Paakin mielipide alla.

On Experimentation

Scientists build to learn; Engineers learn to build.
- F. Brooks
It is easier to measure something than to understand what you have measured.
- Anonymous
Furious activity is no substitute for understanding.
- H. H. Williams

On Problem Solving and Scientific Discovery

In general, when presented with a problem, we hope that students will take a systematic approach to it. In the touchy-feely faculties, they study things like problem-solving skills. The trouble with studying problem-solving skills is that to lean them [...] you have to do them. So unless you solve some problems that you heretofore could not solve, what do you learn? Please don't misinterpret me. Problem-solving skills as formalized are tremendously valuable; I just don't see them as a subject of study in their own right, and I don't see that they can be learned by talking about solving problems, or by outlining half-assed solutions to problems that would take a professional months. To bring this back to CS, I don't believe one can learn to program without programming, to build a compiler without building one, methodologies for programming-in-the-large without programming-in- the-large, and so on.
- Gordon V. Cormack in his message "Are CS labs too time-consuming?", University of Waterloo, 1994, which discusses teaching of programming and problem solving skills
"The Feynman Problem-Solving Algorithm: (1) write down the problem; (2) think very hard; (3) write down the answer."
- Murray Gell-Mann, according to Ian Parberry

(The above Problem-Solving Algorithm was probably given as a joke, but I think it carries a lot of wisdom. For sure it is a rough description of problem solving, but on the other hand, for solving challenging problems all of the steps (1), (2) and (3) are essential. Don't try to do without any of them.)

If you are inclined to be a pedant and must rely on some rule learn this one: Always use your own brains first.
The intelligent problem solver tries first of all to understand the problem as fully and as clearly as he can. Yet understanding alone is not enough; he must desire earnestly to obtain its solution. If he cannot summon up real desire for solving the problem he would do better to leave it alone. The open secret of real success is to throw your whole personality into your problem.
- G. Polya: How to Solve It. Princeton University Press, 1945 (and Expanded Princeton Science Library Edition, 2004).
Results aren't obtained in a short period of time: We talked about problems and different approaches, working on the solutions at the office and thinking about them at home. Ideas came to us, and we would arrive the next morning, excited, and talk about them. Maybe the idea would not ultimately work out, maybe it would, or maybe it would suggest another idea. At the end, we had something complete that made everything obvious, that made us realize how we should have attacked the problem. It takes a long time to realize the right form.
John E. Hopcroft in the 1986 Turing Award interview by K.A. Frenkel with himself and Robert E. Tarjan, CACM 30, 3 (March 1987), 214-222.
In my opinion, an open mind, high antennae, a solid background in the relevant disciplines, and hard work are the most important elements of discovery. As a judge once said, "Inspiration only comes to the law library at 3 AM". This is even more true in science. Flexibility and sensitivity to the unexpected are crucial.
Ron Shamir, according to N.C. Jones and P.A. Pevzner, An Introduction to Bioinformatics Algorithms, MIT Press, 2004.

Kielestä ja kirjoittamisesta / On Language and Writing

"Tämä tehtävä suoritetaan palvelin päässä."
"Seuraavaksi ohjelmalle syötetään ctrl-näppäin."
"Tällaisella kaaviolla voi olla äärettömän monta instanssia, mutta yleensä niistä talletetaan järjestelmään vain äärellinen määrä."
- Anonyymien opiskelijoiden pro gradu -tutkielmista
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.
- E. Dijkstra (1930–2002)
That language is an instrument of human reason, and not merely a medium for the expression of thought, is a truth generally admitted.
- G. Boole (1815–1864)
The real technology -behind all our other technologies- is language. It actually creates the world our consciousness lives in.
- A. Codrescu
Precise language is not the problem. Clear language is the problem.
- R. Feynman (1918–1988)
The first rule of style is to have something to say. The second rule of style is to control yourself when, by chance, you have two things to say; say first one, then the other, not both at the same time.
- G. Polya: How to Solve It. Princeton University Press, 1945 (and Expanded Princeton Science Library Edition, 2004).
This report must go beyond an examination of details to generate a useful synthesis for the intended audience.
- from the Guiding Principles of the Computing Curricula 2005 Overview Report. I think that this is a good maxim for any scientific study, essay or thesis, too.

On Scientific Literature / Tieteellisestä kirjallisuudesta

How does science work and why is the literature so important? Most of you read books, not what we call the primary scientific literature, the conferences and journals in which the results of research first appear. The primary literature tells us where the "cutting edge" of science is at any moment. It also is the permanent record of what we have learned about the world. Without this literature, we'd have no electricity, cars, planes, computers, antibiotics -- nothing.
- Prof. Robert P. Futrelle in his talk for PhD students, December 2002
"If I have seen further it is by standing on the shoulders of giants."
- Isaac Newton (1642-1727), in a letter to Robert Hooke
"Huh! I wouldn't dare to approach any giant; I sometimes try to see further by standing on the toes of people not too much taller than myself."
Pekka Kilpeläinen (1962- ), innerpersonal communication
"Jaa, eikös ACM olekaan lehti?"
- Muuan opiskelija gradunsa lähdeluetteloon kohdistuneesta kommentista
"Well, I thought that ACM is a journal."
- An anonymous student to a comment on the list of references in his Master's thesis
"What are scientific publications?"
- An anonymous colleague

"Mielenkiintoisia" koevastauksia

(Algoritmien suunnittelu ja analysointi; Huom: allaolevissa ei ole välttämättä mitään järkeä!)

[Selitä lyhyesti Turingin kone]:

"... k+1 on deterministinen operaatio. Kompleksisuuksista turingin koneessa syötöllä w tapahtuu laskuja vähintään t(n). Turingin kone käyttää apulaskuja ja pientä vakiota c niitä varten siirtäen talletettavaan paikkaan esim. (jk+1)c + 2 tai jotain sinnepäin. Nämä on hajasaantikone tyyppisiä esimerkkejä liittyen turingin koneeseen. Operaatioissa ilman kertolaskuja toiminnot menevät ajassa (n^2) ja kertolaskuilla ajassa (n^3). Esim. unioni toimisi niin että muistiin kirjoitettaisiin hieman nopeammin siirtäen eteenpäin koneistossa käyttäen jotain binäärikoodia esim. #1101. Näiden mahdollisuus on toimia peräkkäin, toistettaessa tai kohdistettuna."
"Deterministinen turingin kone [...] on erittäin yleistetty reaalimaailman kuvaus."
Vastauksia erinäisiin selitystehtäviin:
"Hajota ja hallitse menetelmässä operoitava kohde ensin hajoitetaan osiin jonka jälkeen ne lajitellaan ja sitten limitetään johon tarvitaan 2 eri algoritmiä. esimerkkinä voidaan saada esim. laskettaessa kaarien painojen summa."
"Dynaaminen ohjelmointi on sellaista, että toimitaan ryhmässä aktiivisesti ja käytetään tietorakenteita luovalla tavalla." (muistivaraisesti kirjattu mutta sisällöltään oleellisesti tällainen vastaus)
"Äärellinen automaatti määritään: V on aakkosten kirjain. EF on jos E ja F täsmää. samoin tai-operaatio ja E*."
"Binomikeko operaatiot ovat esim. unioni jossa tehdään prioriteettijono ja yhdistetään unionilla ne sitten. Toinen operaatio on : Hae ja poista alkio, "muodostettu lista", unioni ja returnilla palautetaan tarvittavat kohteet."
[Määrittele jotkin kaksi NP-täydellistä ongelmaa, ja perustele miksi kyseiset ongelmat kuuluvat luokkaan NP:]
"esim. Toteutuvuus ja väritettävyys ongelma. Toteutuvuus ongelma koostuu propositioista tai, ja, ei. Jos esim. A on -A silloin se on tosi jne.. Ja se on NP vaikea jos se ratkeaa polynomisessa ajassa. Ja se on NP-täydellinen jos se on NP-vaikea ja kuuluu luokkaan L."
"NP-ongelma on määritelty sanan w pituudella F kun on P(n)."
"NP-täydellinen ongelma on n kpl avaimia suuruusjärjestykseen."
[Naiivin merkkijononhakualgoritmin pääideat sekä aikakompleksisuus (pahin ja keskimääräinen tapaus)?]
"Naivi menetelmä luottaa naivisti omaan hakualgoritmiinsa."
[... ja Rabin-Karp-algoritmin pääideat?]
"Rabin-Karp on myös hieman järkevämpi algoritmi, joka etsii hakusanan merkkijonosta järkeä käyttäen."
[Esitä algoritmi tehtävässä määritellyn Catalanin luvun C(n) laskemiseksi:]
      IF n >= 2
        i*(n-i) = int x;
        return x
      ELSE
        return

(Ks. P. Kilpeläinen: Kuinka saada ASA-kurssin tenttivastaus näyttämään järkevältä?)

[Perustele, mistä O(n log n)-ajassa toimiva lajittelualgoritmi tiedetään ongelman optimaaliseksi ratkaisuksi:]
"Ratkaisun tiedetään olevan optimaalinen, koska luentomonisteessa sanotaan niin."
(Mahtaako kriittisen tieteellisen ajattelun oppimistavoite olla saavutettu?)

Teoreettisista pohjatiedoista

Pöllö: Kas, Puh! Minä kun luulin, että vain me pöllöt olemme valveilla öisin.
Nalle Puh: Haluan laskea tähdet.
Pöllö: Mutta sehän on aivan mahdoton tehtävä.
Nalle Puh: Niinkö?
Pöllö: Vaikka sinulla olisi maailman paras kaukoputki, et saisi lasketuksi tähtiä. Avaruus on äärettömän laaja, ja siellä on miljardeja biljardeja tähtiä. Ymmärrätkö nyt, miksi sinun kannattaa unohtaa koko asia?
Nalle Puh: Ymmärrän minä. Mutta keksin juuri tärkeämmänkin syyn.
Pöllö: Ja mikähän se on?
Nalle Puh: Osaan laskea vain kymmeneen.
- Minisarjis Disneyn Nalle Puh. Sanoma Magazines Finland Oy, 2002.
"Ohjelmissa ei voi käyttää neliulotteisia taulukoita, koska ulottuvuuksia on todellisuudessa vain kolme."
- Anonyymi opiskelija kaupallisella ohjelmointikurssilla
"Mitä tekemistä logaritmeilla on tietokoneitten kanssa?"
- Anonyymi opiskelija Algoritmien suunnittelu ja analysointi -kurssilla

(Ks. P. Kilpeläinen, Mitä tekemistä logaritmeilla on tietokoneitten kanssa? Solmu, 1/2001, 6–11.)

"Mitä tarkoittaa 'permutoida'?"
- Anonyymi tietojenkäsittelytieteen jatko-opiskelija

On Mathematics and Computer Science / Matematiikasta ja tietojenkäsittelytieteestä

Mathematics isn't algebra or calculus. Math isn't adding up numbers or multiplying things. Mathematics is structured deductive reasoning, which builds up from a solid starting point (axioms) and serves to represent, communicate and help with the construction of ideas. Those tasks are the basis of computer science, whether you are writing an operating system, designing a database, building a network or even creating a new language/protocol. If you take math out of the picture, you simply cannot do anything in CS, whether you actually know you are applying mathematical concepts or not.
- "GreatBunzinni" in his comment on July 8, 2007 in a Slashdot discussion aroused by the book Computer Science Reconsidered: The Invocation Model of Process Expression by Karl M. Fant
Science = The search for fundamental knowledge and predictive models;
Engineering = The creative application of the results of science;
Technology = The routine application of the results of engineering.
- joel.neely in another Slashdot comment
Toisin kuin usein ajatellaan, matematiikka ei ole ainoastaan tieteellisten tulosten esittämisen väline. Matematiikka, kuten myös luonnollinen kieli, on myös keskeisen tärkeä ajattelun väline. Siten sekä luonnollisen että matemaattisen kielen hyvä hallinta on tietojenkäsittelytutkijalle arvokas apu uusien teknisten ja tieteellisten tulosten aikaansaamiseksi.
- P. Kilpeläinen 2006
[...] needless to say, refusal to exploit this power of down-to-earth mathematics amounts to intellectual and technological suicide.
- E. Dijkstra (1930–2002), in "On the cruelty of really teaching computing science", EWD 1036, 1988
Scientific development requires that knowledge be transferred reliably from one study to another and, as Galileo showed 350 years ago, such transference requires the precision and computational benefits of a formal language.
- Judea Pearl: Causality: models, reasoning, and inference, p. 342, Cambridge University Press, 2000.

Määritelmistä ja abstraktioista / On Definitions and Abstractions

Varsinkin alkava oppilas tarvitsee tuekseen lyhyitä ja täsmällisiä määritelmiä, jotka usein kannattaa osata ulkoa. Valmentajan osa kuuluu opettajalle, joka valaiskoon kunkin asian laajemmin selityksin.
- F. Krohn, Lyhyt musiikkioppi. WSOY, 1950.
If you can't define something you have no formal rational way of knowing that it exists. Neither can you really tell anyone else what it is. There is, in fact, no formal difference between inability to define and stupidity. When I say, "Quality cannot be defined," I'm really saying formally, "I'm stupid about Quality."
- Robert M. Pirsig: Zen and the Art of Motorcycle Maintenance, Chapter 17. Bantam Books, 1981.
Ellei jotakin pysty määrittelemään, ei voi mitenkään muodollisesti ja järkiperäisesti tietää että se on olemassa. Eikä liioin pysty todella kertomaan kellekäään muulle mitä se on. Itse asiassa kyvyttömyys määritellä ja tyhmyys ovat muodollisesti sama asia. Kun sanon: "Laatua ei voi määritellä", muodollisesti sanon oikeastaan: "Laatua koskevissa asioissa minä olen tyhmä."
- Robert M. Pirsig: Zen ja moottoripyörän kunnossapito, luku 17. Suom. Leena Tamminen. WSOY, 1986.
Kilpeläinen's Law of Definitions: "Students abhor exactness."
- P. Kilpeläinen, 2005
Being abstract is something profoundly different from being vague... The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
- E. Dijkstra (1930–2002)
Simplicity is the ultimate sophistication.
- L. Da Vinci (1452–1519)
Everything should be made as simple as possible, but not simpler.
- A. Einstein (1879–1955)
Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.
- E. Dijkstra (The Tide, not the waves; in Denning/Metcalfe: Beyond Calculation, Springer-Verlag 1997)

On Proofs

Yet proof is something that every computer scientist needs to understand. Some computer scientists take the extreme view that a formal proof of the correctness of a program should go hand-in-hand with the writing of the program itself. We doubt that doing so is productive. On the other hand, there are those who say that proof has no place in the discipline of programming. The slogan 'if you are not sure your program is correct, run it and see' is commonly offered by this camp.

Our position is between these two extremes. Testing your program is surely essential. However, testing goes only so far, since you cannot try your program on every input. More importantly, if your program is complex — say a tricky recursion or iteration — then if you don't understand what is going on as you go around a loop or call a function recursively, it is unlikely that you will write the code correctly. When your testing tells you the code is incorrect, you still need to get it right.

To make your iteration or recursion correct, you need to set up an inductive hypothesis, and it is helpful to reason, formally or informally, that the hypothesis is consistent with the iteration or recursion. This process of understanding the workings of a correct program is essentially the same as the process of proving theorems by induction.

- J.E. Hopcroft, R. Motwani, J.D. Ullman: Introduction to Automata Theory, Languages, and Computation, Second Edition, pp. 5–6. Addison-Wesley, 2001.
The theory of NP-completeness also enables us to identify what properties make a particular problem hard, thus providing for us to model it in different ways or exploit more benevolent characteristics of the problem. Developing a sense for which problems are hard and which are not is a fundamental skill for algorithm designers, and it can come only from hands-on experience proving hardness.
- Steven S. Skiena: The Algorithm Design Manual, Chapter 6. TELOS/Springer Verlag, 1998.
Dana Angluin's List of Proof Techniques
(Not to be applied literally, or better yet, to be avoided!)
Incidentally, when we're faced with a "prove or disprove," we're usually better off trying first to disprove with a counterexample, for two reasons: A disproof is potentially easier (we need just one counterexample); and nitpicking arouses our creative juices. Even if the given assertion is true, our search for a counterexample often leads to a proof, as soon as we see why a counterexample is impossible. Besides, it's healthy to be skeptical.
- R.L. Graham, D.E. Knuth and O. Patashnik: Concrete Mathematics: A Foundation for Computer Science. Addison-Wesley, 1989.
There are no trivial cases. Actually, to be more precise, there are also trivial cases. For example, any claim that all items of a collection possess some property is trivial in the case that the collection is empty. One just needs to learn to understand and accept that such claims hold trivially. But my point is that many cases are somewhat unjustly coined ''trivial'' even though they would deserve careful thought. For example, the base cases of many recurrences that serve as the starting point for dynamic programming algorithms require care to get their initialization right, in order to get the subsequent steps of the computation to produce indeed requested and correct results. It is a good test to try to implement something, or perhaps even better, to be able to explain oneself why it holds and works correctly.
- P. Kilpeläinen, 2012

Oppimateriaalista / On Course Material

"Kirja on ihana ja monisteet selkeitä ja hyödyllisiä."
"Monisteet olivat hyvät, lyhyet ja ytimekkäät. Kirja täydensi monisteita ja luentoja hyvin ja sitä oli erinomaisen mukava lukea."
"Oppikirja oli mielenkiintoinen, luontomonisteet olivat myös hyvät."
"Kirja oli erinomainen. Prujuja en juurikaan katsellut, olivat kuulemma aika suppeita, mutta toisaalta ei kai ne itseopiskelumateriaalia varsinaisesti olleetkaan."
"Monisteet oli todella hyvät! Se Algorithms-kirja ei taida ihan huippu olla."
"Pruju (luentorungot) olivat huonoja. Olisin kaivannut enemmän esimerkkejä ja selventäviä kommentteja. Viittaukset Harelin kirjaan raivostuttivat myös, kun ei kirjaa omista."
- Opiskelijapalautetta kurssimateriaalista (Algoritmisen tietojenkäsittelyn perusteet, HY 1999)
[... lecture notes ] form an approximation: a lecture is a form of communication; I will alter things in the lecture whenever I think a change will improve communication, and you may choose to write down things from the lecture that I have not put in these notes. [...]

Lecture notes have been around for centuries, either informally, as handwritten notes, or formally as textbooks. Recently improvements in typesetting have made it easier to produce ``personalised'' printed notes as here, but there has been no fundamental change. Experience shows that very few people are able to use lecture notes as a substitute for lectures; if it were otherwise, lecturing, as a profession would have died out by now. To put it another way, ``any teacher who can be replaced by a teaching machine, deserves to be''. [...]

There is significant value in taking your own notes; you are much more likely to see what is going on as you do so.

- Ian Craw

On Recursion

"To better appreciate the subtlety by the self-referential nature of recursion, the following book is heartily recommended, together with those of its references that are heartily recommended therein;
- D. Harel, Algorithmics: The Spirif of Computing, Addison-Wesley, Reading, MA, 1987, p. 363. (This book is, of course, heartily recommended!)
CS students learn and practice recursion in CS1, Data-Structures, Introduction-to-Algorithms, and additional courses throughout the curriculum. Previous studies revealed difficulties of CS1 students with the concept and the construct of recursion. [...] The paper examines this aspect, with senior CS students. The students were given three algorithmic tasks, for which the suitable solution approach was recursive. The student solutions and explanations demonstrate very limited capitalization on recursion as a problem solving means.
- from the abstract of "Do Senior CS Students Capitalize on Recursion" by D. Ginat, in the Proceedings of ITiCSE'04, Leeds, UK, June 2004; ACM 2004, pp. 82-86.

On CS Curriculum Requirements

On the other hand, it is important to keep in mind that students are best served not by mastering specific skills that may soon be obsolete, but instead by gaining an enduring understanding of theory and practice that will allow them to maintain their currency over the long term.
- Computing Curricula 2001 - Computer Science. Final Report of the joint tasks force on computing curricula by IEEE Computer Society and Association for Computing Machinery, December 2001; Section 9.1.6.
I believe that today's students are being fed a lot of marketing propaganda ... I further believe that we have a responsibility as educators to downgrade the hype and to give our students a firm background in the scientific and engineering principles of computer science.
I believe that instead of investing so much effort in teaching new hi-tech artifacts and in having our students write large programs with fancy user-interfaces and web sites, we should be emphasizing basics.
- M. Ben-Ari: How Did They Get to the Moon Without PowerPoint? A talk given at Tietojenkäsittelytieteen päivät 2003 in Espoo, May 2003.

Jatko-opiskelijoille / For Post-Graduate Students

"Seiso omilla jaloillasi! Älä heittäydy veltoksi nukeksi! Minulla on kiire töihin. Me oltais jo valmiita, jos sinä vähän itsekin auttaisit!"
- Vaimoni Irma pukiessaan 3-vuotiasta Aino-tytärtämme
"Graduate students: the next time that you feel that you aren't making progress, just remember that it could be worse."
- Borrowed from Mordechai (Moti) Ben-Ari's home page
"It's supposed to be hard! If it wasn't hard, everyone would do it. The hard... is what makes it great!"
- J. Dugan (said by Tom Hanks' character in "A League of Their Own" in response to a complaint from one of his ball players)
"Jos se olisi helppoa tai yksinkertaista, tekisin aivan varmasti jotakin muuta."
- Säveltäjä Tommi Kärkkäinen omasta työstään Susj-lehdessä 1/06
My advice: Study broadly; get the big picture; join the ACM and the IEEE Computer Society so you'll know where you're headed. Read journals, not just books. Many are on line through our library, free. Hang out in bookstores. [... some local recommendations ... ] Go to seminars by visitors from other schools and industry. Don't just read, write!
- Prof. Robert P. Futrelle in his talk for PhD students, December 2002
How to be a Terrible Graduate Student
- A humorous message by prof. Graeme Hirst, University of Toronto, which includes, via complement, several points worth considering. As a view from the other side, there is also a note on
How to be a Terrible Thesis Advisor
by Nigel Ward

Some useful advice is given in the two-part article "How to Succeed in Graduate School: A Guide for Students and Advisors" by Marie desJardins published in ACM Crossroads: Part I; Part II.

"...it isn't just that I can write technical things and I can talk to other researchers with confidence -- I can talk to almost any authority figure with confidence. Partly this is because I now know what it is to be an expert in something, and although I respect other peoples' expertise in their areas of specialization, I also know that I'm just as respectable and they (usually) aren't any more so than I. I also think I can write about things in other areas, provided I've done my homework and learned the area. I feel empowered! And I would never have gotten this from a CS programming job or even a masters degree."
- An anonymous Ph.D. in the above-mentioned article "How to Succeed in Graduate School: A Guide for Students and Advisors", Part II by Marie desJardins
"Oleellista olisi ohjata sitä työtä, mitä ohjattava tekee, ei sitä mitä hän ohjaajan mielestä voisi tehdä - tai pahimmillaan millaista työtä ohjaaja itse voisi tehdä."
- A. Suoranta kirjan "Tilanteen taju", toim. Kivimäki, Kinnunen ja Löytty (Vastapaino, 2006) arvostelussa kirjaan sisältyvästä Tuula Gordonin artikkelista, ACATIIMI 7/2006.
Two lessons I learned during my doctoral studies.
  1. You should listen to your supervisors. They're smart and they know a lot.
  2. Sometimes, rarely though, you should trust yourself and ignore your supervisors. You are also smart, and supervisors don't know everything.
- Matti Tedre in his blog
"[...] Olen jatko-opiskelijaksi ryhtyessäni luullut naiivisti, että väitöskirjan saa kasaan toteuttamalla riittävän vaativia ja tieteellisesti valideja järjestelmiä, mutta se ei tietenkään pidä paikkaansa. [...]

Tieteellisen tutkimuksen ytimen on myöhemmin kiteyttänyt osuvasti TKK:n Hessu Saikkonen: 'Think big, implement small.' Toisin sanoen yliopistoissa tärkeintä on ajatuksen lento ja uusien ideoiden luominen, mutta niiden toteuttaminen pitää jättää muille. Kunnon teoriaa siis sen olla pitää eikä käytäntöä."

Jukka Paakki: Rupisia bittejä, karmeita kaavioita, unelmia ja toimistohommia. Helsingin yliopisto, tietojenkäsittelytieteen laitos, 2011, s. 141.

On Knowledge and Thinking

"You can lead a horse's ass to knowledge, but you can't make him think"
- Bob Silverman, Mitre Corporation

The above is probably inspired by a saying that appears, e.g., in the refrain of Hors d'Oeuvres by Roy Harper:

"Well you can lead a horse to water
But you're never gonna make him drink
And you can lead a man to slaughter
But you're never gonna make him think"

On Quotations

The below quotations about quotations are borrowed from The Quotations Page
("Lesser artists borrow, great artists steal." - Igor Stravinsky):
"A facility for quotation covers the absence of original thought."
- Lord Peter Wimsey in Gaudy Night by Dorothy L. Sayers
Quotation, n: The act of repeating erroneously the words of another.
- Ambrose Bierce (1842–1914), The Devil's Dictionary
"One must be a wise reader to quote wisely and well."
- Amos Bronson Alcott (1799–1888)
"The point of quotations is that one can use another's words to be insulting."
- Amanda Cross (1926–2003)
"I love quotations because it is a joy to find thoughts one might have, beautifully expressed with much authority by someone recognized wiser than oneself."
-Marlene Dietrich (1901–1992)
"A witty saying proves nothing."
- Voltaire (1694–1778)
A lie repeated thousand times becomes a truth.
- A cynical reformulation of the above wisdom of Voltaire

Useful Advice

Almost as much time can be wasted reading web pages as constructing them. Get back to work!
- Jim Storer on his home page


Pekka Kilpeläinen 2002–2013