IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Logik og sprog 
Kursusnavn (engelsk):Logic and Language 
Semester:Forår 2001 
Udbydes under:cand.it., tværfaglig it-udvikling (tit) 
Omfang i ECTS:0,00 
Kursussprog:Dansk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:
Forventet antal deltagere:
Maks. antal deltagere:
Formelle forudsætninger:Der er ingen formelle forudsætninger.

Kurset forudsætter, at man har fulgt
Indledende Programmering (el. tilsvarende) og
mindst samtidig følger kurset Begreber og
redskaber i programmering (el. tilsvarende).

 
Læringsmål:

Studienævnet for Tværfaglig IT tager forbehold
overfor senere ændringer i kursusbeskrivelsen. Se
den seneste version på:
http://www.dat.ruc.dk/undervisning2/ under kurser
2001.


Kursets formål er give:




  • en indsigt i, at der findes forskellige paradigmer
    for programmeringssprog,

  • et nærmere kendskab til
    programmeringssprogs anatomi og

  • en forståelse for, hvordan computersprog
    adskiller sig fra andre slags sprog.


P>Kurset kombinerer undervisning i et konkret
programmeringssprog (Prolog) med praktiske
implementationsmetoder og teoretiske modeller, og
der forsøges lagt et vist videnskabshistorisk
lys på emnerne.



Efter kurset forventes de studerende




  • at kunne skrive programmer i Prolog, at
    være i stand til at skrive fortolkere for
    programmerings- og andre computersprog og

  • at have et bedre grundlag for at vurdere,
    sammenligne og sætte sig ind i nye sprog og
    systemer.

 
Fagligt indhold:

Logikprogrammeringssproget Prolog benyttes
som det centrale eksempel, der repræsenterer
et paradigme væsensforskelligt fra
objektorienterede sprog. Vi lærer at skrive
mindre programmer i Prolog, og vi studerer dets
syntaks, semantik og pragmatiske aspekter i
nærmere detalje. Vi ser også på
præcise beskrivelser af forskellige
sprogkonstruktioners semantik formuleret ved
overskuelige fortolkere skrevet i Prolog --- som
metodik har det den fordel, at man umiddelbart kan
afteste beskrivelserne og udvide dem og
eksperimentere med nye sproglige
konstruktioner.



Design, implementation og anvendelse af
forskellige niveauer af sprog --- som er den
måde man i virkeligheden bygger systemer ---
sættes ind i en fælles ramme som blot er
en generalisering af principper for struktureret
programmering.



Vi kigger på forskellige praktiske metoder til
syntaksgenkendelse og oversættelse af
programmeringssprog og benytter også her
Prolog i vidt omfang som beskrivelsessprog og
henleder iøvrigt opmærksomheden
på standardværker på
området. På samme måde som de
"semantik-definerende" fortolkere, kan disse metoder
langt henad vejen kan benyttes til praktisk
implementation og prototypeformål. Endelig ser
vi på teoretiske modeller (Turing-maskiner) for
hvad man kan og ikke kan udtrykke i et
programmeringssprog, og vi benytter også
anledningen (men uden at gå i for mange
detaljer) til at pointere den matematiske logik, som
dybest set ligger til grund for computere,
(computer-)sprog og -systemer (f.eks. databaser) ---
og på mange måder er grundlaget for, at
datalogi og computere har kunnet opstået.



Kurset henvender sig til alle, som ønsker
at styrke deres indsigt i, hvad computere og
computersprog dybest set er for nogle
størrelser, og kurset stræber mod at give
en værdifuld baggrund uanset om man
tænker på at dreje sin uddannelse mod
udvikling, forskning eller formidling. Kurset kan
også ses som forudsætning for eller
supplement til databaser og
vidensrepræsentation og give en interessant
perspektivering i forhold til brugergrænseflader
og systemudvikling. Endelig kan det måske
inspirere til videre studier omkring
programmeringssprog, logikbaserede systemer og
datalingvistik.


 
Læringsaktiviteter:

forelæsning, opgaveløsning og heldagsworkshops 

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 13-skala, Intern censur

2 timers skriftlig eksamen  

Litteratur udover forskningsartikler:Henning Christiansen: Sprog og abstrakte maskiner,
3. reviderede udgave,
Datalogiske noter 18, Roskilde Universitetscenter,
2000.
Ivan Bratko: Prolog, Programming for Artificial
Intelligence, Third
edition, Addison-Wesley, 2001
Kort uddrag af Aho, Sethi, Ullman: Compilers:
Principles, Techniques and
Tools, Addison-Wesley, 1986.
Supplerende noter