Kurshandbok för

Programutvecklingsteknik

Studietips från Pär

Min pedagogiska grundidé bygger på att lära sig programmering är som ett hantverk som kräver en kombination av teoretisk input och praktisk muskelminne. För att bygga en solid grund rekommenderar jag följande metodik: Avsätt 2–4 timmar dagligen. Varva läsning i kurslitteraturen med att se de inspelade föreläsningarna för att få olika perspektiv på samma koncept. Börja med att 'skriva av' befintliga kodexempel. Det kan låta enkelt, men det tränar ögat att se detaljer och syntax som man annars missar. Gör små, kontrollerade förändringar i koden och testkör direkt. Vad händer om du ändrar en loop eller en variabeltyp? Det är i felsökningen den verkliga förståelsen föds. Skapa ett eget 'projekt' som följer dig genom kursen. Det kan vara ett system för en bilfirma, ett register för en idrottsförening eller en personlig boklista. Genom att applicera det du lärt dig på en 'verkligt' projekt får du en praktisk kompetens.

Veckoplanering


Vecka 50

Kursmaterial

  • Kap 9 och rubrikerna: Creating a Dictionary, Retrieving a Value from a Dictionary, Using the in and not in Operators to Test for a Value in a Dictionary
  • Kap 9 och rubrikerna: Adding Elements to an Existing Dictionary, Deleting Elements
  • Kap 9 och rubrikerna; Using for loop to iterate over Dictionary, Some Dictionary Methods
  • Kap 9 och rubrikerna: In spotlight: Storing Names and Birthdays in dictionary
  • Kap 9 och rubrikerna: Set, In the Spotlight Set Operations kolla snabbt igenom dessa avsnitt om Sets.
Fö 1 Dictionaries Vad är en dictionary (dict)? Vad är nyckel-värde par? När och varför ska man använda dictionaries? Nyckelkoncept samt kodexempel för vanliga dictionary-metoder som get(), keys() och items(). Hur man sparar en dict. Hur man läser upp en dict från en JSON-fil.
Fö 2 Dictionaries - Billager app Hur man skapar en dictionary (dict) för att hantera bilar i vårt lager.
Fö 3 Dictionaries - Bilager app Fortsättning: Hur man använder en dictionary (dict) för att hantera bilar i vårt lager med CRUD-operationer (Create, Read, Update, Delete) för att lägga till, söka, uppdatera och ta bort bildata.
Fö 4 Dictionaries - Lägg till Vi börjar med att skapa en användarmeny för CRUD-operationer i vår billager-app. Därefter implementerar vi funktionen för att lägga till bilar.
Fö 5 Dictionaries - Ta bort Ta bort bil från dict baserat på dess regnummer.
Fö 6 Dictionaries - Visa alla bilar Visar alla bilar på lager.
Fö 8 Dictionaries - Spara dict till json fil Spara dict med bildata till json fil.
Fö 9 Dictionaries - Läsa upp data från json fil till dict Läsa upp bildata från json fil till Dictionary.
Fö 10 Set - Kort intro Kort intro till set data strukturen. Hur man skapar, lägger till, tar bort och loopar set data samt kollar om ett värde finns i ett set.
Fö 11 Set - Fortsättning Hur du jobbar med union of sets, intersection of sets, finding difference of Sets, finding subsets and supersets of sets
Fö 12 Set - Lottorader och dess extra nummer Visa hur man slumpar lottorad och dess extranummer så att det inte blir dubbletter.

Att göra

  • Sist i kapitlet finns blåa/grön sidor, gör Review questions som multiple choice, true false samt short answers
  • Sist i kapitlet finns blåa/grön sidor, välj ur Programming excercises först nån uppgift som känns lätt, därefter en som är verkar rolig för att sist välja nån som känns utmanande.
  • Skapa en app för en tänkt fotbollsförening för att hantera dess medlemmar med hjälp av CRUD-operationer (Create, Read, Update, Delete) samt för att spara och hämta medlemsdata från en JSON-fil.
  • Examination: Redan denna vecka kan ni kolla Inlämningsuppgift 3 om Dicts och klasser för att se vad du bör kunna för att klara den. Lämnas in fredag vecka 1 kl 17:00
  • Examination: Redan denna vecka kan ni kolla inlämningsuppgift 4 om GUI för att se vad du bör kunna för att klara den. Lämnas in fredag vecka 3 kl 17:00

Instuderingsfrågor

  • Vad är en dictionary i Python?
  • Hur skapar du en tom dictionary i Python?
  • Hur skapar du en dictionary med nyckel-värde par i Python, där ett minst ett nyckel-värde par använder tuple som värde?
  • Vad är skillnaden mellan en dictionary och en lista i Python?
  • Hur lägger du till ett nytt nyckel-värde-par i en dictionary?
  • Vad händer om du försöker lägga till en nyckel som redan finns i en dictionary?
  • Hur tar du bort ett nyckel-värde-par från en dictionary?
  • Kan en dictionary innehålla dubbletter av nycklar?
  • Hur kontrollerar du om en viss nyckel finns i en dictionary?
  • Vad är metoden keys() i en dictionary?
  • Hur får du en lista med alla värden i en dictionary?
  • Hur kan du loopa igenom en dictionary i Python?
  • Vad är en nästlad/inbäddad dictionary?
  • Kan du använda andra datatyper än strängar som nycklar i en dictionary?
  • Överkurs: Hur använder tuple som nycklar i en dictionary?
  • Vad är skillnaden mellan get() och [] för att hämta värden från en dictionary?
  • Vad är en dictionary comprehension i Python?
Vecka 51

Kursmaterial

  • Kap 10 och rubrikerna: Procedural and Object-Oriented Programming, Classes, Bank account class .
  • Kap 10 och rubrikerna: Working with Instances, In the Spotlight Creating the CellPhone Class, In the Spotlight Storing Objects in a List, In the Spotlight Storing Objects in a Dictionary
  • Kap 10 och rubrikerna: Techniques for Designing Classes. Finding the Classes in a Problem, Identifying a Class’s Responsibilities.
Fö1 - Intro till klasser och objekt Vad är en klass och vad är ett objekt? Hur skapar man en klass med attribut/data och metoder? Hur instansierar man objekt från en klass för att anropa konstruktorer och metoder?
Fö2 Vad är OOP? Vad är en klass?
Fö3 - metoder, fält/attribut Vad är datahiding/inkapsling? Vad är ett objekt? Vad är attribut/fält resp. metod? Vad är skillnader mellan klass och objekt? Vad är en instans? Hur skapar man en klass? Vad är en konstruktor?
Fö4 - Klasser i moduler Vad är init-metoden? Hur anropas konstruktorn? Hur anropar man ett objekts metoder? Vad är skillnaden mellan publika och privata attribut/fält? Hur skapar man klasser i en modul? Visar exempel på hur man skapar en Coin-klass för att kunna skapa instanser/objekt ur denna klass och anropa dess metoder.
Fö5 Vad är och hur används __str__() metoden. Hur kastar en metod ett fel när den inte kan utföra sin uppgift?
Fö6 Vad är instanser? Vad är data/attribut/variabel?
Fö7 Vad är accessor resp mutator metoder? Hur skickar man med ett objekt som argument till funktion eller metod? Visar Car klass exemplet.
Fö8 - UML klass diagram Tekniker för att finna klasser dessa attribut och metoder. Vad UML klassdiagram? Hur skapa UML klasser diagram? Online verktyg för att skapa UML-klassdiagram.
Fö9 - OOAD Enkel OOAD för shoppingsite. Ur use cases finna klasser, dess attribut, metoder och relationer.
Fö10 - Repository designpattern Vad är Repository Desing Pattern? Nyckelkoncept, fördelar och nackdelar. Hur man skapar upp en Repository klass med CRUD operationer.
Fö11 - Car Repository CRUD operationer mot textfil för att hantera data om bilar.
Fö12 - Visa alla bilar get_all()-metoden hämtar bildata från textfilen för att skapa en lista med bilobjekt. Läs bildata från textfilen rad för rad, skapa ett bilobjekt baserat på data i raden och lägg till bilobjektet i listan
Fö13 - Lägg till ny bil add()-metoden lägger till en ny bil i textfilen. Först läggs bilobjektet till i listan, och sedan skrivs bildatan till i slutet av textfilen.
Fö14 - Uppdatera bil update()-metoden uppdaterar bilens data i textfilen. Loopa igenom listan för att hitta en matchning på registreringsnumret. När en matchning hittas, uppdateras bilobjektet i listan. Därefter skriver vi över hela filen med den uppdaterade listan.
Fö15 - Ta bort bil delete()-metoden tar bort bilen från textfilen. Loopa igenom listan för att hitta en matchning på registreringsnumret. När en matchning hittas, tas bilobjektet bort från listan. Därefter skriver vi över hela filen med den uppdaterade listan.
Fö16 - Serialisera och deserialisera pythonobjekt till och från fil Hur använder man pickle-modulen för att serialisera och deserialisera Python-objekt till och från en fil? Vad är serialisering och deserialisering? Hur används pickle-modulens dump()-metod för att serialisera objekt till en fil och load()-metoden för att deserialisera från en fil till ett objekt?
Fö17 - CRUD operationer för att serialisera och deserialisera pythonobjekt En genomgång av CourseManager-klassens metoder som har CRUD-operationer (Create, Read, Update, Delete) och använder pickle-funktionalitet för att serialisera och deserialisera dictionary-objekt till och från fil.

Att göra

  • Sist i kapitlet finns blåa/grön sidor, gör Review questions som multiple choice, true false samt short answers
  • Sist i kapitlet finns blåa/grön sidor, välj ur Programming excercises först någon uppgift som känns lätt, därefter en som är verkar rolig för att sist välja nån som känns utmanande.
  • Skapa en klass som representerar en produkt. Klassen ska ha attribut för produktens namn, pris, kategori och lagerstatus. Implementera CRUD-operationer (Create, Read, Update, Delete) för att hantera en produktkatalog.
  • Skapa en klass som representerar en kundvagn. Klassen ska kunna hantera produkter genom att lägga till, ta bort och visa produkter samt beräkna den totala kostnaden.
  • Skapa funktioner för att spara produktkatalogen och kundvagnen till en JSON-fil samt läsa data från JSON-filer för att återställa objekt med pickle.
  • Examination: Redan denna vecka kan ni kolla Inlämningsuppgift 3 om Dicts och klasser för att se vad du bör kunna för att klara den. Lämnas in fredag vecka 1 kl 17:00
  • Examination: Redan denna vecka kan ni kolla inlämningsuppgift 4 om GUI för att se vad du bör kunna för att klara den. Lämnas in fredag vecka 3 kl 17:00

Instuderingsfrågor

  • Vad är en klass i Python?
  • Hur definierar du en klass i Python?
  • Vad är ett objekt i Python?
  • Är klass och objekt samma sak?
  • Vad är attribut i en Python-klass? Hur skapar du dem?
  • Vad är parametern self i Python-klassens metoder?
  • Hur skapar du en instans/objekt av en klass i Python?
  • Vad är metoden __init__ i en Python-klass?
  • Vad är inkapsling i Python klasser?
  • Vad är syftet med metoden __str__ i Python-klasser?
  • Vad är överskuggning av metoder i Python-klasser?
Vecka 52-03

Kursmaterial

  • Kap 13 och rubrikerna: Graphical User Interfaces, Using the tkinter Module
  • Kap 13 och rubrikerna: Display Text with Label Widgets, Organizing Widgets with Frames
  • Kap 13 och rubrikerna: Button Widgets and Info Dialog Boxes, Getting Input with the Entry Widget
  • Kap 13 och rubrikerna: Using Labels as Output Fields, Radio Buttons and Check Buttons.
Fö1 - Första GUI appen Visar en app med GUI som innehåller ett fönster med en knapp och en label. Appen visar hur många gånger man har tryckt på knappen. Hur skapar man en GUI-app med ett fönster? Hur lägger man till en knapp och en label i fönstret? Hur skapar man klick-funktionalitet för knappen?
Fö2 - GUI:et som klass istället Hur gör man om tidigare GUI-exempel från Fö1 till en klass? Alltså, hur skapar man en klass där man lägger till en knapp och en label i ett fönster och hur skapar man klick-funktionalitet för knappen?
Fö3 - Organisera i frames Organisera dina GUI-widgets/komponenter i ramar (frames). Hur skapar man två ramar och lägger GUI-widgets i dem? Hur använder man meddelanderutor (message boxes)?
Fö4 -Frames fortsättning Appen 'km till miles'. Hur skapar man tre ramar (frames) och lägger GUI-widgets i dem? Hur avslutar man programmet med en klickhändelse som använder root.destroy?
Fö5 - Radioknappar Skapa och välja från radioknappar. Hur skapar man händelsehanterare för radioknappar?
Fö6 - Checkboxar och listbox Skapa och välja från checkboxar samt visa det man valt i en listbox. Hur skapar man händelsehanterare för checkboxar?
Fö7 - Listboxar Flytta valt data mellan listBoxar. Hur väljer man flera frukter ur en listbox och flytta över dessa till annan listbox?
Fö 8 - Combobox Skapa och välja frukter ur en Combobox. Hur skapar man händelsehanterare för combboxen med hjälp av bind() metoden?
Fö9 - Intro CarGUIExcel en CRUD app med Treeview Skapa en GUI-app för att kunna göra CRUD-operationer mot en Excel-fil. Introduktion till en större GUI-app, CarGUIExcel, där vi sammanfattar vad vi har lärt oss i kursen. Vi arbetar med flera egna klasser, till exempel Car, CarRepositoryExcel och en egen GUI-klass där vi använder bland annat Treeview-widgeten. Vi kommer att använda tredjepartsbiblioteket openpyxl för att kunna lägga till och hämta bildata från en Excel-fil.
Fö10 - Genomgång koden av hur GUI layouten är uppbyggt. Går igenom hur labels och entry textfälten läggs till i en Frame som har en grid struktur, samt hur treeview widgeten fylls med bildata från Excel.
Fö11 -Treeview händelsehantering Hur valt/klickat data ur treeview:n hamnar i entry-textfälten.
Fö12 - CarRepositoryExcel Går igenom hur vi byggt upp den del av CarRepositoryExcel klassen som hämtar bildata från Excel filen, dvs get_all method som använder Excel data om bilar för att fylla en lista med bil objekt som returneras. Den listan används sen för att fylla treeviewn.
Fö13 - Lägga till bil Förklaring av hur man lägger till data om en bil i Excel och i Treeview. Med hjälp av händelsehanteraren för 'Lägg till'-knappen skapas ett bilobjekt baserat på data från inmatningsfälten. Bilobjektet läggs till på nästa lediga rad i Excel-filen med hjälp av CarRepositoryExcel. Bilen läggs även till på första raden i Treeview.
Fö14 - Ta bort bil Här förklaras hur du tar bort en bil från Excel-filen. Med hjälp av händelsehanteraren för 'Radera'-knappen och CarRepositoryExcels metod delete loopar vi igenom Excel-filen för att hitta en matchning på registreringsnumret, och vid en matchning tas raden bort ur Excel-filen.
Fö15 - Uppdatera bil Här förklaras hur du uppdaterar en bils data i Excel-filen. Med hjälp av händelsehanteraren för 'Uppdatera'-knappen och CarRepositoryExcels metod update loopar vi igenom Excel-filen för att hitta en matchning på registreringsnumret. Vid en matchning uppdateras bilens data i Excel-filen.

Att göra

  • Sist i kapitlet finns blåa/grön sidor, gör Review questions som multiple choice, true false samt short answers
  • Sist i kapitlet finns blåa/grön sidor, välj ur Programming excercises först nån uppgift som känns lätt, därefter en som är verkar rolig för att sist välja nån som känns utmanande.
  • Skapa en GUI-app för att hantera medlemmar i en tänkt fotbollsförening. Inkludera knappar, inmatningsfält (entry fields), etiketter (labels), Treeview, kombinationsrutor (comboboxar) etc. som stöder CRUD-operationer. Använd en egen Repository-klass för CRUD-operationer mot en Excel-fil.
  • Examination: Kom ihåg inlämning av inlämningsuppgift 3 om Dicts och klasser. Lämnas in fredag vecka 1 kl 17:00
  • Examination: Kom ihåg inlämning av inlämningsuppgift 4 om GUI. Lämnas in fredag vecka 3 kl 17:00

Instuderingsfrågor

  • What is Tkinter in Python?
  • How do you import the Tkinter module in a Python script?
  • How do you create the main application window using Tkinter?
  • What method is used to run the Tkinter event loop?
  • How do you create a button widget in Tkinter?
  • How do you attach a function to a button click event in Tkinter?
  • How do you arrange widgets in a grid layout in Tkinter?
Vecka 01

Kursmaterial

  • N/A
N/A

Att göra

  • N/A
  • Examination: Kom ihåg inlämningsuppgift 3 om Dicts och klasser. Lämnas in fredag vecka 1 kl 17:00

Instuderingsfrågor

  • N/A
Vecka 03

Kursmaterial

  • N/A
N/A

Att göra

  • N/A
  • Examination: Vecka 3: Kom ihåg inlämningsuppgift 4 om GUI. Lämnas in fredag vecka 3 kl 17:00
  • Examination: Vecka 3: Kom ihåg att göra kursutvärdering i kursrummet.

Instuderingsfrågor

  • N/A

Hans Jernberg

Lärarehje@du.se

Pär Eriksson

Lärarepei@du.se
PROGRAM Digitala tjänster – program för högskoleexamen
SYFTE Kursen behandlar grundläggande kunskaper och färdigheter i programmering. Kursen behandlar begrepp inom objektorienterad programmering (OOP), grundläggande språkelement och programsatser. Vikt läggs vid klasser och objekt som används vid uppbyggnad av objektorienterade program. Vidare behandlas hur datamängder läses, lagras och manipuleras i datastrukturer och filer.
KURSPLAN Gå till kursplan hos DU