GithubHelp home page GithubHelp logo

lunduniversity / schoolprog-satellite Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 1.0 63.92 MB

Programming exercises for primary and secondary education, using satellite data. In Swedish.

Python 1.16% Jupyter Notebook 97.91% HTML 0.30% JavaScript 0.50% CSS 0.05% Ruby 0.01% SCSS 0.08%

schoolprog-satellite's People

Contributors

antonkla avatar bjornmagn avatar gorelhedin avatar hannamarsh avatar idarasmark avatar karolinapntzt avatar oscarwiklund96 avatar teodorbucht1729 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

gorelhedin

schoolprog-satellite's Issues

Allmänna förbättringsideer

Blandade ideer om förbättringar (skapa ny issue eller flytta till annan issue om vi påbörjar någon av dessa):

  • Utmaningar: Lägg till utmaning på slutet för den som är duktig och hinner färdigt fort. Men utan att de andra behöver känna sig som att de inte blev färdiga. Kan skriva ngt i stil med "Ideer om du vill gå vidare: ..."
  • Projekt: Man skulle kunna förbereda för projekt där man gör något mycket likt en viss övning, men med annan data. Detta skulle också kunna vara exempel på utmaning.
  • Quizzes: Finns inte i alla uppgifter ännu.
  • Quizzes: Skulle kunna göra tjusigare quizzes där det interaktivt blir rött/grönt. Kan göras med Javascript, men måste hostas på annat ställe än direkt i github.
  • Feedback: Skulle kunna göra en google form som lärare/pedagoger kan fylla i med feedback för olika övningar.
  • Bild: Lägg till liten bild i början av varje uppgift, som inspiration, och för att lätt skilja på de olika uppgifterna.
  • Snabbreferens: Gå igenom uppgifterna och se till att snabbreferensen är uppdaterad.

Torkan 2, comment from Karolina

Karolina skriver:

Bara en liten grej angående övningen "Torkan 2". VCI används främst för att jämnföra nuvarande pixelvärden till tidigare med syftet att ge tidiga varningssignaler för t.ex. torka. I övningen skulle det därför nog räcka att bara beräkna VCI för 2018.

Förkunskaper

Elever och lärare behöver veta vilka förkunskaper som behövs för uppgifterna. En skiss finns i exercises/prerequisites.md, men behöver göras färdig. Det kan vara dags att se över detta när vi har gjort färdigt skisser på 1-2 uppdrag.

Integrera Karolinas uppgifter

Karolina har lagt in uppgifter om Kolcykeln och Avskogning. Görel går igenom uppgifterna och uppdaterar.

För Colab-dokument visar sig följande:

  • Dölja kodcell. Detta kan göras genom att gå in i cellen och lägga till en "Form". Man sätter en lämplig titel, t.ex. "Bakgrundskod för karta". Man kan visserligen se denna titel, och man kan dubbelklicka på den för att få se koden. Men man slipper se koden och bli förvirrad av den. Jag har dokumenterat i uppgiften att det finns sådan bakgrundskod.
  • Fälla in/ut sektioner. Textceller med #-headings i markdown blir en hierarki av sektioner. Om det inte finns metadata om "Collapsed_Sections" i ipynb-filen så verkar någon outgrundlig algoritm att användas för att fälla in/ut sektioner när man browsar in på sidan första gången. Jag vill ha alla utfällda. För att spara denna metadata verkar man behöva explicit göra "Spara" i colab-vyn innan man sparar som kopia till github. För att editera behöver man alltså ta upp uppgiften (med colab-länken), spara en kopia till sig själv. Editera där. Och när man är färdig kan man först spara en extra gång och sedan göra spara kopia till github.
  • Include link to Colaboratory Om man klickar för denna box när man sparar kopia till github så läggs en colab-länk i metadata i början av dokumentet. Den visas i previewn av ipynb-filen i github, vilket är praktiskt: om man browsat till ipynb-filen kan man direkt klicka sig vidare till colab-viewn av filen.

Fler saker som behöver göras:

Kolcykeln

  • Gå igenom texten. Fixa läsbarhet, stavfel etc.
  • Göm kod som inte ska synas genom att lägga till en Form i kodfältet.
  • Se till att sektioner som ska vara utfällda är det per default.
  • Lägg till info om uppgiften i README
  • Behöver något uppdateras i Lärarhandledningen?
  • Uppdatera slides

Avskogning

  • Gå igenom texten. Fixa läsbarhet, stavfel etc.
  • Ta bort onödiga funktioner.
  • Lägg till instruktioner om hur man kör kodrutor
  • Gör histogrammen jämförbara i höjd (samma y-range).
  • Lägg till lite frågor att reflektera över relaterat till plottarna.
  • Namna om från "Copy of ..." till bara "avskogning".
  • Lägg till info om uppgiften i README
  • Behöver något uppdateras i Lärarhandledningen?
  • Uppdatera slides

Mer

  • Skapa lösningar. Lägg på Drive eller Github??

Förbättra huvudsida för exercises

Huvud-README:n för exercises behöver göras tydligare.

  • Tabellen borde visa både vilka Python-begrepp man lär sig och vilka man behöver kunna. Då kan man lättare se i vilken ordning man kan köra uppgifterna.
  • De ursprungliga uppgiftsvarianterna som Oscar o Teodor gjorde kan flyttas till annan sida, så att man inte av misstag kör dem i stället för de som bearbetats av Görel.
  • Kan dokumentera vilka delar av de ursprungliga uppgifterna som ännu inte bearbetats.
  • Komplettera snabbreferensen så den täcker alla uppgifterna.
  • Faktorisera ut snabbref för bokeh och ipywidgets till prototyp-snabbref (så länge som de uppgifterna inte ingår i de bearbetade uppgifterna.f
  • Namna eventuellt om filer så det blir konsistent, speciellt med tanke på ursprungliga o bearbetade uppgifter.

Globala mål

Lägg till folder med lärarhandledning om globala mål som kan diskuteras i samband med uppgifterna. Kan göras när vi samlat upp materialet på google drive.

Uppdatera också lärarhandledningen för att peka på informationen.

Förbättra Väderdata A

  • Många som fastnar på medeltemp. De förstår att de ska dela summan på längden men förstår ej hur. Vanligt förekommande var print(sum(ts))/print(len(ts)). Tydliggör hur print ska användas.
  • Anpassa en del av tipsen så att de kommer ut när man printar som pdf. Om det är viktig information ska den ej ligga i dropdown.
  • Loopen med alla värden är för svår. Behöver göras i mindre steg.
  • Format -> Round. Ändra tipset så man använder round(v,3) i stället för format. För krångligt med format. Kan också ändras till att man gör det som en liten uppgift i stället för tips. Det står också fel variabelnamn i nuvarande tips: “temperatures” i stället för “ts”
  • Ändra "ts" till "temps", bättre med tydliga än korta variabelnamn för eleverna.
  • Tydliggör att variabelnamn måste vara unika. Vissa använda samma variabelnamn flera gånger vilket gav problem i senare uppgifter. Förtydligat vilka namn man skall använda.
  • Förklara hur den lokala variabeln word fungerar.
  • Tydliggör vad legend gör. Förklara eventuellt kopplingen mellan legend och label. Visa med bild?
  • I texten använder vi svenska namn men i koden engelska, bra eller dåligt? Vissa elever använder de svenska namnen i sin kod vilket blir fel när de sedan kopierar stycken som innehåller det engelska.
  • Eventuellt förklara skillnaden på print(x,y) och print(x) \n print(y). Förtydligat vad print(x,y) gör.
  • Uppdraget när ena listan är len = 3 och andra len = 6. Finns endast lösningsförslag för båda till 6. Eventuellt lägga till för båda till 3? Vissa som försökte sig på denna lösning.
  • Förklara skillnaden mellan () och []. Vissa använde () vilket skapar tupler men fungerade ändå. Skrivit lite om detta i lärarhandledningen. Funkar så länge man modifierar listorna, t.ex. med append, vilket man behöver när man läser in från fil.
  • Se över quiz
  • Gå igenom det som faktoriserats ut till Väderdata B
  • Se över quiz för Väderdata B

Bygg ut uppgiften med fler orter än Lund:

  • Gör script som genererar juli-temperaturer för många orter
  • Lagra datafilerna i repot schoolprog-satellite-data
  • Uppdatera uppgiften med att själv kopiera datafiler till repl.it.

Diverse kommentarer på uppgifterna från Niklas Fors

Weatherdata_A_replit.md:

  • namngiven<
    (extra tecken: <)
  • Fråga 9:
    x = [1, 2 3]
    (kommatecken saknas)

Keeling_A_replit.md:

Uppgiften har förenklats så att man inte går igenom split(...) (med argument). Läser i stället in radvis och använder endast split() (utan argument) för att dela upp rader i ord. Inläsningen blir då också mer robust och ignorerar tomma rader.

  • "Ett saknat värde i kolumn 4 representeras som talet 99.99"
    => -99.99
  • om strängar: ´hej´ => 'hej'
    (raka fnuttar)
  • "Om man anropar split utan separator-argument, alltså med split(), så är det samma sak som att anropa med en blank som separator, alltså split(" "). Vi säger att default-separatorn är ett blanktecken.""
    => Stämmer ej. Från dokumentationen:
    If sep is not specified or is None, a different splitting algorithm is applied: runs of consecutive whitespace are regarded as a single separator, and the result will contain no empty strings at the start or end if the string has leading or trailing whitespace. Consequently, splitting an empty string or a string consisting of just whitespace with a None separator returns [].
  • 3.2. I tidigare uppgifter har man skrivit "for line in f: ...". Jag fick också problem när jag hade filen lokalt eftersom min editor lägger till newline i slutet av filen (data.txt), dvs, sista elementet i listan data.split("\n") är en tom sträng. Jag får ej detta problem om jag skriver "for row in f:" istället. Bara en observation.
  • Fråga 3, lst = [0.0, 4.3, 2.7, 4.5]]
    => en ] för mycket i slutet

co2_A_replit:
Inläsningen har förenklats med splitlines() i stället för split("\n"). Slices kvar eftersom man annars behöver förklara andra saker. Har döpt om vissa variabler.

  • EJ FIXAT. Många nya begrepp i den här labben. Jag hade haft datan som en lokal fil (som tidigare) och struntat i slices. Det går att undvika slice i labben:
    plt.legend(handles=list(reversed(bars)))
    istället för
    plt.legend(handles=bars[::-1])
    samt att man ignorera första raden med next(f) om man har ett filobjekt:
    f = open("data.txt")
    next(f)
  • plt.grid(True) -- förut var det plt.grid()

drought

  • Fråga 4, fel svar?
    "den reflekterar grönt och --infrarött ljus--, men absorberar rött ljus"

Förbättra SCB koldioxid A

  • Svårt att förstå att för att titta på kategorin "arbetsmaskiner" behöver man slå upp med textsträngen "ARBETSMASKINER, TOTALT"
  • Lite oklart vad "response" är när man hämtar data med url.
  • Lite oklart när man ska behålla kod till nästa deluppgift, och när man ska kommentera bort den
  • Finns det något sätt i repl.it för att kommentera bort ett stycke kod på en gång?
  • Lagt till visualisering av listor och dictionaries.
  • Lagt till reflektionsövning om vad sektorerna betyder.
  • Gör robust borttagning av totalvärdena (som inte förlitar sig på ordningen av keys).
  • NumPy används bara för att lätt lägga ihop två listor elementvis. Kan göras med separat metod i stället. (Kan i princip göras med list comprehension, men det blir lite för avancerat.) Ej ändrat.
  • Lägg till övningar om att reversera listor i slicing-delen.
  • Lägg till liten övning om bar-plot för små värden, innan man gör det för hela datan.

Web page bugs

The web pages are generated using Github pages.
Some glitches that should be fixed:

Page content

  • Heading level 4 (#### ...) shows far-left-adjusted with ////. See snabb-ref Python.
  • Heading level 5 (##### ...) shows in Architect font. See Weatherdata A.
  • Tables show in full page width, which looks ugly. See Weatherdata A.
  • Font inside table is other than outside.
  • Could make openable details (like solutions) more prominent, to distinguish from other text. E.g., smaller font, or with some lines.

Responsive design

  • Design could be more responsive concerning navigation bar: show menu instead of two lines of menu buttons.
  • Footer does not stick to bottom when window is narrow.

Printing could be made nicer with a suitable css description.

  • Bullets are currently not printed.
  • For some reason headings level 2 turn out red. All others black.
  • Syntax highlighting missing in code
  • The font is not the best

Web page title

  • All tabs currently have the same label. Would be nice if the tab was set depending on sub page.

Lärarhandledning

Vore bra att ha lärarhandledning.

  • Flytta över info från google drive
  • Lägg även till lite om hur man kör Google Colab.
    • Småsak: Om man försöker browsa till colab-uppgift utan att ha loggat in så får man felmeddelande 400.
  • Lägg till info om snabbreferens till Python. Lagt detta i exercise/README.
  • Lägg till lite info om hur man hittar information om var datan finns (finns i våra CONTRIBUTOR-filer i varje katalog, tror jag), om läraren vill leta upp liknande data själv.
  • Tipsa i lärarhandledningen om att man kan behöva ladda om repl.it-fönstret.
  • Tipsa i lärarhandledningen om hur man enklast skriver ut uppgiften.
  • Tipsa om vilka datorer man kan köra på (Mac, Windows, Linux, Chromebook, men inte iPad)
  • Om man kör i en annan Python-miljö än repl.it eller Colab kan det hända att matplotlib och numpy-biblioteken behöver installeras innan man kan importera dem.
  • Uppgifterna är gjorda för att köra i Python 3.6. Kolla att du har minst denna version genom att ... (Det är många saker som fungerar annorlunda i den äldre Python version 2.7.)
  • Om man trycker på run innan den hunnit spara efter en ändring verkar den hänga upp sig.
  • Tips om att downloada png-bilderna för att visa dem i större format på skärmen.
  • Tips om att man kan behöva lägga till anrop till show om man kör på annan plattform än repl.it.
  • repl.it verkar hänga sig om man försöker titta på en npz-fil.

Eventuellt kan man skriva mer om följande:

  • Mer om pedagogik och vad entreprenöriellt lärande innebär i lärarhandledningen.
  • Kan tipsa om att köra direkt i repl-fönstret för enkla print-grejor. (Eller separat övning?)
  • Se till att all kod kommer med när man skriver ut uppgifterna. Nu är en del rader för långa.

Förenkla NumPy

Anpassa till skolelever:

  • Fokusera på enkla elementvisa operationer (inte matrismultismultiplikation)
  • Ta bort linspace, arange och att plotta funktioner som sin, exp o tan. Detta används inte i uppgifterna. De plottar ju bara data i uppgifterna.
  • Lagt till exempel på att plotta matris.
  • Lägg till quiz

Möjliga tillägg:

  • Kan eventuellt göra en NumPy B med mer avancerat material som matrismultiplikation, sin, exp, etc. Se https://www.matteboken.se för när de lär sig vad.

Torkan sommaren 2018

Karolina Pantazatou på Naturgeografen har påbörjat skiss på uppgift där man tittar på data från satellitbilder för att se på växtlighet. Uppgiften är skapad i Jupyter och kör på naturgeografens hub. Men där behöver man ha login för att köra. Skiss och data finns på Google Drive.

Det vore bra om vi kan skapa uppgifter baserat på detta material, men som man kan köra antingen på repl.it och/eller google colab.

Jag har gjort experiment i google colab. För att köra där behöver man först ladda upp en 65 MB stor hdf-fil, vilket tar lång tid.

Jag gjorde också ett experiment med att extrahera en mindre mängd data, och lagra som numpy arrayer. Då kunde jag köra det i repl.it. (Att använda hdf-filer från repl.it fick jag inte ordning på - jag kunde inte installera biblioteket gdal som används för att packa upp hdf-filer.)

Det vore bra om vi kan göra en Jupyter notebook med källkoden här i repot, men som man kan få upp i google colab.

Vi kan också göra en variant av uppgiften där man har instruktionerna här i README, men kör på repl.it.

Plots don't show in repl.it

repl.it seems to have changed their default setting of the interactive mode. Previously it was on by default, now it is off.

It is possible to call plt.show() to show the plot, but that hangs the program. This behavior intentional to make things work from the command line (the process would otherwise just kill the window).

It is better to turn on the interactive mode in the beginning, by calling plt.ion(). All repl.it exercises need to be updated to explain how to do this.

Förbättra Keelingkurvan A

  • Separatorn ska ha minst ett tecken. Behöver klargöra skillnaden mellan tom sträng och inget argument alls. Beskrivit att utan argument är default att separatorn är blank.
  • Eventuellt ändra så att man läser in med readline i stället för att splitta på newline. Inte ändrat. Men kommenterat att man kan läsa in på flera olika sätt.
  • Lägg till quiz

Förbättra Torkan

Kommentarer från lärarworkshopen:

  • I ett av svaren står det kommentar på samma rad som koden. Förvirrande - man vet inte vad som är kod och vad som är vanlig kommentartext.

  • Efter att man räknat ut NDVI för en punkt borde man göra det för hela lilla 3x4-matrisen.

  • Karolina har bättre värden på vad NDVI betyder i Avskogningsuppgiften. Uppdatera detta. Men bara efter att ha kollat med Karolina. Hennes värden gäller LandSat, och det är inte säkert att det även gäller Sentinel-2. Har använt värden med källa i stället för Karolinas värden.

  • Förenklat plot-koden genom att använda imshow.

  • Förenklat koden genom att man inte behöver omvandla till float. Det blir precis samma resultat utan. Kanske gammal rest efter Python 2.7 med heltalsdivision??

  • Lägg till numrering på uppdragen

  • Lägg till quiz

Karolinas NDVI - värden:

  • [0.5, 1) --- > regnskog
  • [0.4, 0.5) --- > tempererad skog
  • [0.3, 0.4) --- > låg vegetation
  • [-0.1, 0.3) --- > nakna bergsklippor, sand eller snö
  • [-1, -0.1) --- > vatten

Kör igenom grundläggande uppgifter från LU skolprogrammering

Kör igenom grundläggande uppgifter i LU skolprogrammering, dels för att se hur de är upplagda, och dels för att notera vilka Python-begrepp eleverna lärt sig där.

Troligen är följande en bra mix: Månghörning, Slumpvandring, Kvadrera Talet, Avlusning. Titta eventuellt även på Turtle (som dock är lite lång) och Plotta funktioner (som använder matplotlib).

Kanske skulle vissa uppgifter i LU skolprogrammering behöva ändras eller förbättras. Några ändringsförslag finns i LU skolprog-repot, se issuen Refactor exercises, och fyll gärna på mer där.

Gör Jupyter-filerna på GitHub till original

Just nu hanteras Jupyter-filerna så att de är i original på Google Drive och kopieras manuellt till GitHub när de ska sparas. Detta borde ändras så att originalen ligger på GitHub, och att länkarna går till GitHub-versionerna.

Det som behöver göras är följande:

  • Kopiera nuvarande Drive-original till GitHub så att vi säkert har senaste versionerna. Ok.
  • Vissa tillägg i Torkan på Drive-filen. Lägg till i GitHub-filen.
  • Sätt om länkarna i README.md så att de går till GitHub. De ska ha särskilda adresser. Se https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb
  • Fler länkar återstår att fixa i:
    • exercises/drought2/CONTRIBUTING.md -- Jupyter-fil med instruktioner. Lägg på Github.
    • weatherdata/Weatherdata_A_replit.md -- refererar till png-fil som borde ligga på github
  • Öppna via de nya länkarna och committa nya versioner till GitHub. Då kommer lunduniversity--organizationen att behöva ge tillstånd, men det kan jag (Görel) fixa.
  • Editera gärna texten så att varje mening blir en separat rad i Markdown. Då kommer commit-diffar att bli enklare att se. Kan fixa detta efter hand. Fixar inte nu.
  • Uppdatera dokumentationen i for-developers om hur filerna hanteras.
    • Lagt till colab-länkar till dessa dokument också.
  • Behöver man göra något med Binder-filen? Nej, tror inte det.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.