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) that at least the tasks and relationships (e.g., dependencies) appear in this flow diagram. In our example, we identified all tasks and drew them on a flip chart. Then we checked all tasks for dependencies. For each task that was dependent on another, we drew an arrowed line going from the nondependent task to the dependent task. The resulting drawing looked something like Fig. 11.3. 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. Somehow we had to “cut the cycle” to escape from this deadlock situation. For example, one of the cycles in Fig. 11.3 is the mutual dependency between “Add record” and “Make call.” When we removed the arrow from “Make call” to “Add record,” we allowed the process of constructing the layer diagram to be restarted by placing the “Add record” in Layer 2. Note that when an arrow is deleted, we do remove information from the flow chart (e.g., Fig. 11.3), for we want to keep this view of the tasks as well. Cykler borttagna och tidsflöde etablerat Open file 0 Find 1 Add record 2 Input name Input telephone 3 Create record 4 Make call 5 Check duplicates 6 FIG. 11.4. Layering result after “peeling.” The deletion of arrows in this step does not lead to information loss like the deletion of arrows in the previous step. We do not really delete them: They are demoted from being “explicit” to being “implicit” arrows in order to accommodate the transitivity of the partial ordering. Consequently, their deletion is not a creative activity and could easily be automated in a software tool that supports the construction of Task Layer Maps. (An important issue to consider is whether the gain in time is preferred over the gain in discussion with team members.) 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 FA027706 B9010000 C84AEBF1 83FA0077 06B80000 0000C383! B8010000 00C353BB 01000000! 008D0419 83FA0376 078BD98B! 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 cmp jbe mov mov dec jmp @b! ! @@:! pop ebx! ret! eax, edx, @f! ebx, ecx, edx! [ebx+ecx]! 3! ecx! eax! 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!
© Copyright 2024