Kurssi perustuu klassikkokirjaan Structure and Interpretation of Computer Programs sekä entiseen TKK:n Scheme-kurssiin, mutta on kuitenkin laajempi kuin entinen peruskurssi. Kurssi painottuu kirjan loppupuolelle käsitellen erityisesti funktionaalista ohjelmointia ja yksinkertaisten tulkkien ja kääntäjien toteuttamista.
Kurssin esitiedoiksi riittää kaksi TKK:n ohjelmoinnin peruskursseista tai vastaavat tiedot.
Tavoitteena on oppia mm. seuraavia ohjelmoinnin periaatteita: proseduraalinen abstrahointi, data-abstrahointi, funktionaalinen ohjelmointi, rinnakkaisuus, virrat ja laiska laskenta, ohjelmointikielen tulkit (metalingvistinen abstrahointi), epädeterministinen laskenta, logiikkaohjelmointi, rekisterikoneet ja konekieliohjelmointi.
Aiheita käsitellään Scheme-ohjelmointikieltä käyttäen.
Kurssin oppikirja on:
Kirjan ensimmäinen painos on niin erilainen, että sitä ei pidä käyttää.
Kurssin WWW-sivu on osoitteessa http://www.cs.hut.fi/~scheme/. Sivuilla on pakolliset ja vapaaehtoiset kotitehtävät, harjoitustyöaiheet, sekä ohjeita. Kurssin kotisivua päivitetään kurssin edetessä.
Lisäksi kurssilla on news.tky.fi:ssä paikalliset uutisryhmät opinnot.tik.scheme ja opinnot.tik.scheme.tiedottaa. Jälkimmäiseen lähetetään opetushenkilöstön tiedotuksia kurssin asioista, ensimmäinen on tarkoitettu keskusteluun kurssista, harjoituksista ja Schemestä yleensä.
Apua kotitehtävien ja harjoitustöiden tekemiseen saat uutisryhmän lisäksi osoitteesta scheme@cs.hut.fi. Kurssilla on myös käytössä ircnetin kanava #tikscheme.
Kurssin suoritus kirjataan kurssikoodille
Kurssilla on pakollisina osasuorituksina tentti ja kotitehtävät. Nämä suorittamalla saa kuusi (6) opintopistettä. Vapaaehtoisena suorituksena voi tehdä harjoitustyön, josta saa kaksi (2) opintopistettä lisää.
Kurssin suorittamiseen vaaditaan hyväksytty arvosana sekä tentistä että kotitehtävistä. Kurssin arvosana lasketaan kaavalla:
Kurssille ilmoittaudutaan lähettämällä sähköpostia osoitteeseen scheme@cs.hut.fi. Kerro ilmoittautuessasi nimesi ja opiskelijanumerosi ja oletko kiinnostunut osallistumaan muutamalle luennolle, mikäli niitä järjestetään.
Kurssin käyttämä Scheme-toteutus asennetaan valmiiksi Niksulaan. Kerro ilmoittautuessasi mikäli sinulla ei ole Niksulan käyttäjätunnusta etkä halua asentaa Schemeä itse.
Kurssilla on pakollinen tentti, jonka alueena on kurssikirjan loppuosa ja alla ilmoitettu lisämateriaali. Tentin ajankohdat ovat seuraavat:
Tenttimateriaali:
SICPin lisäksi käsitellään siis
Tenttiin saa tuoda mukana vain SICPin joko kirjana tai tulostettuna. Mikäli tentissä on SICPin tulkkeja käsitteleviä tehtäviä, annetaan tenttipaperin mukana oleelliset koodit paperilla liitteenä. Kirjassa/tulostetussa SICPissä ei saa olla ylimääräisiä merkintöjä; tentinvalvojat voivat tarkastaa tämän tarvittaessa. Muuta tenttimateriaalia ei saa tuoda tenttiin.
Muuhun tenttimateriaaliin kuin SICPiin liittyvät tenttikysymykset laaditaan niin, että kysytään yleisiä käsitteitä ja asioita. Tarkkojen yksityiskohtien (esimerkiksi CLOS-syntaksin tarkkaa) osaaamista ei vaadita.
Muutama huomio yllämainitun Shriram Krishnamurthin kirjan käyttämästä Scheme-variantista (helpottamaan kirjan esimerkkikoodien lukemista - näitä ei tarvitse osata tentissä):
(define (box val) (cons val '()))
(define (set-box! box val) (set-car! box val))
(define (unbox val) (car val))
Myös luentojen kalvoista voi olla apua tenttiin lukiessa.
Kursilla on pakollisia harjoitustehtäviä. Jokaisesta kotitehtäväkierroksestä tulee suorittaa vähintään 50% tehtävistä. Lisäksi kaikista tehtävistä tulee olla tehtynä yhteensä vähintään 60%. Kotitehtävien suoritus arvostellaan seuraavasti
Kotitehtävissä on myös rästipalautus, lisätietoja kotitehtäväsivulla.
Kurssilla on vapaaehtoinen harjoitustyö. Harjoitustyö arvostellaan asteikolla hylätty, hyväksytty tai +1 kurssiarvosanaan. Tarkemmat ohjeet harjoitustyöstä.