Overordnede kursusmål
Simulering, numeriske beregninger, eksperiment-kontrol,
dataanalyse, visualisering: Disse er alle essentielle elementer af
moderne videnskab og engineering, og de handler alle om kode.
Enhver forsker eller R&D ingeniør bør have en basal forståelse
af metoder fra scientific computing (dvs. beregninger og andet
kodning med videnskabeligt formål). Formålet med dette kursus er at
styrke din "computational thinking" og introducere dig
til en række datalogiske værktøjer og metoder med relevans i
videnskab.
Du vil blive gjort bekendt med pakker og værktøjer (alle i Python)
der er bredt anvendelige indenfor engineering og videnskab, samt
mere specifikke pakker der ofte bruges i kvanteoptik og
kvanteinformation. Kurset er derfor særligt relevant for dem, der
overvejer en karriere indenfor kvanteinformationsvidenskab, og for
dem der laver speciale eller PhD-projekt i det felt.
Læringsmål
En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
- Forstå sammenhængen mellem de mest almindelige pakker i
Python-økosystemet for scientific computing
- Anvende basal versionskontrol med git og håndtere et mindre
open source software-projekt på Github
- Udvikle genanvendelig, effektiv og veldokumenteret kode til
løsning eller analyse af et fysisk problem
- Udføre forskellige typer af konveks optimering
- Analysere og simulere kvanteoptiske kredsløb
- Modellere og simulere dynamikken af åbne kvantesystemer
- Kvantitativt analysere støjfyldte måledata
- Undersøge ekskveringstid for kode og kende til metoder til at
gøre den hurtigere
- Klart og præcist præsentere et beregningsmæssigt problem, den
anvendte løsningsmetode og dens resultater
Kursusindhold
Pakkehåndtering og virtuelle environments.
Versionskontrol med git.
Kerne-pakkerne for scientific computing i Python: Numpy, Scipy,
Matplotlib.
Udforskende kodning: interaktiv prompt - Jupyter notebooks -
scripts - pakker; IDE'er.
Benchmarking og optimering af kode: timing, linjeprofilering,
arrays vs. loops, caching, numexpr, Numba.
Effektiv brug af arrays.
Præsentation af kode med notebooks og reveal.js.
Udvalgte numeriske metoder, f.eks. spektralanalyse, lineær
programmering (konveks optimering), master-ligninger.
Udvalgte emner i kvanteinformation og kvanteoptik, f.eks.
kvanteoptik med kontinuerte variable, dekohærens af qubits,
kvantetilfældighed, kvantekredsløb.
Udvalgte pakker for simulering af kvantesystemer, f.eks. QuTiP,
Strawberryfields, Qiskit.
Hvis der er tid:
Instrument-kommunikation, dataopsampling, GUI'er.
Interaktiv visualisering med f.eks. Bokey, Plotly, ipywidgets.
Bemærkninger
Brug af AI til hjælp med programmering og lignende er helt fint, du
skal blot kunne forstå hvad din kode gør.
Sidst opdateret
02. maj, 2024