# Programmering Undervisningen i programmering går over 7 uker. Du vil bli kjent med hva programmering er, lære om sentrale begreper innen programmering og ikke minst, bli i stand til å programmere enkle dataprogrammer i programmeringsspråket Python. Opplegget er nærmere beskrevet under lenkene nedenfor. ```python my_spoken_language = "norwegian" if my_spoken_language == "norwegian": print("Velkommen til python-undervisningen") else: print("Welcome to the Python class") ``` Stoffet som ligger ute her nå (pr. 3. juli 2020) er det som ble brukt i 2019. Dette stoffet vil bli oppdatert før undervisningen starter i uke 39. En viktig endring er at vil utvide fra 5 til 7 uker undervisning. Selv om det blir endringer, så vil vi likevel i store trekk følge samme opplegg som i 2019. Blant annet vil vi bruke samme nettkurs fra Udacity. ## Læringsressurser og læringsarenaer Den viktigste læremidlet disse ukene er et nettbasert kurs med videoforelesninger og oppgaver. Kurset leveres av Udacity og er gratis for alle. I tillegg til dette vil det være 3 ukentlige samlinger med undervisning, gruppearbeid og veiledning. Det finnes mange nett-ressurser om python. Her skal vi bruke [*Fundamentals of Python Programming*](https://folk.ntnu.no/sverrsti/INGG1001-H2019/pythonbook_20191015.pdf) av *Richard L. Halterman* som er en komplett lærebok, tilgjengelig som pdf-fil. ## Hvordan komme i gang - Registrer deg som bruker på Udacity-kurset [*Introduction to Python programming*](https://www.udacity.com/course/introduction-to-python--ud1110). - Du kan starte på kurset når som helst. Alt foregår i nettleseren, så du trenger ikke å installere ekstra programvare. - Les aktuell teori fra læreboka - følg sidetalls-anvisningene i tabellen nedenfor. - Nærmere informasjon om disse kommer i løpet av september. ## Uke 41 Denne uka starter vi med intro-forelesninger om Python, og vi skal lære om de grunnleggende elementene i programmering. Forelesningsnotater og link til opptak vil bli lagt ut her etter forelesningene: - Introduksjon til programmering og Python, undervisningsopplegg - [Opptak](http://forelesning.gjovik.ntnu.no/publish/1570446061-72b58a71ed64/combined.mp4) - [Lysark](https://slides.com/sverres/python-50/fullscreen#/) - [Opptak - bare skjerm](https://screencast.uninett.no/relay/ansatt/sverrstintnu.no/2019/07.10/2724733/INGG1001_Python_intro_-_20191007_130339_39.html) - Variabler og datatyper - [Opptak](http://forelesning.gjovik.ntnu.no/publish/1570449661-da560b8c522b/combined.mp4) - [Lysark](https://slides.com/sverres/python-51/fullscreen#/) - [Opptak - bare skjerm](https://screencast.uninett.no/relay/ansatt/sverrstintnu.no/2019/07.10/2028267/INGG1001_-_Variabler_og_datatyper_-_20191007_140312_39.html) Vi forutsetter at du i løpet av uka ser igjennom videoene og gjør oppgavene i Udacity-kurset, i modulene "Why Python Programming", og "Data Types and Operators", helst før forelesningene på onsdag. Ta gjerne med øretelefoner til samlingene. - [Startside for Udacity-nettkurs, *Introduction to Python programming*](https://www.udacity.com/course/introduction-to-python--ud1110) - [Lærebok (pdf)](https://folk.ntnu.no/sverrsti/INGG1001-H2019/pythonbook_20191015.pdf) - [Jupyterlab/Jupyter Notebook](https://ingg1001.apps.stack.it.ntnu.no/) - Ukeoppgave(r)ligger under data-mappe i Jupyterlab Felles-samling onsdag - Intro til ukeoppgave del 2 - [Opptak 1. time](https://forelesning.gjovik.ntnu.no/publish/1570626061-ef393e0e9c0c/combined.mp4) - [Opptak - bare skjerm](https://screencast.uninett.no/relay/ansatt/sverrstintnu.no/2019/09.10/1715133/INGG1001_-_dag_2_-_20191009_154150_39.html) - [Lysark](https://slides.com/sverres/python-50-52/fullscreen) - Info om løsningsforslag - [Opptak 2. time](https://forelesning.gjovik.ntnu.no/publish/1570629661-7a1fa83259a6/combined.mp4) - [Opptak - bare skjerm](https://screencast.uninett.no/relay/ansatt/sverrstintnu.no/2019/09.10/372133/INGG1001_-_uke_41_-_lsningsforslag_-_20191009_154848_39.html) ## Uke 42 Ukens tema er datastrukturer. Udacity-kursets Lesson 3 behandler dette. Forelesning mandag 14.10 - [Om objekter i Python](https://slides.com/sverres/python-50-54/fullscreen#/) - [Datastrukturer](https://slides.com/sverres/python-51-55/fullscreen#/) - [Eksempel på bruk av datastrukturer](https://slides.com/sverres/python-50-54-56/fullscreen#/) - [Opptak](http://forelesning.gjovik.ntnu.no/publish/1571054462-9bfb3a40cdc0/screen.mp4) - [Opptak 1. time - bare skjerm](https://screencast.uninett.no/relay/ansatt/sverrstintnu.no/2019/14.10/2824267/INGG1001_Objekter_Datastrukturer_-_20191014_130402_39.html) - [Opptak 2. time - bare skjerm](https://screencast.uninett.no/relay/ansatt/sverrstintnu.no/2019/14.10/1875533/INGG1001_Obliger_-_Datastrukturer_-_eksempel_-_20191014_134736_39.html) Forelesning onsdag 16.10 - [Fra matematisk formel til Python-kode](https://folk.ntnu.no/sverrsti/INGG1001-H2019/web_mercator.html) Om plotting i Jupyterlab/ med Jupyter notebooks - [Intro til plotting med Matplotlib](https://folk.ntnu.no/sverrsti/INGG1001-H2019/plot_intro.html) - [Plotting med Matplotlib og Pandas](https://folk.ntnu.no/sverrsti/INGG1001-H2019/kd_ping.html) - [Opptak](http://forelesning.gjovik.ntnu.no/publish/1571234461-9f27d044feb1/combined.mp4) - Gjennomgang ukeoppgave fra 35:00, Plotting m.m. fra 1:00 ## Uke 43 Ukens tema er kontrollstrukturer (betingelser, valg, løkker). Udacity-kursets Lesson 4 behandler dette. Forelesning mandag 21.10 - [Python kontrollstrukturer](https://slides.com/sverres/python-51-55-57/fullscreen#/) - [For-løkker](https://folk.ntnu.no/sverrsti/INGG1001-H2019/For.html) - [Opptak](http://forelesning.gjovik.ntnu.no/publish/1571659382-210105ab3545/combined.mp4) Forelesning onsdag - [For-løkke og fil-lesingseksempel](https://slides.com/sverres/python-50-54-56-58/fullscreen#/) - [Opptak](http://forelesning.gjovik.ntnu.no/publish/1571839261-51d13e99b7a0/combined.mp4) ## Uke 44 Ukens tema er funksjoner. Vi vil også begynne å se på scripting. Det innebærer bl.a. å lage en ny type filer, filer med endelse .py, som kan kjøres av python, og som ikke er avhengig av Jupyterlab. For de som er interessert, anbefaler vi å installere Anaconda, for å kunne kjøre programmer på egen PC. Forelesning mandag - [Funksjoner](https://slides.com/sverres/python-51-55-57-59/fullscreen#/) - [Opptak](http://forelesning.gjovik.ntnu.no/publish/1572267661-250827b2863e/combined.mp4) - [Installasjon av Anaconda - PDF](anaconda_installasjon.pdf) - [Installasjon av Anaconda - opptak (ca. 5 min.)](https://screencast.uninett.no/relay/ansatt/sverrstintnu.no/2019/27.10/321133/INGG1001_Anaconda_-_20191027_141519_39.html) - [Om programmeringsverktøy](lage_py_filer.pdf) Det anbefales å installere Anaconda innen onsdag. Forelesning onsdag - [Om lesing og skriving til fil](https://slides.com/sverres/python-51-60/fullscreen#/) - [Kodeeksempler](http://folk.ntnu.no/sverrsti/INGG1001-H2019/files.html) - [Formatering av utskrift med f-strings](http://folk.ntnu.no/sverrsti/INGG1001-H2019/fstrings.html) - [Opptak - 0-12: Kahoot](http://forelesning.gjovik.ntnu.no/publish/1572447662-dab5ad27c152/combined.mp4) Opptaket er dessverre uten lyd ## Uke 45 Ukens tema er scripting Forelesning mandag 04.11 - [Viktige avslutningstemaer](https://slides.com/sverres/python-50-52-61/fullscreen#/) - [Programutvikling og feilhåndtering](https://slides.com/sverres/python-51-60-62/fullscreen#/) - [Opptak](http://forelesning.gjovik.ntnu.no/publish/1572872461-42e73a8e1dda/combined.mp4) Fellestime onsdag 06.11 *NB: Starter kl 15:15* - Kahoot - Tid til veiledning ## Nettkurs og litteratur-referanser Uke |Kurs-leksjon |Lærebok ---|---|--- 41 |Why Python Programming |Ch. 1 - The Context of Software Development | |Data Types and Operators |Ch. 2 - Values and Variables | | |Ch. 3 - Expressions and Arithmetic 42 |Data Structures |Ch. 9 - Objects (t.o.m. 9.2) | | |Ch. 10 - Lists | | |Ch. 11 - Tuples, Dictionaries, and Sets 43 |Control Flow |Ch. 4 - Conditional Execution | | |Ch. 5 - Iteration 44 |Functions |Ch. 6 - Using Functions | | |Ch. 7 - Writing Functions 45 |Scripting |Ch. 9.3 - File Objects | | |Ch. 12 - Handling Exceptions (t.o.m. 12.3) ## Timeplan for samlinger NB! Dette er 2019-timeplanen [Timeplan for Gjøvik](https://www.ntnu.no/studier/emner/INGG1001/2019/1#tab=timeplan) - mandager 12:15-14:00: Forelesning, presentasjon av ukeoppgaver, gruppearbeid - onsdager 14:15-16:00: Gjennomgang av ukeoppgaver, korte forelesninger, veiledning ved emnelærer og studentassistenter - øvingstimer (forskjellige tidspunkt): Gruppearbeid/individuelt arbeid, veiledning ved studentassistenter ## Programvare ### Jupyter Notebook Jupyter Notebook er tilgjengelig gjennom en skyløsning fra NTNUs IT-avdeling. Løsningen vil bli nærmere presentert på samlingene. ### Anaconda - [Installasjon av Anaconda - PDF](anaconda_installasjon.pdf) - [Installasjon av Anaconda - opptak (ca. 5 min.)](https://screencast.uninett.no/relay/ansatt/sverrstintnu.no/2019/27.10/321133/INGG1001_Anaconda_-_20191027_141519_39.html) ## Obligatoriske oppgaver Oppgaven er to-delt. I del 1 skal du skrive programkode for ett eller flere nærmere fastsatte temaer og integrere dette i et Jupyter Notebook-dokument. I del 2 skal du skrive programkode som skal løse en oppgitt problemstilling. Problemstillingen kan være tilpasset studentens fagområde, og den vil inneholde flere del-elementer: - innlesing av data fra fil - tilrettelegging og bearbeiding av innleste data - beregninger - skriving av resultater til fil Begge del-oppgavene skal gjøres individuelt. __Endelige oppgavetekster__ - [Del 1](http://folk.ntnu.no/sverrsti/INGG1001-H2019/oblig_3_del_1.html) (lagt ut 13.10) - [Del 2](oblig_3_del_2.html) (lagt ut 13.10) Innleveringsfrister: - del 1: Fredag 25.10 kl. 12:00 - del 2: Fredag 15.11 kl. 12:00 ## Python-ressurser ### Udacity-kurs - [Introduction to Python Programming](https://www.udacity.com/course/introduction-to-python--ud1110) (krever registrering) ### Lærebok - [Halterman, RL: Fundamentals of Python Programming](https://folk.ntnu.no/sverrsti/INGG1001-H2019/pythonbook_20191015.pdf) ### Python - [W3Schools - Python Reference](https://www.w3schools.com/python/python_reference.asp) - [W3Schools - Python tutorial](https://www.w3schools.com/python/default.asp) - [Python dokumentasjonssider](https://docs.python.org/3.7/) - [The Python Standard Library](https://docs.python.org/3.7/library/index.html) - [Python hjemmeside](https://www.python.org/) - [Videoer fra TDT4110 - Informasjonsteknologi - grunnkurs](https://www.ntnu.no/wiki/display/tdt4110/Python-videoer) ## Emnelærere og undervisningsassistenter - Emnelærer: [Sverre Stikbakke](https://www.ntnu.no/ansatte/sverre.stikbakke) --- *NTNU 10.08.2019 Sverre Stikbakke* *03.07.2020: Lagt inn tekst om at dette er 2019-versjonen.*

¯\_(ツ)_/¯