729G04 Programmering och diskret matematik Kursintroduk+on Jody Foo <jody.foo@liu.se>
Föreläsningsöversikt Allmän kursinforma9on Vad är diskret matema9k Vad är programmering
Allmän kursinformaion
Att läsa på universitetet Vad jag som lärare tror om er: Ni är intresserade av universitetsstudier Ni är i alla fall nyfikna på kogni9ons- vetenskap Ni läser kursinforma9on och tar ansvar för era egna studier
Att läsa på universitetet Kursinforma9on ska finnas på kurshemsidorna/lisam Fråga om något är oklart!
Universitetskurser Formell struktur Personal och roller
Kursnamn och kurskod Namn: Programmering och diskret matema9k Kurskod: 729G04 Kurskoden är vik$g
Examination Kurser examineras. Varje kurs har minst er examina+onsmoment. Varje examina9onsmoment har en provkod. Resultat på examina9onmoment registreras via provkod i Ladok. Ni ser resultaten från Ladok i studentportalen. EVer ar ni får godkänt på alla examina9onsmoment får ni betyg på hela kursen.
729G04 Examinationsmoment och provkoder UPG1 HemuppgiV i diskretmatema9k LAB5 Individuella datorlabora9oner LAB6 Datorlabora9oner i par TEN3 Datorsalstenta
Personal och roller Administratör: har hand om allt som ska registreras formellt: betyg, kursregistrering m.m. Assistent: Lek9onsassistent, labbassistent Examinator: examinerar och särer betyg Kursassistent: har hand om "opera9v" kurslogis9k Kursansvarig: Ansvarar för kursen under kursens gång Lärare: Håller föreläsningar
Personal på 729G04 Examinator och kursansvarig: Jody Foo Kursassistent: Evelina Rennes Lärare i diskret matema+k: Anders Märak Leffler Lärare i programmering: Jody Foo
Personal på 729G04 Lek+onsassistenter i DM: Anders Märak Leffler, Johan Falkenjack Labbassistenter: Evelina Rennes, Ida Palm, Per Fallgren & Sarah Albertsson Kursadministratör: Annelie Almquist
Kurshemsidan http://www.ida.liu.se/~729g04!
E-post 729G04@ida.liu.se!
Kursplan, kursmål och kursinnehåll
Kursplan Varje kurs har en kursplan Du hirar kursplanen på kurshemsidan och via kogvetprogrammets sida för studenter Kursplanen består bl.a. av kursmål: kunskapsmål som examineras kursinnehåll: översikt över innehåll
Kursmål för 729G04 använda begrepp och modeller från grundläggande diskret matema9k konstruera grundläggande datorprogram och formella modeller för enkla kogni9onsvetenskapliga 9llämpningar förklara vad en algoritm är och 9llämpa grundläggande algoritmer använda olika datatyper/datastrukturer använda olika typer av styrstrukturer visa förståelse för vad datormodellering innebär och ha förmåga ar konstruera enkla datorprogram
Kursinnehåll för 729G04 grundläggande diskret matema9k, t ex mängder, rela9oner, funk9oner, diskreta datastrukturer, defini9oner och formella språk, datatyper/datastrukturer, t ex tal, strängar, tupler, listor, träd, sekven9ella och hierarkiska strukturer, arrayer, länkade strukturer, uppslagsbaserade strukturer, styrstrukturer, t ex sekvens, selek9on, itera9on, rekursion, villkor algoritmer och datastrukturer, t ex för sökning, urval, omformning, och uppslagsalgoritmer handhavande av aktuella datorsystem översiktlig introduk9on 9ll datavetenskap principer för abstrak9on programmeringsspråket Python felsökning
729G04 - Examinationsmoment UPG1 1,5hp HemuppgiV i diskretmatema9k LAB5 1 hp Individuella datorlabora9oner LAB6 1 hp Datorlabora9oner i par TEN3 2,5 hp Datorsalstenta För betyget G: Alla moment godkända För betyget VG: Alla moment godkända & VG på tentan
Hemuppgift, tenta, deadlines för labbar HemuppgiQ i diskret matema+k vecka 39, komplerering vecka 43 Datorsalstenta 17 december 2015, omtenta 18 januari 2016 Godkänd bok får tas med. Test av tentamiljön kommer erbjudas. Labbar Förstagångsinlämningar 11 januari 2016 KompleReringar 25 januari 2016 TIPS: Gör labbarna under terminen var i fas. Tentasök: hrp://www4.student.liu.se/tentasearch/
Kurslitteratur Strandh, R. 2014. Introduk*on *ll Datavetenskap. Kuhlman och Dahllöf. 2014. Matema*k för språkteknologer. (PDF:er) Miller & Ranum. 2013. How to Think Like a Computer Scien*st Learning with Python: Interac*ve Edi*on (Using Python 3.X). http://interactivepython.org/runestone/ static/thinkcspy/index.html! Downey. 2012. Think Python How to Think Like a Computer Scien9st. http://www.greenteapress.com/ thinkpython!
Översiktsschema Kursen är på 6hp UtspriR över 18 veckor ger ca 9h/vecka
Diskret matematik
hrp://www.sovicons.com/designers/deleket
Diskret matematik diskret = åtskiljd diskret obemärkt Gren av matema+ken logik mängdlära kombinatorik graveori topologi
Diskret och kontinuerlig
Diskret matematik i denna kurs Mängder Rela9oner Funk9oner Algoritmer Grafer och träd
Varför är diskret matematik viktigt för en kognitionsvetare? ER formellt språk för ar diskutera teorier och resonera inom/om t.ex. diskreta modeller i Ar9ficiell Intelligens Språkteknologi Programmering Databaser Denna kurs tar upp begrepp och deras nota+on, samt hur dessa används.
Diskreta modeller Världen är komplex och ovast inte diskret, men diskreta modeller är lärare ar jobba med: informa9on, kunskapsrepresenta9on språk (t.ex. bokstäver och ord) spelvärldar internt 9llstånd hos robot/agent nätverksstrukturer (t.ex. sociala nätverk, datornätverk)
Notation
f(x) =2x +3
{x x 2 N,x<10}
Begrepp
Exempel från uppgiftsanalys Task Layer Diagram er sär ar abstrahera och analysera uppgiver (Arnowitz 2004)
Initialt uppgiftsflöde för callcenterapplikation Open file Add record Input name Find Make call Check duplicates Create record Input telephone FIG. 11.3. Task set in an application flow chart.
Cykler borttagna och tidsflöde etablerat 0 Open file 1 2 Add record Find 3 Input name Input telephone Create record 4 Make call 5 Check duplicates 6 FIG. 11.4. Layering result after peeling.
Redundanta beroenden borttagna FIG. 11.5. Task Layer Map.
Uppgiftsanalysen en diskret modell består av en mängd uppgiver + riktade rela9oner mellan dem: en graf med hjälp av kunskaper i diskret matema9k får vi de begrepp vi behöver för ar representera dera i en dator vi kan sedan implementera er program som hjälper oss skapa er sådant diagram
Modellering med hjälp av diskret matematik Algoritmer er sär ar lösa problem som kan implementeras av datorprogram Exempel på uppgiver som kan lösas med en algoritm sökning (t.ex. ever en persons telefonnummer i en lista) tolkning/generering av språk analys av sociala nätverk
Vad är programmering?
D Sharon PruiR: hrp://www.flickr.com/photos/pinksherbet/
Programmering och kogvet Datainsamling Interak9onsdesign, interak9ons- och webbprogrammering Språkteknologi Simuleringar Ar9ficiell intelligens Närmaste fram+den 729G06 Programmering och logik (Kogvet 1, VT) 729G09 Språkvetenskaplig databehandling (Kogvet 1, VT) 729G43 Ar9ficiell Intelligens (Kogvet 2, HT)
Varför programmera? För ar man är lat... För ar datorn kan göra det snabbare För ar man vill simulera något För ar man vill automa9sera något För ar det är roligt! För ar man vill skapa något För ar datorn är bärre på ar hantera den typen av data...
ifttt.com
Att lära sig programmera Träning Tid Kunskap
hrp://www.flickr.com/photos/senoranderson/3363262014/
Vad gör man när man programmerar? Problemlösning Dela upp problemet i delproblem URrycker sig på er sär så ar en dator förstår Logiskt Tydligt Små steg i taget
patrick h. lauke: hrp://www.flickr.com/photos/redux/
Tekniken bakom programmering
En dator Program / Applika9oner Opera9vsystem Hårdvara
Hårdvara
Operativsystem Windows Mac OS X Linux BeOS, Solaris, ios, Android...
Program Word, Powerpoint Webbläsare Spel Videouppspelningsprogram...
En dator Program / Applika9oner Opera9vsystem Hårdvara
A program is a sequence of instructions that specifies how to perform a computation. The Way of the Program How to Think Like a Computer Scientist
Program Program skrivs med hjälp av er programmeringsspråk Programmeringsspråk = formellt språk Svenska, engelska, tyska osv = naturliga språk
Program Formella språk skiljer sig från naturliga språk genom ar de: har en strikt syntax saknar tvetydighet är bokstavliga, dvs ingen9ng "mellan raderna"
Lista över programmeringsspråk
HAI! CAN HAS STDIO?! PLZ OPEN FILE "LOLCATS.TXT"?! AWSUM THX! VISIBLE FILE! O NOES! INVISIBLE "ERRROR!"! KTHXBYE!
Högnivå- och lågnivåspråk
Fibonaccital Summan av de två föregående fibonaccitalen. De första två är 0 och 1 0, 1 0, 1, 1 0, 1, 1, 2 0, 1, 1, 2, 3 0, 1, 1, 2, 3, 5...
Fibonaccital
Maskinkod 8B542408 83FA0077 06B80000 0000C383! FA027706 B8010000 00C353BB 01000000! B9010000 008D0419 83FA0376 078BD98B! C84AEBF1 5BC3! A func9on in 32- bit x86 machine code to calculate the nth Fibonacci number
fib:! mov edx, [esp+8]! cmp edx, 0! ja @f! mov eax, 0! ret!! @@:! cmp edx, 2! ja @f! mov eax, 1! ret!! @@:! push ebx! mov ebx, 1! mov ecx, 1!! @@:! lea eax, [ebx+ecx]! cmp edx, 3! jbe @f! mov ebx, ecx! mov ecx, eax! dec edx! jmp @b!! @@:! pop ebx! ret! The same Fibonacci number calculator as above, but in x86 assembly language using MASM syntax
def fib(n):! if n == 0:! return 0! elif n == 1:! return 1! else:! return fib(n-1) + fib(n-2)! The same Fibonacci number calculator, but in Python
def fib(n):! if n == 0:! return 0! elif n == 1:! return 1! else:! return fib(n-1) + fib(n-2)!
Vad har vi gått igenom idag? Allmän kursinforma9on Kort om diskret matema9k Kort om programmering Se Strand kap 1 för en mer detaljerad introduk9on.
Nästa föreläsning Diskret matema9k med Anders Märak Leffler Begrepp: Mängder (alltså inte mängder med begrepp, utan begreppet mängder)
! http://www.ida.liu.se/~729g04! 729G04@ida.liu.se!