Tietojenkäsittelyopin laboratorio
Teknillinen korkeakoulu
Suomeksi

In English


T-93.210

Ohjelmoinnin peruskurssi T1

Etusivu

Yleistiedot Tehtävät Opiskelu Työkalut Muuta

Kurssin sisältö

Ohjelmoinnin peruskurssi T1 on Teknillisen korkeakoulun Tietotekniikan koulutusohjelman ensimmäinen ohjelmointikurssi. Kurssi on sekä melko pitkälle etenevä ohjelmoinnin alkeiskurssi että johdantoa myöhempien tietotekniikan opintojen aihealueisiin.

Koska opiskelijat ovat lahjakkaita ja heidän on aikanaan tarkoitus edustaa parasta tarjolla olevaa tietotekniikan ymmärrystä, kurssi on luonteeltaan toisenlainen kuin tavanomaiset ohjelmoinnin alkeiskurssit. Sen sijaan, että keskeisenä oppimisen kohteena olisi jonkin laajan ja monimutkaisen kielen rakenteiden ja erikoisuuksien hallinta, kurssilla käytetään hyvin yksinkertaista mutta peruskäsitteiltään voimakasta ohjelmointikieltä, Schemeä. Tällöin itse kielen oppimiseen ei tuhlaannu paljoa aikaa ja sen avulla voidaan esittää ohjelmoinnin kannalta hyödyllisiä malleja tietokoneen toiminnasta. Kurssilla voidaan myös valottaa suurta joukkoa erilaisia lähestymistapoja ohjelmointiin (funktionaalista ohjelmointia, sekvenssien käsittelyä, olio-ohjelmointia, logiikkaohjelmointia) sekä mielenkiintoisia sovelluksia (mm. tiedon pakkaaminen, simulointi, rajoitusten vyöryttäminen, geneerinen aritmetiikka, symbolinen derivointi).

Kurssilla esitellään myös joukko tietojenkäsittelyopin ja opiskelijoiden myöhempien opintojen kannalta tärkeitä aihepiirejä: laskennallinen kompleksisuus, rinnakkaisuus, epädeterminen laskenta, universaalin koneen käsite, jne. Kurssin loppupuolella paneudutaan siihen, kuinka ohjelmointikieltä suorittava ohjelma, tulkki, voidaan rakentaa ja kuinka ohjelmointikielen ominaisuuksiin voidaan tulkin toimintaa muuttamalla vaikuttaa.

Kurssia voidaan pitää onnistuneena, mikäli opiskelijoille syntyy taito itsenäisesti rakentaa ohjelmia sekä alustava käsitys siitä, mitä ohjelmointikielillä voidaan tehdä ja minkälaisia kysymyksiä ja rajoituksia ohjelmointiin liittyy.

Kurssin tavoitteet

Tavoitteena Ohjelmoinnin peruskurssilla T1 on, että opiskelija oppii ohjelmoimaan itseäisesti sekä saa hyvän pohjan myöhemmille ohjelmoinnin sekä tietojenkäsittelyn opinnoille.

Hyvän ohjelmointitaidon saavuttamiseksi tarvitaan oppia usealla eri saralla:

  • Keskeisen tärkeätä on, että opiskelija saa kurssin aikana muodostettua itselleen ohjelmointiongelmien ratkaisemisen kannalta käyttökelpoisia ja kehityskelpoisia malleja tietokoneen toiminnasta.

  • Tärkeätä on myös itsenäisen ongelmaratkaisukyvyn kehittyminen ja tähän liittyen erityisesti kyky muodostaa ongelmien ratkaisemisen kannalta hyödyllisiä abstraktioita. Tämä merkitsee mm. kykyä ongelmien ratkaisemisen kannalta hyödyllisten käsitteiden tunnistamiseen ja määrittämiseen.

  • Ohjelmointiin tarvitaan lisäksi "käden taitoja", eli valmiuksia erilaisten ohjelmointityökalujen tehokkaaseen käyttämiseen. Esimerkkejä on ohjelmaeditori ja ohjelman suoritusympäristö (esim. tulkki).

Jotta kurssilla päästäisiin näiden tavoitteiden suhteen eteenpäin, eikä valtaosa ajasta kuluisi ohjelmointikielen syntaktisten rakenteiden opettelemiseen, kurssilla käytetään yksinkertaista ohjelmointikieltä (Scheme), jonka syntaksin oppii puolessa tunnissa ja jossa on vain harvoja erikoisrakenteita. Kurssilla voidaan näin ollen keskittyä muodostamaan asteittain tarkentuvia malleja tietokoneen toiminnasta:

  1. lausekkeiden evaluointisäännöt ja korvausmalli,
  2. ympäristömalli,
  3. metasirkulaarinen Scheme-tulkki ja
  4. rekisterikone.

Kurssilla pyritään myös avartamaan opiskelijan käsitystä ohjelmoinnista esittelemällä useampia lähestymistapoja ohjelmointiin, joissa siis ohjelmat nähdään käsitteellisesti eri tavoin:

  1. funktionaalinen ohjelmointi: ohjelmaa voidaan ajatella joukkona matemaattisia funktioita ja tavoitteena on lausekkeiden arvojen laskeminen
  2. imperatiivinen ohjelmointi: ohjelma koostuu komennoista, jotka muuttavat (ikäänkuin lokeroissa sijaitsevien) tilamuuttujien arvoja
  3. olio-ohjelmointi: ohjelma on joukko objekteja, joilla on omat (vain niille itselleen näkyvät) tilamuuttujansa ja jotka lähettävät toisilleen viestejä
  4. rajoiteohjelmointi: ohjelma on joukko tilamuuttujien välisiä rajoituksia, jotka rajoittavat niitä arvoja, joita muuttujilla voi samanaikaisesti olla
  5. logiikkaohjelmaointi: ohjelma on joukko loogisia propositioita ja päättelysääntöjä.

Kurssilla käsitellään myös useita aihepiirejä, joihin myöhemmissä opinnoissa tullaan paneutumaan syvällisemmin: laskennallinen kompleksisuus (laskennan kasvuluokka), rinnakkaisuuden ongelmat, epädeterministinen laskenta, simulointi, universaalin koneen käsite, deduktiivinen tiedonhaku, jne.



 

Tämän sivun ylläpidosta vastaa Seppo Törmä (email: seppo.torma@hut.fi).