Programmering, 3. semester (PROG)
Planen opdateres løbende.
Kig på planen ofte. Sørg for at bookmarke planen i din browser (Ctrl-d)
Uge 35, 26.08 + 28.08 + 30.08
- Introduktion til 3sem i almindelig og programmering i særdeleshed.
- Brush up på 2sem Unit testing, Git og GitHub osv.
- FREDAG helt særligt: Der er også undervisning
Læsning
Opgaver
- Installer den nødvendige software
- Brush Up, School | løsningsforslag
Din løsning skal du pushe til GitHub.
Hvis du ikke allerede har en bruger på GitHub, så opret en - og brug et fornuftigt username: Du kan få brug for det når du søger praktikplads og job. - Ekstra: Hackerrank.com Programmerings-konkurrencer osv. Lær f.eks. om Python
Administration
Uge 36, 02.09 + 04.09
- Brush up, fortsat
- Software-komponenter
- Test first
Læsning
Software.komponenter
Opgaver
- Test-first: LineSegment | løsningsforslag
- Step-by-Step: Setting Up GitHub Student and GitHub Copilot as an Authenticated Student Developer
- How to enable GitHub Copilot for free to students
- Calculator part 1: DLL
- Calculator part 2: User interface
Uge 37, 09.09 + 11.09
- Repository-klasser
- Unit test af repository klasser
- Filtrering og sortering
- Obligatorisk opgave 1 (hjemmeopgave) startes [afleveres om et par uger]
Læsning
Opgaver
- Repository-klasse
- Extra: Generisk repository-klasse: Kan du lave en klasse Repository<T> med de vanlig metoder?
Måske får du brug for en constraint på din type-parameter
Predicate<T>? filter=null kunne være handy hvis du vil inkludere et filter.
IComparer<T>? comparer=null kunne være handy til sortering.
Update er svær: Kan (måske) laves på flere forskellige måder
- ved at bruge Reflection
- ved at definere et særligt interface eller delegate som kan lave opdateringen
Måske …. public delegate void UpdateDelegate<T>(T existing, T data);
- ved at definere Update metoden i en konkret subklasse af Repository<T> - Extra: Dictionary: Kan du lave en Repository klasser, der bruger et Dictionary i steder for en List?
Hvilke fordele og ulemper er der ved List henholdsvis Dictionary?
Uge 38, 16.10 + 18.10
- Repository-klasser med database (Entity Framework)
- Du skal lave tabeller i din simply.com database fra 2sem
- GitHub Copilot for students
Læsning
Eksempler
Opgaver
- Ekstraher et interface fra den List baserede repository-klasse
- Lav en ny repository-klassen, som implementerer dit interface og bruger en database-tabel (vha entity-framework)
- Se MoviesRepositoryLib for inspiration
Uge 39, 23.09 + 25.09
- HTML, HTML DOM (Document Object Model), Visual Studio Code
- CSS + Bootstrap
- Publicer HTML + CSS til Microsoft Azure
Læsning
Eksempler
- W3Schools en masse eksempler på Bootstrap ….
Opgaver
- Quick: w3schools.com/html prøve nogle [men bestemt ikke alle] "Try it Yourself" (den grønne knap) eksempler
- Brug W3C HTML validator til at validere nogle web-sider f.eks. http://anbo-easj.dk/ og https://www.zealand.dk/
Hvis du finder en web-side med en masse ulovligt HTML, så prøve at vise siden i forskellige browsere. Måske er der forskel på hvordan browserne viser siden. - HTML Quiz
- Download og installer Visual Studio Code
- Brug Visual Studio Code til at lave et par web-sider med links mellem siderne.
Husk at validere dine web-sider.
Emmet kan hjælpe dig med at lavet et HTML “skelet”: Gem din fil som index.html og tast ! (udråbstegn)
- w3schools.com/css prøve nogle [men bestemt ikke alle] "Try it Yourself" (den grønne knap) eksempler
- Tilføj in-line styles til nogle HTML elementer på en af dine HTML-dokumenter.
- Tilføj et internt stylesheet til et af dine HTML dokumenter
- Lav et eksterne style sheet (css fil) og link det til mindst to af dine HTML-dokumenter.
- Adgang til Azure som studerende på Zealand.
- Upload dine HTML og CSS filer til Azure. Brug FTP,
Eller brug Kudu console (“Upload files and folder using drag and drop”)
How-to video om hvordan man laver et tomt web app projekt i Azure
How-to video om hvordan man uploader projekt til web app i Azure - Validate dit CSS
- CSS Quiz, har du lært tilstrækkelist CSS ....
Lad være med at gætte - find svarne w3schools.com/css - Installer Git (måske har du allerede gjort det … måske uden at vide det …)
- Live Server en god extension til Visual Studio Code
- Check om din (eller min) web-side er mobile friendly
- https://www.w3schools.com/bootstrap5/ prøve nogle [men bestemt ikke alle] "Try it Yourself" (den grønne knap) eksempler
Uge 40, 30.09 ingen onsdags-undervisning i denne uge
Readings
Eksempler
- SayHelloVueAgain
Opgaver
- Gennemgå (læs + udfør) Microsoft: Get Started with Vue ELLER Vue Mastery: Intro to Vue 3 (up to section 6 Event handling)
- Gennemgå Dynamic page display with Vue.js
- Gennemgå Work with data and event in Vue.js
- Collect words with JavaScript + Vue.js
- Calculator with JavaScript + Vue.js
- Tilføj noget Bootstrap til din løsning på Collect Words og Calculator opgaverne
- Upload din web-applikation til Microsoft Azure.
Deploy your app to Azure App Service using FTP/S
Brug en FTP client (f.eks. FileZilla) eller Kudu console (“Upload files and folder using drag and drop”).
Uge 41, 07.10 + 09.10
- MANDAG Feedback på obligatorisk opgave 1 (hjemme-opgaven)
- JavaScript + Vue.js: Arrays og objekter, v-if, v-for
- ONSDAG prøve-eksamen, obligatoriske studieaktivitet = deltagelsespligt
Eksempler
- Vue3Examples
Opgaver
- Collect words: Listen med ord skal vises som tabel + ordered list
Uge 42 efterårsferie
Uge 43, 21.10 + 23.10
- Orientering om valgfagsvalget
- UI test med Selenium
- JavaScript + Vue, fortsat, inkl List-Detail
- Extra: JavaScript: DOM manipulation
- JavaScript: Brug af REST vha. Axios
Læsning
- UI testing web applications (PowerPoint)
- Ekstra / baggrund: Selenium documentation (brug CSharp tab i eksemplerne)
- Extra: NUnit vs XUnit vs MSTest, eksempel på samme test med mange browsers, langt nede i artiklen
- Extra: W3Schools Collapsible List
- Extra: W3Schools JavaScript HTML DOM
- DOM Methods
- DOM Documents
- DOM Elements
- GitHub Axios dokumentation
- Joy Waguru: Asynchronous Javascript using Async - Await
- Ekstra: Travis Horn Building json2table: Turn JSON into an HTML table
- Ekstra: GitHub offers a REST API. Lav en simpel web-applikation med Vue.js og Axios.
Eksempler UI test med Selenium
- UI Test: SayHelloVue3 + WebTestSayHello2b
Eksempler JavaScript + REST
- List-Detail
- REST GET example (Vue Posts): JS, Vue, async/await
- Ekstra General REST consumer (check om CORS er OK)
- Ekstra Generic Table
Extra: Eksempler DOM manipulation
- Ekstra GetByClassName (farver)
- Ekstra DOM manipulation (ren JavaScript, uden Vue.js)
Opgaver: UI Test
- Download en driver der passer til din(e) browser: Chrome (chromedriver) | FireFox | Microsoft Edge
Unzip driver-filen og gem den i en folder f.eks. C:\webDrivers.
Hvis din browser bliver opdateret, så skal du downloade en ny version af driveren (Chrome opdateres ofte …) - UI testing: Collect Words | løsningsforslag
- UI test af din Calculator web-applikation
Hjælp: Selenium, Working with Select list elements
Hjælp2: NuGet package: Selenium.Support to get class SelectElement
Opgaver: Javascript + REST med Axios
- GET data fra http://jsonplaceholder.typicode.com/todos og vis dem i en browser. Brug Axios og Vue.js.
Kig på mit eksempel for inspiration. - Brug mit Bookstore REST API som back-end til en web-applikation
Kig på mit Cars eksempel for inspiration.
Hjælp: Start med at ignorere query string parametre i REST controlleren. Dem kan du bruge senere ... - Push din web-applikation til GitHub.
- Upload din web-applikation til Microsoft Azure.
Deploy your app to Azure App Service using FTP/S
Brug en FTP client (f.eks. FileZilla) eller Kudu console (“Upload files and folder using drag and drop”).
Hvis din browser klager over “mixed content”, så sørg for at din bruger enten http://… eller https:// … til både web-side og REST. Du må ikke blande. - Tilføj Bootstrap styling til en eller flere af dine web-applications.
Sæt lidt pynt på knapper osv + Vigtigt: sørg for at din web application er responsive (adapt to browser width) - Flere JavaScript projekter: Anven
- d de REST services du har lavet i TEK faget.
Uge 44, 28.10 + 30.10
MANDAG Morten T, datamatiker fra Zealand 2017, kommer og fortæller om hvordan man laver god kode (og mange andre ting).
Fælles for alle DAT 3sem klasser. Lokale D2.12/13 (det er et dobbelt-lokale)
- Sortering + filtrering af data i JavaScript (front-end) eller i REST (back-end)
- CORS
Læsning
- booksSortingJavaScript, sortering + filtrering i JavaScript
- RESTbooksStatusCodes, REST inkl sortering
- booksSortingREST, JavaScript bruger REST til at sortere
Opgaver
- Lav nogle web-applikationer (HTML + JavaScript inkl Vue + Axios) der bruger andres REST services.
Start med at afprøve REST service REST services i en browser eller i Postman.
Her er en liste af REST services. Hvis du synes en af disse services er besværlige, så prøv den næste- eller find selv en service.
Du kan bruge min CORS checker til at se om den pågældende REST service har CORS
Uge 45, 04.11 + 06.11
- REST (POST, PUT, DELETE) + JS/Vue/Axios
- UI test fortsat: Test af web-applikationer der bruger REST services
Eksempel (JS + REST)
Opgaver (JS + REST)
Læsning (UI test)
Opgaver (UI test)
- Lav en UI test for din web-applikation, der anvender en REST service.
Uge 46, 11.11 +13.11
- Vue komponenter
- DevOps: Continuous Integration + Delivery
Læsning (Vue komponenter)
Læsning (DevOps)
Opgaver (DevOps)
- Lav en simpel REST controller (eller kopier en gammel): Model class, Repository class, Controller
Tilføj en unit test til Repository Class
Push til GitHub
Push til Azure vha GitHub Actions
Uge 47, 18.11 + 20.11
Læsning
Opgaver
Læsning
Uge 48-50, 25.11 - 13.12, Projekt
Deltagelse i projektet er en de obligatoriske studieaktiviteter.
Fredag 13.12 code freeze: Stop programmering. Fuld fokus på rapporten.
Uge 51 18.12 + 19.12
Onsdag: rapport-aflevering
Torsdag: Prøveeksamen 2, obligatorisk studieaktivitet = deltagelsespligt
Fredag: Demo dag + pensum-snak
Uge 2 Januar, SYM eksamen
Uge 3, PROG+TEK spørgetimer
FR 17.01 9:10 spørgetimer, lokale D3.07: Du spørger, Morten og jeg svarer …
Uge 4, 20-23 Januar, PROG+TEK eksamen
Uge 5, 30 Januar, PROG+TEK reeksamen
Mandag 3 februar, 4sem starter