Studio 1 syksy 2006 Janne Käki 11.9.2006
Mikä ihmeen Studio 1? Phuksisyksy Phuksikevät Mat-1.1110 Matematiikan peruskurssi C1 10 op Mat-1.1120 Matematiikan peruskurssi C2 10 op T-106.1250 Informaatioverkostojen ohjelmointikurssi 10 op T-106.1223 Tietorakenteet ja algoritmit Y 5 op Inf-0.1220 Sosiologia 5 op T-106.2001 Informaatioverkostot: Studio 1 4 op T-106.1001 Tietokone työvälineenä 2 op TU-22.1101 Tuotantotalouden peruskurssi 4 op Kie-98.500x Toisen kotimaisen kielen koe 2 op AS-75.1102 Julkaisutekniikan perusteet 3 op AS-75.2300 Informaatioverkostot: Studio 2 2 op TU-53.1100 Työpsykologian ja johtamisen perusteet 4 op
Kurssin suorittaminen OLO-sessiot ei arvostella, läsnäolo pakollista Ohjelmointitehtävät 40 % arvosanasta Kurssiportfolio 25 % arvosanasta (sisältää mm. 5 esseetä / käsitekarttaa) Tentti 10 % arvosanasta (6 kierrosta à 25 tuntia) Ohjelmointiprojekti 25 % arvosanasta (80-100 tuntia)
Mallilukujärjestys MAANANTAI TIISTAI KESKIVIIKKO TORSTAI PERJANTAI 8-10 Matematiikan peruskurssi C1, luento C-sali Matematiikan peruskurssi C1, luento C-sali Matematiikan peruskurssi C1, luento C-sali 10-12 Matematiikan peruskurssi C1, viikon 1. laskarit Y313 Studio 1, luento T5 * Studio 1, - luento (vko 40 ja 41) - harjoitukset (vko 42 ja 47) 12-14 14-16 Studio 1, OLO-sessio, ryhmät 1, 2 & 3 A232 B122 B219 Tuotantotalouden peruskurssi, luento A-Sali Studio 1, harjoitukset A117 ** Studio 1, OLO-sessio, ryhmä 4 B219 Tuotantotalouden peruskurssi, luento A-sali Matematiikan peruskurssi C1, viikon 2. laskarit U345 Studio 1, harjoitukset A117 16-18 Studio 1:n palautusten DL lauantaisin klo 18:00 * ** Viikoilla 40 ja 41 C1-mikrolaskarit (Maari-A) ke klo 10-12, tällöin Studio 1 -luento vasta to klo 10-12. Viikoilla 42 ja 47 C1-välikoe ti klo 16-19, tällöin viikon ensimmäiset Studio 1 -harjoitukset vasta to klo 10-12.
Kahden viikon sykli Uuden Java-tehtävän julkaisu. Java-tehtävän palautus. OLO-sessio. Tapauksen n purku, tapauksen n+1 avaus. Palaute edellisestä essee- / käsitekarttatehtävästä. Neuvontasessio 1. Neuvontasessio 4. Luento, tyypillisesti uuden Java-tehtävän aihepiiristä. Luento, tyypillisesti kurssin työskentelymenetelmistä, välineistä, tms. Neuvontasessio 2. Neuvontasessio 3. OLO-sessio. Tapauksen n+1 purku, tapauksen n+2 avaus. Palaute edellisestä Java-tehtävästä. Essee- / käsitekarttatehtävän palautus. Uuden essee- / käsitekarttatehtävän julkaisu.
Viikoittaiset aktiviteetit Luennot Keskiviikkoisin klo 10-12 salissa T5. Keskeisin tehtävä tukea Javatehtävien tekemistä selventää vaikeimpia uusia asiakokonaisuuksia spoilaamatta kuitenkaan liikaa. Demoja, esimerkkejä, metaforia, ajatusmalleja, yleissivistävää ja opitun laajempaan kontekstiin sijoittavaa sisältöä. Lisäksi esitellään kurssin työtapoja: OLO, käsitekartat, porfoliotyöskentely, ohjelmointiprojekti. Harjoitukset Tiistaisin klo 14-16 ja perjantaisin klo 12-14 luokassa A117. Paikalla noin neljä assaria vastaamassa Java-tehtäviin liittyviin kysymyksiin. Ohjelmointiongelmiin kannattaa ensisijaisesti hakea apua käymällä harjoituksissa. Muita hyviä foorumeja: luennot uutisryhmä opinnot.iv.studio1 IRC-kanava!studio1 oppikirjat Java-tutoriaalit
OLO-tapausten aiheet ja aikataulu OLO 1 viikko 37-38 OLO 2 38-39 OLO 3 39-40 OLO 4 40-41 OLO 5 41-42 Arska ja Pena Javan syntaksi Avainsanat Rakenteet Platonin ideaoppi Ideaoppi Luokat ja oliot Verkkokirjakauppa Kokoelmat (listat, setit, mapit) Robotti labyrintissa Reitinhakualgoritmi Robottiturnaus Ohjelmavirheet ja testaaminen Virheilmoitukset OLO 6 OLO 7 OLO 8 OLO 9 OLO 10 viikko 42-(43)-44 44-45 45-46 46-47 47-48 Valokuva-albumi Pelin tallennus Laivanupotuspeli Piirto-ohjelma Rekursio Graafinen käyttöliittymä Tiedostosta luku Tiedostoon kirjoittaminen Kokonaisen ohjelman suunnittelu Tapahtumat Piirtäminen 2D-grafiikka
OLO-ryhmät OLO 1 OLO 2 OLO 3 OLO 4 Petri Klemelä Mikko Porkola Jesse Kivialho Jarno Marin Emmi Suhonen Sampo Toiva Anna Berg Ville Sundberg Zeerim Cheung Ville Ilmonen Ossi Hanhinen Hannu Isopahkala Mikko Koski Pyry Kröger Jussi Juvonen Tia Jysmä Lauri Närhi Riikka Mäenpää Antti Kumpusalo Ville Karvonen Marko Oksanen Philip Ramberg Marika Mänttäri Laura Liukkonen Anu Saarinen Tommi Ruopuro Tiina Metsäpelto Heikki Moilanen Otto Teinonen Juho Vehviläinen Petteri Noponen Vihtori Mäntylä Sofia Ziessler Maria Viitanen Julia Wiikeri Teemu Meronen Lars Oehlandt Jetta Pursiainen
Java-tehtävien aikataulu ja sisältö Java 1 Java 2 Java 3 Java 4 Java 5 Java 6 viikko 37, 38 39, 40 41, 42, (43) 44, 45 46, 47 48, 49 Luokat ja oliot Metodit ja muuttujat Ehto- ja toistorakenteet Perintä Taulukot Rajapinnat Olentojen toimintaalgoritmit Karttaelementtien kytkennät Olentojen sijainnit Poikkeukset Abstraktit luokat Tiedostonkäsittely Näppäimistösyöte Toimiva pelilogiikka Swing (graafinen käyttöliittymä) Päiväykset ja kellonajat (ja lisää Swingiä)
Mitä Java-tehtävien lopputuloksena on tarkoitus syntyä? Java 1 Esineitä kuvaavia luokkia, jotka muodostavat perintähierarkian, sekä olentoluokka. Luokilla on attribuutteja ja näiden käsittelyyn liittyviä metodeja. Pääohjelmametodi, jossa luokkien ilmentymät ovat yksinkertaisessa vuorovaikutuksessa. Java 4 Näppäimistösyötettä lukeva ja tulkitseva sekä käyttäjän antamiin käskyihin reagoiva pelaajaluokka. Pelimoottori, joka saa pelin olennot vuorollaan tekemään siirtoja pelimaailmassa ja joka tarkkailee pelin päättymiseen johtavien kriteerien täyttymistä. Java 2 Pelimaailman rakennuspalikoina toimivia karttaelementtejä, joita voidaan asettaa dynaamisesti toistensa naapureiksi. Olento voi sijaita karttaelementissä ja liikkua pelimaailmassa paikasta toiseen. Sillä on myös alkeellinen reitinhakualgoritmi. Java 5 Swing-käyttöliittymän varaan rakentuva miinaharavapeli, joka on oikeasti pelattavissa (voitettavissa tai hävittävissä). Käytetään ainakin luokkia JFrame, JPanel, JLabel, JButton, BorderLayout, GridBagLayout, ActionListener, MouseListener. Java 3 Kolme erilaista olentoluokkaa, jotka osaavat tehdä pelimaailmassa erilaisia asioita ja valita älykkäästi näistä tilanteeseen sopivimman. Poikkeusten heittämistä ja käsittelyä tilanteissa, joissa se on tarkoituksenmukaisin ratkaisu. Rajapintaluokka sekä esineitä, jotka toteuttavat rajapinnan ja joita käytetään sen kautta. Java 6 Miinaharava mittaa pelin voittamiseen käytetyn ajan ja kirjoittaa parhaat tulokset tekstitiedostoon sekä lukee ne sieltä käynnistyessään. Tulosten päiväyksiä ja kellonaikoja käsitellään sopivien valmiiden luokkien avulla. Tutustutaan kiinnostuksen mukaan Swingin edistyneempiin komponentteihin ja ominaisuuksiin. tekstiseikkailupeli miinaharava
OLO-työskentelystä Muistiinpanot ja sanasto Tavoite: yhteenveto ryhmän tärkeimmistä löydöksistä ja havainnoista, auttaa myöhemmin palaamaan asiaan esimerkiksi käytännön ohjelmoinnin yhteydessä Kokoaminen on tapauksen sihteerin vastuulla, mutta koko ryhmän on osallistuttava materiaalin tuottamiseen kohderyhmänä opiskelijat itse, ei assarit lopputuloksena esimerkiksi pieni käsitekartta, kaavio tai tapauksen kannalta olennaisten uusien käsitteiden selitys Palautus tapahtuu OLO-ryhmän omalle sähköpostilistalle (studio1-olox@cs.hut.fi) Pohdintatehtävät Tavoite: helposti lähestyttäviä, tapauksen aiheeseen liittyviä (tai edes sitä sivuavia) välipalatehtäviä, jotka auttavat kiinnostumaan aiheesta ja oppimaan siitä lisää mitä tämä koodi tekee? etsi virhe tästä koodista. pitävätkö nämä väitteet paikkansa? Osa tehtävistä saattaa ratketa yhdessä jo avaussessiossa tukevat keskustelun syntymistä Osa saattaa vaatia lisäopiskelua tukevat oppimistavoitteiden asettamista, itseopiskelua ja keskustelun syntymistä purkuvaiheessa
Viestintäkanavat Sähköposti: studio1-olo at cspistehutpistefi tiedotteet kaikista uusista tai muuten ajankohtaisista asioista Kurssin www-sivut: http://www2.cs.hut.fi/~studio1/ aikataulut, tehtävänannot, ohjeet, arvosteluperusteet, ja paljon muuta OLO-sessiot palaute tehdyistä tehtävistä Viikkoharjoitukset, IRC-kanava!studio1, uutisryhmä opinnot.iv.studio1 apua Java-tehtäviin liittyvissä ongelmissa Luennot uusien työmenetelmien esittelyä, vaikeimpien uusien asioiden käsittelyä yhdessä