Programmering, 3. semester (PROG)
Planen opdateres løbende.
Kig på planen ofte. Sørg for at bookmarke planen i din browser (Ctrl-d)
Uge 5, 30.01 + 31.01
- Introduktion til 3sem i almindelig og programmering i særdeleshed.
- Brush up på 2sem Unit testing, Git og GitHub osv.
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 6, 06.02 + 07.02
- Brush up, fortsat
- Software-komponenter
- Test first
Læsning
Software.komponenter
Opgaver
- Test-first: LineSegment
- 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 7, 13.02 + 14.02
- Repository-klasser
- Unit test af repository klasser
- Filtrering og sortering
- Obligatorisk opgave 1 2024 udgave (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 8, 20.02 + 21.02
- Repository-klasser med database (Entity Framework)
- Du skal lave tabeller i din simply.com database fra 2sem
Læsning
Eksempler
Opgaver
- Tilføj til en af dine tidligere repository-klasser
- 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 9, 27.02 + 28.02
- HTML, HTML DOM (Document Object Model), Visual Studio Code
- CSS + Bootstrap
- Publicer HTML + CSS til Microsoft Azure
- Orientering om valgfagsvalget (der skal først vælges senere …)
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 10, 02.03 + 03.03
Readings
Eksempler
- SayHelloVue3
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 | løsningsforslag
- Calculator with JavaScript + Vue.js | løsningsforslag
- 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 11, 12.03 +13.03
- JavaScript + Vue, fortsat, inkl List-Detail
- UI test med Selenium
- Feedback på obligatorisk opgave 1 (hjemme-opgaven)
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
Eksempler
- Vue3Examples
- List-Detail
- UI Test: SayHelloVue3 + WebTestSayHello2
Opgaver
- Collect words: Listen med ord skal vises som tabel + ordered list
- 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
Uge 12, 19.03 + 20.03
- ONSDAG prøve-eksamen 1, obligatorisk studieaktivitet = deltagelsespligt
- JavaScript: DOM manipulation
- JavaScript: Brug af REST vha. Axios
- Feedback på prøve-eksamen
Læsning
- 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 JavaScript + REST
- REST GET example (Vue Posts): JS, Vue, async/await
- Ekstra General REST consumer (check om CORS er OK)
- Ekstra Generic Table
Eksempler DOM manipulation
- Ekstra GetByClassName (farver)
- Ekstra DOM manipulation (ren JavaScript, uden Vue.js)
Opgaver
- 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: Anvend de REST services du har lavet i TEK faget.
Uge 13 Påskeferie, hele ugen
Uge 14, 02.04 + 03.04
- TIRSDAG formiddag: besøg hos Dinero, Carlsberg Byen. Jeg satser på at vi når tilbage på skolen om eftermiddagen til noget programmering.
- Sortering + filtrering af data i JavaScript (front-end) eller i REST (back-end)
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 15, 09.04 + 10.04
- REST (POST, PUT, DELETE) + JS/Vue/Axios
- UI test fortsat: Test af web-applikationer der bruger REST services
- TORSDAG 8:30-12:15 Job & Karrieredag, kantineområdet
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.
Example UI tes
Uge 16, 16.04 +17.04
- Vue komponenter
- DevOps: Continuous Integration + Delivery
Læsning (Vue komponenter)
Læsning (DevOps)
Opgaver (DevOps)
- Lav en simpel REST controller: Model class, Repository class, Controller
Tilføj en unit test til Repository Class
Push til GitHub
Push til Azure vha GitHub Actions
Uge 17, 23.04 + 24.04
Læsning
Opgaver
Læsning
Uge 18, 30.04 + 01.05
- Par-programmering, DR pladesamling (fortsat)
Uge 19-21, 06.05 - 24.05, Projekt
Deltagelse i projektet er en de obligatoriske studieaktiviteter.
Fredag 24.05 code freeze: Stop programmering. Fuld fokus på rapporten.
Uge 22
Onsdag: rapport-aflevering
Torsdag: Prøveeksamen 2, obligatorisk studieaktivitet
Fredag: Demo dag + pensum-snak
Juni, forberedelse til SYM og PROG+TEK eksamen
Juni, SYM eksamen
Juni, PROG+TEK eksamen