Overordnede kursusmål
At skrive kode til at løse komplekse videnskabelige og tekniske
problemer er blevet en vigtig færdighed for forskere og ingeniører.
Dette kursus hjælper studerende med at udvikle denne færdighed
gennem: at lære kerneprincipper og bedste praksis for
programmering; at øve brugen af grundlæggende
softwareudviklingsværktøjer og teknikker som versionskontrol,
pakning og arkitekturdesign; at udnytte videnskabelige
beregningsværktøjer, der ofte bruges i videnskabelig Python, som
numpy, matplotlib og scipy; at udvikle, evaluere og kommunikere
Python-biblioteker til vindenergiapplikationer gennem praktiske
gruppeprojekter, peer code reviews og kodepræsentationer. Gennem
dette kursus vil den studerendes materielle, kognitive og sociale
computerfærdigheder i høj grad blive forbedret sammen med evnen til
at formulere computerproblemer inden for vindenergi og løse dem med
programmering.
Læringsmål
En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
- Bruge Python-pakker, der er almindelige for vindenergi, såsom
numpy, matplotlib, scipy, PyWake, TOPFARM, xarray, pandas osv.
- Manipulere data, der er gemt i de mest almindelige
vindenergiformater, og demonstrere færdigheder som at indlæse
fra/gemme til fil, udføre beregninger og visualisere
resultater.
- Designe og publicere en Python-pakke til en
vindenergi-applikation med tests og dokumentation.
- Samarbejde med et team om en kodebase, der er hostet på GitLab,
og demonstrere grundlæggende git-færdigheder som at tilføje,
committe, pushe og branching.
- Udvikle, debugge, og linte kode med VS Code og relateret
udvidelser.
- Kommunikere kode mundtligt og skriftligt via diagrammer,
kommentarer, commit-meddelelser og dokumentation.
- Kritisk analysere kode for god kodningspraksis såsom
modularitet, vedligeholdelighed, overholdelse af stilistiske
konventioner osv.
- Skrive tests til videnskabelig kode.
- Eksekvere kode på en computerklynge.
Kursusindhold
Indholdet i dette kursus er egnet til studerende, der har nogen
eller ingen erfaring med programmering, og som ønsker at tage andre
kurser på DTU Wind. Kurset bruger programmeringssproget Python. I
løbet af kurset arbejder studerende i små grupper med øvelser under
undervisning, ugentlige opgaver og to projekter. En studerende skal
bestå det første projekt for at indsende det andet projekt. Den
endelige karakter evalueres på baggrund af det andet projekt.
Kommunikation om videnskabelig kode øves ved ugentlige
gruppe-til-gruppe-præsentationer af løsningerne på ugens opgave.
I den første del af kurset lærer de studerende, hvordan man
samarbejder i grupper om kode ved hjælp af
versionsstyringssoftwaren git/GitLab, som bruges hele semesteret.
Derefter bruger de studerende de grundlæggende pakker til
videnskabelig Python-programmering (numpy, matplotlib, scipy) til
at øve grundlæggende færdigheder som numerisk array-manipulation,
indlæsning/lagring/visualisering af data og skrivning/import af
funktioner. Disse færdigheder cementeres i det første projekt, hvor
grupperne beregner en simpel vindmøllemodels tidsmarcherende
respons på forskellige turbulente vindforhold og visualiserer de
resulterende statistikker.
Når det første projekt er afleveret, præsenteres mere avancerede
emner. Dette inkluderer mere abstrakte koncepter fra generel
programmering - såsom objektorienteret praksis, design af
pakkearkitekturer og linting - samt mere vindspecifikke emner -
f.eks. pakker og dataformater, der almindeligvis bruges i
vindenergi. Kurset slutter med det afsluttende projekt, hvor de
studerende arbejder individuelt eller i grupper for at udgive en
Python-pakke til vindenergi, komplet med test og dokumentation. Der
er en liste over foruddefinerede afsluttende projekter, men de
studerende kan indsende en anmodning om et andet projekt, hvis de
har en idé, de gerne vil forfølge.
Sidst opdateret
02. maj, 2024