Johdanto
Aikataulu
Opetusmuodot
Ohjelmointitehtävät
Vapaaehtoisia esitehtäviä
Tentti
Esitietovaatimukset
Työmäärä
Muita suoritusmahdollisuuksia
Vanhat tiedotteet
Sivu perustettu 16.3.2025
Kurssit Algoritmit 1 ja Algoritmit 2 kattavat yhdessä tärkeimmät algoritmit ja tietorakenteet sekä niiden analysointi- ja suunnittelumenetelmät.
Opettajana toimii Antti Valmari ja assistenttina Ville Rantala.
Vuoden 2025 OPS-uudistuksessa kurssi muutettiin syventäväksi ja opintopistemäärää kasvatettiin yhdellä. Luentoruutuja ja kirjallista aineistoa tullaan kevään aikana täydentämään. Vuonna 2024 kurssin luentoruudut ja kirjallinen aineisto uudistettiin täysin. Vuonna 2023 kurssin ohjelmointitehtävät uusittiin täysin. Nämä muutokset siirsivät kurssin painopistettä teoriasta käytännön ohjelmoinnin suuntaan.
päivä | 18.3. | 20.3. | 25.3. | 27.3. | 1.4. | 3.4. | 8.4. | 10.4. | 22.4. | 24.4. | 29.4. | 6.5. | 8.5. | 13.5. | 15.5. | 20.5. |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ruutuun | 11 | 23 | 33 | 50 |
Kurssi pidetään 18.3.2025‒22.5.2025.
Poikkeukset:
maanantai | tiistai | keskiviikko | torstai | perjantai | |
---|---|---|---|---|---|
8:15‒ 9:00 | |||||
9:15‒10:00 | |||||
10:15‒11:00 | Neuvonta Ag C233.1 | Luento Ag B122.1 Alfa | |||
11:15‒12:00 | |||||
12:15‒13:00 | Neuvonta Ag C233.1 | ||||
13:15‒14:00 | |||||
14:15‒15:00 | Luento Ag B121.1 Beeta | ||||
15:15‒16:00 | |||||
16:15‒17:00 | Neuvonta Ag C233.1 | ||||
17:15‒18:00 |
Kurssilla on luentoja, ohjelmointitehtäviä, neuvontatilaisuuksia ja tentti. Luentoihin ja neuvontatilaisuuksiin osallistuminen on vapaaehtoista. Ohjelmointitehtävät ja tentti ovat pakolliset.
Luennot noudattavat keskeneräistä tekstiä ja siitä tehtyjä luentoruutuja. Niitä täydennetään kurssin edetessä. Luentotekstin lomassa on pieniä ja keskisuuria tehtäviä, joihin on vastaukset luentotekstin lopussa. (Vuotta 2023 edeltäneet tekstit, luentoruudut ja luentovideot ovat saatavana TIM-sivun kautta.)
Kurssin ohjelmointitehtävät on uusittu täydellisesti vuonna 2023. Niistä on alla oma kohta.
Neuvontatilaisuuksissa keskustellaan tai kerrotaan niistä luentotekstin tehtävistä joista opiskelijat haluavat keskustella tai kysyä sekä annetaan apua ohjelmointitehtävien tekemiseen. Ohjelmointitehtäviä koskeviin kysymyksiin pyritään vastaamaan tavalla, joka auttaa eteenpäin mutta ei anna liian paljon valmiina. Neuvojilla on oikeus tarvittaessa ilmoittaa, että tämän yksityiskohtaisempia neuvoja ei voida antaa.
Opettajat neuvovat tarvittaessa myös sähköpostitse siinä määrin kuin heidän aikataulunsa sallii. Lähetä sähköpostikysymykset molemmille opettajille, niin saat vastauksen varmemmin pian.
Tenttin saa tulla sitten kun on saanut ohjelmointitehtävistä riittävästi pisteitä, katso tarkka aikaraja kohdasta Tentti.
Kurssin arvosana on tentin arvosana kuitenkin siten, että jos vaiheista P3, A1, R2 ja E1 on hyväksytty useampi kuin yksi tai kaikkiaan on hyväksytty ainakin kuusi vaihetta, ja tentin arvosana on 1, 2, 3 tai 4, niin arvosanaa korotetaan yhdellä. Arvosanan korotuksen voi ansaita myös tentin jälkeen, kuitenkin viimeistään toteutuskerran viimeisen tentin ilmoittautumisajan päättymiseen mennessä. Tässä tapauksessa ilmoita sähköpostitse opettajalle, että olet ansainnut korotuksen jälkikäteen.
Kaiken muun voi suorittaa etänä paitsi tentin.
Kurssilla on tarjolla viisi ohjelmointitehtävää, joista osassa on välipalautuksia. Kaksi ensimmäistä tehtävää ovat vain yleistä ohjelmoinnin harjoittelua. Kolme jälkimmäistä liittyy kurssin asioihin. Opettajan mallivastaus kuhunkin tehtävään on alle 150 riviä paitsi lukujärjestystehtävään alle 350 riviä. Tehtävien kuvaukset löytyvät täältä. Tästä tekstistä saattaa olla apua ohjelmoinnissa alkuun pääsemiseksi.
Ohjelmointitehtävillä ei ole muuta aikarajaa kuin että niiden pitää olla tehtyinä ennen tenttiä (katso tarkka aikaraja tentin tiedoista). Niinpä niiden tekemistä saa jatkaa kesän yli ja vielä alkusyksylläkin, mutta siinä tapauksessa ei voi osallistua tenttiin 22.5.2025, vaan vasta myöhempiin tentteihin.
Hyväksytyt ohjelmointitehtävät ovat voimassa kunnes viimeinen tentti on pidetty. Aikaisemmin palautettuja ohjelmointitehtäviä saa palauttaa myöhempinä vuosina uudelleen, mutta TIM tarkastaa ne kulloinkin voimassa olevien vaatimusten mukaan. Vuonna 2025 osan tehtävistä vaatimuksia helpotettiin yksinkertaistamalla syötteen rakennetta.
Kuten opiskelussa yleensä, plagiointi on kielletty. Muiden ihmisten tai tekoälyn kirjoittamaa koodia ei saa käyttää, seuraavin poikkeuksin. Opetus- tai havainnollistustarkoituksessa esitettyjä hyvin lyhyitä koodinpätkiä saa käyttää (muutama kymmenen merkkiä, tyyliin ”näin teet silmukan Javalla”). Tämän kurssin aineistossa esitettyjä pitkiäkin koodinpätkiä saa käyttää. Ideoita saa hakea kirjoista ja netistä sekä kysyä muilta, mukaan lukien tekoäly. Jos neuvot muita, pidä huoli että neuvot ideatasolla etkä anna valmista koodia.
Älä julkaise omia ohjelmointitehtävien vastauksiasi GitHubissa eikä muuallakaan.
Kukin tehtävä palautetaan TIM-sivulle, joka testaa palautuksen ja antaa pisteen tai virheilmoituksen. Palauttaa saa niin monta kertaa kuin haluaa. Viimeisin palautus jää voimaan.
Yhteensä tehtävissä on 9 (väli)palautusta. Kurssin läpäisemiseksi TIMin pitää hyväksyä yhteensä ainakin 5 (väli)palautusta, joista ainakin yksi on P3, A1, R2 tai E1.
Oman pistemääräsi voit tarkastaa klikkaamalla nappia ”Laske pisteesi” täällä.
Siltä varalta, että koet tarvetta kehittää perusohjelmointitaitoasi ennen kurssin ohjelmointitehtävien tekemistä, tarjolla on kaksi esitehtävää. Niidenkin kuvaukset löytyvät täältä.
Ensimmäinen tentti on 22.5.2025 Ag B103 Auditorio 3 klo 14:15–18:00. SISUssa lukee 14:00, mutta aloitamme vasta 14:15, koska salin edellisten käyttäjien täytyy ehtiä alta pois ja sali täytyy valmistella. Tähän tenttiin ei tarvitse ilmoittautua. Ohjelmointitehtävien pitää olla hyväksyttyinä TIMissä 19.5.2025 mennessä. (Ei haittaa, jos menee seuraavan vuorokauden puolelle. Todellinen takaraja on seuraavana päivänä sillä hetkellä kun luettelo tenttiin osallistujista haetaan TIMistä.)
Loput kaksi tenttiä ovat 13.6.2025 ja syksyllä 2025. Niihin ilmoittaudutaan SISUssa. Ohjelmointitehtävien pitää olla hyväksyttyinä TIMissä sillä hetkellä, kun ilmoittautuu tenttiin SISUssa.
Tenttialue on luentoruudut ja luentoteksti kokonaisuudessaan.
ITKA201 Algoritmit 1 tai vastaavat tiedot sekä TIEP111 Ohjelmointi 2 tai vastaavat ohjelmointitaidot. Se, että SISUssa ei vaadita ITKA201 Algoritmit 1, on virhe.
Jos koet ohjelmointitaitosi kaipaavan kohentamista, lue ohjelmointiesimerkkejä ja/tai suorita Vapaaehtoisia esitehtäviä.
Varaudu siihen, että työmäärä on suuri. Virallisen laskutavan mukaan 5 op tarkoittaisi 133 tuntia opiskelijan työtä. Minusta virallinen laskutapa on väärä, mutta 100 tuntia voidaan kyllä tarvita.
Varaa tälle kurssille 13 tuntia viikossa. Tässä yhteydessä tunti tarkoittaa 45 minuuttia opiskelua ja 15 minuuttia taukoa. Tauot ovat tärkeitä, ja onhan myös lähiopetuksessa aina vartin tauko jokaista kolmen vartin luentoa tai demoa kohden.
Helsingin yliopiston MOOC Tietorakenteet ja algoritmit II kelpaa korvaamaan TIES4211 Algoritmit 2.
Vanhoja tiedotteita ei vielä ole.