# 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.*
¯\_(ツ)_/¯