#!/usr/bin/env guile !# ;{{{1 modules ;; Copyright © 2018 Urbain Vaes (use-modules (sxml simple)) ; To deal with records more easily (use-modules (srfi srfi-9)) ; Read files (use-modules (ice-9 popen)) (use-modules (ice-9 rdelim)) ; Directory of static content (define (static-url path) (string-append "/static/" path)) ; Auxiliary function to read html file (define (read-xml filename) (call-with-input-file filename (lambda (input-port) (xml->sxml input-port #:entities '((align . "ALIGNMENT")))))) ; {{{1 site head (define (html-head title) `(head (title ,(string-append "Urbain Vaes - " title)) (meta (@ (charset "UTF-8"))) (meta (@ (name "author") (content "Urbain Vaes"))) (meta (@ (name "keywords") (content "contact,cv,work"))) (meta (@ (name "description") (content "My personal website"))) (meta (@ (name "viewport") (content "width=device-width, initial-scale=1.0"))) (link (@ (rel "stylesheet") (type "text/css") (href ,(static-url "css/base.css")))) (link (@ (rel "stylesheet") (type "text/css") (href "https://fonts.googleapis.com/css?family=Neuton&subset=latin") (media "screen") (charset "utf-8"))) (link (@ (rel "stylesheet") (type "text/css") (href "https://fonts.googleapis.com/css?family=Nobile:regular,italic,bold,bolditalic&subset=latin") (media "screen") (charset "utf-8"))) (link (@ (rel "stylesheet") (type "text/css") (href "https://cdn.jsdelivr.net/npm/jsxgraph/distrib/jsxgraph.css") (media "screen") (charset "utf-8"))) (script (@ (type "text/javascript") (src ,(static-url "js/common.js"))) "") (script (@ (type "text/javascript") (src "https://polyfill.io/v3/polyfill.min.js?features=es6")) "") (script (@ (id "MathJax-script") (type "text/javascript") (src "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js")) "") (script (@ (id "MathJax-script") (type "text/javascript") (src "https://cdn.jsdelivr.net/npm/jsxgraph/distrib/jsxgraphcore.js")) "") (link (@ (rel "icon") (type "image/x-icon") (href ,(static-url "img/airbender-favico.webp")))))) ; {{{1 site menu (define (site-menu) `(header `(a (@ (id "avatar") (href "/hello/")) (img (@ (id "avatar_img") (src "https://s.gravatar.com/avatar/40bb63e5d0cfbe4ab1067d561ae08280?s=400") (alt "Main menu")))) (nav (a (@ (href "/contact/")) "Contact") (a (@ (href "/cv/")) "CV" " ") (a (@ (href "/research/")) "Research") (a (@ (href "/publications/")) "Publications") (a (@ (href "/presentations/")) "Presentations") (a (@ (href "/software/")) "Software") (a (@ (href "/teaching/2023-cs/")) "Teaching")))) ; {{{1 site footer (define (site-footer) `(footer (p (a (@ (rel "licence") (href "http://creativecommons.org/licenses/by-nc-nd/4.0/")) (img (@ (alt "Creative Commons License") (style "border-width:0") ; (src "https://licensebuttons.net/l/by-nc-nd/4.0/88x31.png") ; (src "https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by-nc-nd.svg") (src "https://mirrors.creativecommons.org/presskit/buttons/80x15/svg/by-nc-nd.svg") ))) " Urbain Vaes, 2020. " (a (@ (href "https://git.vaes.uk/public/www-urbain.git/plain/site.scm")) "(Source code)") ))) ; {{{1 record-presention (define-record-type (make-presentation year month title venue pdf-link) presentation? (year presentation-year) (month presentation-month) (title presentation-title) (venue presentation-venue) (pdf-link presentation-pdf-link)) (define* (presentation #:key year month title venue pdf-link) (make-presentation year month title venue pdf-link)) ; {{{1 record-publication (define-record-type (make-pub year title coauthors journal pdf-link journal-link arxiv-link bib-link supplemental) pub? (year pub-year) (title pub-title) (coauthors pub-coauthors) (journal pub-journal) (pdf-link pub-pdf-link) (journal-link pub-journal-link) (arxiv-link pub-arxiv-link) (bib-link pub-bib-link) (supplemental pub-supplemental)) (define* (publication #:key year title coauthors journal pdf-link journal-link arxiv-link bib-link supplemental) (make-pub year title coauthors journal pdf-link journal-link arxiv-link bib-link supplemental)) ;{{{1 data presentations (define my_presentations `( ("Leiden_2023" . ,(presentation #:month "Mar" #:year "2023" #:title "Implementation aspects for consensus-based optimization" #:venue "Purpose-driven particle systems, Lorentz Center, Leiden" #:pdf-link (static-url "presentations/cbo.html"))) ("Rennes_2023" . ,(presentation #:month "Feb" #:year "2023" #:title "Variance reduction for applications in computational statistical physics" #:venue "Séminaire de probabilité, IRMAR Rennes" #:pdf-link (static-url "presentations/rennes.pdf"))) ("Imperial_2022" . ,(presentation #:month "Oct" #:year "2022" #:title "Variance reduction for applications in computational statistical physics" #:venue "Imperial College London applied PDE seminar" #:pdf-link (static-url "presentations/imperial.pdf"))) ("mcqmc_2022" . ,(presentation #:month "Jul" #:year "2022" #:title "Mobility estimation for Langevin dynamics using control variates" #:venue "MCQMC 2022 (in Linz)" #:pdf-link (static-url "presentations/mcqmc.pdf"))) ("Birmingham_2022" . ,(presentation #:month "Jun" #:year "2022" #:title "Mobility for Langevin-like dynamics in a periodic potential: scaling limits and efficient numerical estimation" #:venue "LMS-Birmingham Workshop on S/PDE: Analysis and Computations" #:pdf-link (static-url "presentations/einstein.pdf"))) ("Inria_2021" . ,(presentation #:month "Oct" #:year "2021" #:title "Consensus-based sampling" #:venue "Rencontres Inria-LJLL" #:pdf-link (static-url "presentations/cbs.pdf"))) ("Simons_2021" . ,(presentation #:month "Oct" #:year "2021" #:title "Derivative-free Bayesian inversion using multiscale dynamics" #:venue "Simons Institute: Working group on consensus-based optimization and sampling" #:pdf-link (static-url "presentations/multiscale.pdf"))) ("Cecam_2021" . ,(presentation #:month "Oct" #:year "2021" #:title "The generalized Langevin equation: long-time behavior and diffusive transport" #:venue "CECAM workshop on generalized Langevin equations" #:pdf-link (static-url "presentations/gle.pdf"))) ("Siam_2022" . ,(presentation #:month "Sep" #:year "2022" #:title "Ensemble Kalman filtering in the near-Gaussian setting" #:venue "SIAM Mathematics of Data Science: Frontiers in Monte Carlo Methods for Physics" #:pdf-link (static-url "presentations/gaussian.pdf"))) ) ) ;{{{1 data publications (define my_publications `(("UV_2013" . ,(publication #:year "2013" #:title "Discontinuous Galerkin method for 4th order elliptic PDEs (in French)" #:coauthors "MSc thesis supervised by J-F Remacle" #:journal "Unpublished" #:pdf-link (static-url "pub/msc_thesis.pdf"))) ("UV_2019" . ,(publication #:year "2019" #:title "Topics in multiscale modeling: numerical analysis and applications" #:coauthors "PhD thesis supervised by G. Pavliotis and S. Kalliadasis" #:journal "Unpublished" #:pdf-link "https://spiral.imperial.ac.uk/bitstream/10044/1/73890/3/Vaes-U-2019-PhD-Thesis.pdf" #:journal-link "https://spiral.imperial.ac.uk/handle/10044/1/73890")) ("AAGPUV_2017" . ,(publication #:year "2017" #:title "Spectral methods for multiscale stochastic differential equations" #:coauthors "With A. Abdulle and G. A. Pavliotis" #:journal "SIAM/ASA J. Uncertain. Quantif" #:pdf-link "https://epubs.siam.org/doi/pdf/10.1137/16M1094117" #:journal-link "https://doi.org/10.1137/16M1094117" #:arxiv-link "https://arxiv.org/abs/1609.05097" #:bib-link "/static/bib/AAGPUU-2017.txt")) ("BAUVMPSK_2019" . ,(publication #:year "2019" #:title "A linear, second-order, energy stable, fully adaptive finite-element method for phase-field modelling of wetting phenomena" #:coauthors "With B. Aymard, M. Pradas and S. Kalliadasis" #:journal "J. Comput. Phys. X" #:pdf-link "https://arxiv.org/pdf/1901.06190" #:journal-link "https://doi.org/10.1016/j.jcpx.2019.100010" #:arxiv-link "https://arxiv.org/abs/1901.06190" #:bib-link "/static/bib/BAUVMPSK-2019.txt")) ("SGGPUV_2019" . ,(publication #:year "2020" #:title "Mean field limits for interacting diffusions with colored Noise: Phase transitions and spectral numerical methods" #:coauthors "With S. N. Gomes and G. A. Pavliotis" #:journal "Multiscale Model. Simul" #:pdf-link (static-url "pub/SGGPUV-2020.pdf") #:journal-link "https://doi.org/10.1137/19M1258116" #:arxiv-link "https://arxiv.org/abs/1904.05973" #:bib-link "/static/bib/SGGPUV-2020.txt")) ("JCUV_2019" . ,(publication #:year "2020" #:title "Wasserstein stability estimates for covariance-preconditioned Fokker-Planck equations" #:coauthors "With J. Carrillo" #:journal "Nonlinearity" #:journal-link "https://iopscience.iop.org/article/10.1088/1361-6544/abbe62" #:pdf-link "https://iopscience.iop.org/article/10.1088/1361-6544/abbe62/pdf" #:arxiv-link "https://arxiv.org/abs/1910.07555" #:bib-link "/static/bib/JCUV-2021.txt")) ("GPGSUV_2020" . ,(publication #:year "2020" #:title "Scaling limits for the generalized Langevin equation" #:coauthors "With G. A. Pavliotis and G. Stoltz" #:journal "J. Nonlinear Sci" #:journal-link "https://link.springer.com/article/10.1007/s00332-020-09671-4" #:pdf-link (static-url "pub/GPGSUV-2021.pdf") #:arxiv-link "https://arxiv.org/abs/2007.16087" #:bib-link "/static/bib/GPGSUV-2021.txt")) ("GPASUV_2020" . ,(publication #:year "2021" #:title "Derivative-free Bayesian inversion using multiscale dynamics" #:coauthors "With G. A. Pavliotis and A. M. Stuart" #:journal "SIAM J. Appl. Dyn. Syst." #:journal-link "https://epubs.siam.org/doi/pdf/10.1137/21M1397416" #:pdf-link "https://arxiv.org/pdf/2102.00540" #:arxiv-link "https://arxiv.org/abs/2102.00540" #:bib-link "/static/bib/GPASUV-2022.txt")) ("JCFHASUV_2021" . ,(publication #:year "2021" #:title "Consensus-based sampling" #:coauthors "With J. A. Carrillo, F. Hoffmann and A. M. Stuart" #:journal "Stud. Appl. Math." #:journal-link "https://doi.org/10.1111/sapm.12470" #:pdf-link "/static/pub/JCFHASUV-2021.pdf" #:arxiv-link "https://arxiv.org/abs/2106.02519" #:supplemental "https://figshare.com/articles/media/Consensus-based_sampling/14132156" #:bib-link "/static/bib/JCFHASUV-2021.txt")) ("GPGSUV_2022" . ,(publication #:year "2022" #:title "Mobility estimation for Langevin dynamics using control variates" #:coauthors "With G. A. Pavliotis and G. Stoltz" #:journal "Arxiv preprint (accepted for publication in MMS)" #:pdf-link "https://arxiv.org/pdf/2206.09781" #:arxiv-link "https://arxiv.org/abs/2206.09781")) ("JCCTUV_2021" . ,(publication #:year "2021" #:title "Consensus-based optimization and ensemble Kalman inversion for global optimization problems with constraints" #:coauthors "With J. A. Carrillo and C. Totzeck" #:journal "Lecture Notes Series on Modeling and Simulation for Collective Dynamics" #:pdf-link "/static/pub/JCCTUV-2021.pdf" #:arxiv-link "https://arxiv.org/abs/2111.02970")) ("JCFHASUV_2022" . ,(publication #:year "2022" #:title "The ensemble Kalman filter in the near-Gaussian setting" #:coauthors "With J. A. Carrillo, F. Hoffmann and A. M. Stuart" #:journal "Arxiv preprint" #:pdf-link "https://arxiv.org/pdf/2212.13239" #:arxiv-link "https://arxiv.org/abs/2212.13239")) ("DKGPUV_2021" . ,(publication #:year "2023" #:title "Optimal control of the Fokker-Planck equation: spectral methods and a reduced gradient approach" #:coauthors "With D. Kalise and G. A. Pavliotis" #:journal "In preparation")) )) ; {{{1 function: create static page (define* (static-page head main #:key (with-nav #t)) `(html (@ (lang "en")) ,(html-head head) (body ,(if with-nav (site-menu) "") ,main ,(if with-nav (site-footer) "")))) ; {{{1 function get-links publication (define* (get-links-publication p #:optional (show-bibtex #t) (class "logos")) `(,(if (pub-pdf-link p) `( (a (@ (href ,(pub-pdf-link p))) (img (@ (class ,class) (alt "PDF") (src ,(static-url "img/pdf.png"))))) " ") "") ,(if (pub-journal-link p) `( (a (@ (href ,(pub-journal-link p))) (img (@ (class ,class) (alt "url") (src ,(static-url "img/url-transparent.png"))))) " ") "") ,(if (pub-arxiv-link p) `( (a (@ (href ,(pub-arxiv-link p))) (img (@ (class ,class) (alt "arxiv") (src ,(static-url "img/arxiv.png"))))) " ") "") ,(if (and (pub-bib-link p) show-bibtex) `(a (@ (href ,(pub-bib-link p))) "Bibtex") ""))) ; {{{1 function highlight publication (define (highlight-publication p) `(div (@ (class "highlight")) (ul (@ (class "pub")) (li (@ (class "pub_title")) ,(string-append (pub-title p) ".")) (li (@ (class "pub_authors")) ,(string-append (pub-coauthors p) ", " (pub-year p) ".")) (li (@ (class "pub_journal")) ,(string-append (pub-journal p) ".") (span (@ (style "float: right; text-align: right; width: 10%")) ,(get-links-publication p #f "biglogos")))))) ; {{{1 function list-publication (define (list-publication p) `((dt ,(pub-year p)) (dd (ul (@ (class "pub")) (li (@ (class "pub_title")) ,(string-append (pub-title p) ".")) (li (@ (class "pub_authors")) ,(string-append (pub-coauthors p) ".")) (li (@ (class "pub_journal")) ,(string-append (pub-journal p) ".")) ,(if (pub-supplemental p) `(li (@ (class "pub_supplemental")) "Supplemental material: " (a (@ (href ,(pub-supplemental p))) "available here.")) "") ,(if (pub-pdf-link p) `(li (@ (class "pub_links")) ,(get-links-publication p)) ""))))) ; {{{1 function list-presentation (define (list-presentation p) `((dt (@ (class "presentations")) ,(presentation-month p) " " ,(presentation-year p)) (dd (@ (class "presentations")) (ul (@ (class "pub")) (li (@ (class "pub_title")) ,(string-append (presentation-title p) ". ") ,(if (presentation-pdf-link p) `(a (@ (href ,(presentation-pdf-link p))) (img (@ (class "logos") (alt "PDF") (src ,(static-url "img/pdf.png"))))) "") ) (li (@ (class "pub_journal")) ,(string-append (presentation-venue p) ".")) )))) ;{{{1 function: link-files (define* (link-files desc link #:key course tex bib pdf py jl ipynb html special (last-modified #t)) (let ((url (static-url (cond ((string=? course "na_spring") "teaching/numerical_analysis/") ((string=? course "na_fall") "teaching/numerical_analysis_fall/") ((string=? course "cs") "teaching/scientific_computing/") ((string=? course "csp") (if pdf "teaching/lectures/" "teaching/codes/")) (else "")))) (dir (cond ((string=? course "na_spring") "/www/numerical_analysis/") ((string=? course "na_fall") "/www/numerical_analysis_fall/") ((string=? course "cs") "/www/scientific_computing/") ((string=? course "csp") (if pdf "/www/computational_stochastic_processes/lectures/" "/www/codes/")) (else "")))) `(li ,(if special `(@ (class "special")) "") ,desc ": " ,(if (or tex bib) `("[" (a (@ (href ,(string-append url "build/" (basename link) ".pdf"))) "pdf") "] ") "") ,(if pdf `("[" (a (@ (href ,(string-append url link ".pdf"))) "pdf") "] ") "") ,(if py `("[" (a (@ (href ,(string-append url link ".py")) (download)) "Python") "] ") "") ,(if jl `("[" (a (@ (href ,(string-append url link ".jl")) (download)) "Julia") "] ") "") ,(if ipynb `("[" (a (@ (href ,(string-append url link ".ipynb")) (download)) "Jupyter") "] ") "") ,(if html `("[" (a (@ (href ,(string-append url link ".html"))) "HTML") "] ") "") ,(if last-modified `(p (em "Last modified: " ,(let* ((date (string-append "date -r " dir link (cond (pdf ".pdf") (tex ".tex") (bib ".bib") (jl ".jl") (else ".py ")) " +\"%d %b %Y\"")) (port (open-input-pipe date)) (str (read-line port))) (close-pipe port) str) ".")) "") ))) ; {{{1 webpage: contact (define (contact-page) (static-page "Contact" `(main ,(read-xml "html/contact.html")))) ; {{{1 webpage: cv (define (cv-page) (static-page "CV" `(main (h1 "Curriculum Vitæ") (p "▶ Download PDF version: " (a (@ (id "download") (href ,(static-url "doc/cv_fr.pdf"))) "[French]") " " (a (@ (id "download") (href ,(static-url "doc/cv.pdf"))) "[English]")) ,(read-xml "html/cv.html")))) (define (hello-page) (static-page "Welcome" `(main (h1 "Hello, world!")))) ;{{{1 webpage: research (define (research-page) (static-page "Research" `(main (h1 "Research") (h2 "Summary") ,(read-xml "html/research/summary.html") (h2 "Main research interests") (h3 "Mean field limit of interacting particle systems") ,(read-xml "html/research/mckean.html") ,(highlight-publication (assoc-ref my_publications "SGGPUV_2019")) ,(read-xml "html/research/enkf.html") ,(highlight-publication (assoc-ref my_publications "JCUV_2019")) (h3 "The generalized Langevin equation: effective diffusion and long-time behavior") ,(read-xml "html/research/gle.html") ,(highlight-publication (assoc-ref my_publications "GPGSUV_2020")) (h3 "Spectral methods for Poisson and Fokker-Planck-Kolmogorov equations") ,(read-xml "html/research/spectral.html") ,(highlight-publication (assoc-ref my_publications "AAGPUV_2017")) (h3 "Finite element methods for elliptic partial differential equations") ,(read-xml "html/research/kirchoff.html") ,(highlight-publication (assoc-ref my_publications "UV_2013")) ,(read-xml "html/research/cahn.html") ,(highlight-publication (assoc-ref my_publications "BAUVMPSK_2019")) ))) ;{{{1 webpage: publications (define (publications-page) (static-page "Publications" `(main (h1 "Publications") (h2 "Preprints") (dl ,(list-publication (assoc-ref my_publications "GPGSUV_2022")) ,(list-publication (assoc-ref my_publications "JCFHASUV_2022")) ) (h2 "Published papers") (dl ,(list-publication (assoc-ref my_publications "JCFHASUV_2021")) ,(list-publication (assoc-ref my_publications "GPASUV_2020")) ,(list-publication (assoc-ref my_publications "GPGSUV_2020")) ,(list-publication (assoc-ref my_publications "JCUV_2019")) ,(list-publication (assoc-ref my_publications "SGGPUV_2019")) ,(list-publication (assoc-ref my_publications "BAUVMPSK_2019")) ,(list-publication (assoc-ref my_publications "AAGPUV_2017"))) (h2 "Book chapters") (dl ,(list-publication (assoc-ref my_publications "JCCTUV_2021"))) (h2 "Unpublished work") (dl ,(list-publication (assoc-ref my_publications "UV_2019")) ,(list-publication (assoc-ref my_publications "UV_2013"))) ))) ;{{{1 webpage: presentations (define (presentations-page) (static-page "Presentations" `(main (h2 "Presentations since September 2021") (dl ,(list-presentation (assoc-ref my_presentations "Leiden_2023")) ,(list-presentation (assoc-ref my_presentations "Rennes_2023")) ,(list-presentation (assoc-ref my_presentations "Imperial_2022")) ,(list-presentation (assoc-ref my_presentations "Siam_2022")) ,(list-presentation (assoc-ref my_presentations "mcqmc_2022")) ,(list-presentation (assoc-ref my_presentations "Birmingham_2022")) ,(list-presentation (assoc-ref my_presentations "Inria_2021")) ,(list-presentation (assoc-ref my_presentations "Simons_2021")) ,(list-presentation (assoc-ref my_presentations "Cecam_2021")) )))) ;{{{1 webpage: software (define (git-page) (static-page "Software" `(main (h1 "Software") (p "Most of the git repositories I work(ed) on are available " (a (@ (href "https://git.vaes.uk")) "here") " or on my " (a (@ (href "https://github.com/urbainvaes")) "github page.")) (h2 "Scientific software") (p "During the course of my PhD, I was involved in two programming projects related to my research.") (h3 "Hermipy") (p (a (@ (href "https://github.com/urbainvaes/hermipy")) "Hermipy") " is a thin Python library that allows automating most of the operations involved in implementing a Hermite spectral method. The library uses the data structures provided by the " (a (@ (href "https://en.wikipedia.org/wiki/NumPy")) "Numpy") " library for linear algebra, and it also depends on " (a (@ (href "https://en.wikipedia.org/wiki/SymPy")) "Sympy") " for symbolic calculations. Computationally intensive parts of the computations, such as Hermite transforms, are handed over to a C++ compiled component, and " (a (@ (href "https://en.wikipedia.org/wiki/Boost_(C%2B%2B_libraries)")) "Boost") " is used for efficient exchange of data with Python. For more information, read the " (a (@ (href "https://hermipy.readthedocs.io/en/latest/")) "documentation") ".") (h3 "Cahn-Hilliard solver") (p (a (@ (href "https://github.com/urbainvaes/cahn-hilliard")) "This") " is a high-level framework for the numerical solution of the " (a (@ (href "https://en.wikipedia.org/wiki/Cahn%E2%80%93Hilliard_equation")) "Cahn-Hilliard equation") ", implementing a number of semi-implicit numerical methods in " (a (@ (href "https://freefem.org")) "FreeFem++") " and offering users the means to rapidly " (strong "(i)") " define the initial and boundary conditions of the problem, " (strong "(ii)") " run a particular numerical method with appropriate parameters, and " (strong "(iii)") " post-process the solution. Both two and three-dimensional settings are supported, and the geometry of the domain is read in files generated by the " (a (@ (href "http://gmsh.info/")) "Gmsh") " mesh-generator.") ,(let ((card (lambda (name type) `(p (div (@ (class "github-card") (data-github ,(string-append "urbainvaes/" name)) (data-width "400") (data-height "") (data-theme "default")) "") (script (@ (src "//cdn.jsdelivr.net/github-cards/latest/widget.js")) "")) `(li (a (@ (href ,(string-append "https://github.com/urbainvaes/" name))) ,name) " (" ,type ")") ) )) `((h2 "Non-scientific software") (p "I also wrote utility software that " (a (@ (href "https://en.wikipedia.org/wiki/Vim_(text_editor)")) "vim") " or shell users may find useful.") (ul ,(card "vim-ripple" "Vim plugin") ,(card "vim-tmux-pilot" "Vim plugin") ,(card "fzf-marks" "Shell plugin"))) ) ))) ;{{{1 webpage: teaching (define (teaching-page) (static-page "Teaching" `(main (h1 "Teaching activities") (ul (li "Spring 2020: " (a (@ (href "/teaching/2020-csp/")) "Computational Stochastic Processes")) (li "Spring 2022: " (a (@ (href "/teaching/2022-spring-na/")) "Numerical Analysis")) (li "Fall 2022: " (a (@ (href "/teaching/2022-fall-na/")) "Numerical Analysis")) (li "Spring 2023: " (a (@ (href "/teaching/2023-cs/")) "Practical Scientific Computing")) )))) ;{{{1 webpage: teaching 2020-csp (define (teaching-page/2020-csp) (static-page "Computational Stochastic Processes" `(main (h1 "Computational Stochastic Processes") (p "This page contains some of the material for the course MATH97016/MATH97094: Computational Stochastic Processes. The course material was initially developed by " (a (@ (href "http://wwwf.imperial.ac.uk/~pavl/")) "Grigorios Pavliotis") ", and it later received improvements from " (a (@ (href "http://wwwf.imperial.ac.uk/~aduncan/")) "Andrew Duncan") " and " (a (@ (href "https://warwick.ac.uk/fac/sci/maths/people/staff/gomes/")) "Susana Gomes") ". In particular, the lecture notes linked below were assembled by Andrew Duncan, and the handwritten part of the notes distributed weekly were written by Susana Gomes." (dl (dt "Lectures") (dd (br)) (ul (@ (style "list-style-type:none;padding-left:0;")) (li "Monday 13:00-14:00 (Huxley 145)") (li "Tuesday 12:00-13:00 (Huxley 140)") (li "Friday 17:00-18:00 (Huxley 213)")) (dt "Office hours") (dd "Tuesday 15:00-16:00, or by email appointment.")) ) (h2 "Lecture notes") (ul (@ (id "codes")) ,(link-files "Lecture notes (from 2016)" "notes_2016" #:course "csp" #:pdf #t #:special #t) ,(link-files "List of examinable proofs" "build/list_of_proofs" #:course "csp" #:pdf #t #:special #t) ,(link-files "Introduction (based on slides by Susana Gomes)" "build/intro" #:course "csp" #:pdf #t) ,(link-files "W1: Random number generation and introduction to Monte Carlo simulation" "build/lectures-w1" #:course "csp" #:pdf #t) ,(link-files "W2: Variance reduction techniques for Monte Carlo simulation" "build/lectures-w2" #:course "csp" #:pdf #t) ,(link-files "W3: Simulation of continuous-time Markov processes" "build/lectures-w3" #:course "csp" #:pdf #t) ,(link-files "W4: Simulation of Gaussian processes (cont'd) and SDEs" "build/lectures-w4" #:course "csp" #:pdf #t) ,(link-files "W5: Numerical methods for SDEs" "build/lectures-w5" #:course "csp" #:pdf #t) ,(link-files "W6: Numerical methods for SDEs (cont'd)" "build/lectures-w6" #:course "csp" #:pdf #t) ,(link-files "W7: Inference for SDEs" "build/lectures-w7" #:course "csp" #:pdf #t) ,(link-files "W8: Inference (cont'd) and markov chains" "build/lectures-w8" #:course "csp" #:pdf #t) ,(link-files "W9: Markov chain Monte Carlo" "build/lectures-w9" #:course "csp" #:pdf #t) ) (h2 "Problem sheets and coursework") (ul (@ (id "codes")) ,(link-files "Problem sheet 1: questions" "build/problem_sheet_1_questions" #:course "csp" #:pdf #t) ,(link-files "Problem sheet 1: solutions" "build/problem_sheet_1_answers" #:course "csp" #:pdf #t) ,(link-files "Problem sheet 1: codes" "w4_problem_sheet" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "Problem sheet 2: questions" "build/problem_sheet_2_questions" #:course "csp" #:pdf #t) ,(link-files "Problem sheet 2: solutions" "build/problem_sheet_2_answers" #:course "csp" #:pdf #t) ,(link-files "Problem sheet 2: codes" "w10_problem_sheet" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "Assessed coursework" "build/coursework_problems" #:course "csp" #:pdf #t) ,(link-files "Assessed coursework: solution to Problem 1" "coursework_problem_1" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "Assessed coursework: solution to Problem 2" "coursework_problem_2" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "Assessed coursework: solution to Problem 3" "coursework_problem_3" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "Mock exam" "mock_exam" #:course "csp" #:pdf #t) ,(link-files "Mock exam: brief solutions" "build/mock_exam-solutions" #:course "csp" #:pdf #t) ) ,(read-xml "html/hint.html") (h2 "Python examples") (p "If you find bugs in the codes, or if you worked on a code example that could benefit the class, do not hesitate to drop me an email. Alternatively, you can open an issue or a pull request at the " (a (@ (href "https://github.com/urbainvaes/computational_stochastic_processes")) "git repository") ".") (ul (@ (id codes)) ,(link-files "Introduction - Calculating Pi" "introduction_calculate_pi" #:course "csp" #:py #t) ,(link-files "Introduction: Simulation of Langevin dynamics" "introduction_langevin" #:course "csp" #:py #t) ,(link-files "W1 - Linear congruential generator" "w1_linear_congruential_generator" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "W1 - Generating nonuniform random numbers" "w1_generate_nonuniform_random_numbers" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "W2 - Monte Carlo simulation" "w2_monte_carlo" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "W2 - Variance reduction" "w2_variance_reduction" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "W3 - Simulation of Gaussian processes" "w3_gaussian_processes" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "W4 - Fast simulation of stationary Gaussian processes" "w4_dft_gaussian_processes" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "W5 - Numerical methods for SDEs" "w5_numerical_solution_of_sdes" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "W6 - Some applications of numerical methods for SDEs" "w6_applications_of_sdes" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "W7 - Inference for SDEs" "w7_inference_for_sdes" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "W8 - Introduction to Markov chains" "w8_markov_chains" #:course "csp" #:py #t #:ipynb #t #:html #t) ,(link-files "W9 - Markov chain Monte Carlo" "w9_metropolis-hastings" #:course "csp" #:py #t #:ipynb #t #:html #t) )) #:with-nav #f)) ;{{{1 webpage: teaching 2022-spring-na (define (teaching-page/2022-spring-na) (static-page "Numerical Analysis" `(main (video (@ (width "100%") (autoplay "True") (loop "") (controls "")) (source (@ (src ,(static-url "research/chebyshev.ogg")) (type "video/ogg"))) (source (@ (src ,(static-url "research/chebyshev.webm")) (type "video/webm"))) "Sorry, your browser doesn't support embedded videos.") (p "See " (a (@ (href "/teaching")) "here") " my previous teaching activities.") (h1 "Numerical Analysis") (p "This is the website for the course MATH-UA 9252: " (em "Numerical Analysis.") " Lecture notes and assignments will be posted here weekly. Apart from the first few lectures which will be fully online, all the lectures will be hybrid: in room 406 and online at the Zoom link indicated below.") (h2 "Practical information") (dl (dt (b "Lectures")) (dd "Tuesday and Thursday 14:15-15:30 Paris time, Room 406.") (dt (b "Recitation")) (dd "Thursday 15:45-17:15 Paris time, Room 406.") (dt (b "Office hours")) (dd "Tuesday 15:40, or by email appointment.") (dt (b "Zoom link")) (dd (a (@ (href "https://nyu.zoom.us/j/2341268713")) "https://nyu.zoom.us/j/2341268713") ".") (dt (b "Assessment")) (dd "70% assignments, 30% final exam.") (dt (b "Reference textbook")) (a (@ (href "https://link.springer.com/book/10.1007/b98885")) "https://link.springer.com/book/10.1007/b98885") ".") (p "There will be an additional online lecture on " (b "Friday 18 Feb ") " 14:15-15:30, which is the make up day for Tuesday 25 Jan.") (h2 "Lecture notes") (ul (@ (id codes)) ,(link-files "Lecture notes" "build/main" #:course "na_spring" #:pdf #t #:special #t) ,(link-files "Syllabus" "frontmatter/syllabus" #:course "na_spring" #:tex #t #:special #t) ,(link-files "List of examinable proofs" "frontmatter/list_of_proofs" #:course "na_spring" #:tex #t #:special #t) ,(link-files "Introduction" "mainmatter/introduction" #:course "na_spring" #:tex #t #:special #f) ,(link-files `((b "Chapter 1") ": Floating point arithmetic") "mainmatter/roundoff" #:course "na_spring" #:tex #t #:special #f) ,(link-files `((b "Chapter 2") ": Solving linear equations") "mainmatter/linear_equations" #:course "na_spring" #:tex #t #:special #f) ,(link-files `((b "Chapter 3") ": Solving nonlinear equations") "mainmatter/nonlinear_equations" #:course "na_spring" #:tex #t #:special #f) ,(link-files `((b "Chapter 4") ": Calculating eigenvalues and eigenvectors") "mainmatter/eigenproblems" #:course "na_spring" #:tex #t #:special #f) ,(link-files `((b "Chapter 5") ": Interpolation and approximation") "mainmatter/interpolation_approximation" #:course "na_spring" #:tex #t #:special #f) ,(link-files `((b "Chapter 6") ": Numerical integration") "mainmatter/numerical_integration" #:course "na_spring" #:tex #t #:special #f) ,(link-files `((b "Appendix A") ": Vectors and matrices") "mainmatter/matrices" #:course "na_spring" #:tex #t #:special #f) ,(link-files `((b "Appendix B") ": Introduction to Julia") "mainmatter/julia" #:course "na_spring" #:tex #t #:special #f) ,(link-files "Bibliography" "references" #:course "na_spring" #:bib #t #:special #t) ) (h2 "Midterm and final exam") (ul (@ (id codes)) ,(link-files "Practice midterm" "midterm/build/main" #:course "na_spring" #:pdf #t #:last-modified #t) ,(link-files "Final exam" "endterm/build/main" #:course "na_spring" #:pdf #t #:last-modified #t) ,(link-files "Final exam with solutions" "endterm/build/main_solutions" #:course "na_spring" #:pdf #t #:last-modified #t) ) (h2 "Homework") (p "Unless otherwise specified, the due time for assignments is the Friday of the following week, end of the day. All the assignments carry an equal weight. You can send your work by email to " (a (@ (href "mailto:urbain.vaes@nyu.edu")) "urbain.vaes@nyu.edu") ".") (ul (@ (id "homework")) (li (p (b "Homework 1: ") "Complete task 4 in Appendix B. You may return either a file " (em "hw1.jl") " or a Jupyter notebook " (em "hw1.ipynb") ".") (p (em "Extra credit: ") "+2/10 if you also provide a working implementation for task 5. " (a (@ (href "/static/teaching/numerical_analysis/solutions/hw1_frame-stewart.html")) "[solution]"))) (li (p (b "Homework 2: ") "Complete Exercises 1.6 and 1.16. Return your work in a Jupyter notebook called " (em "hw2.ipynb") ".") (p (em "Extra credit: ") "+2/10 if you complete also Exercise 1.17.")) (li (p (b "Homework 3: ") "Complete Exercise 2.7. Return your work in a file called " (em "hw3.jl") ".") (p (em "Extra credit: ") "... if you complete the part that says 'extra credit', and if your code is reasonably fast.")) (li (p (b "Homework 4: ") "Complete Exercise 2.18. Return your work in a file called " (em "hw4.jl") ".") (p (em "Extra credit: ") "Find a formula for the optimal ω in the relaxation method.")) (li (p (b "Homework 5: ") "Complete Exercises 2.22 and 2.23. Return your work in a file called " (em "hw5.ipynb") ".") (p (em "Starting point: ") "this julia file " (a (@ (href "/static/teaching/numerical_analysis/solutions/hw5_poisson.html")) "[hw5.jl]"))) (li (p (b "Homework 6: ") "Complete Exercises 3.12. Return your work in a file called " (em "hw6.jl") ".") (p (em "Extra credit: ") "+2/10 if you complete also exercise 3.5.")) (li (p (b "Homework 7: ") "Complete Exercise 4.1. Return your work in a file called " (em "hw7.ipynb") " before Thu 14 Apr. Dataset: " (a (@ (href "/static/teaching/numerical_analysis/misc/data_hw7.tar.gz")) "[data.tar.gz]")) (p (em "Extra credit: ") "+1/10 if you complete the part that says 'extra credit'.")) (li (p (b "Homework 8: ") "Complete Exercise 5.11. Return your work in a file called " (em "hw8.jl") " before Thu 28 Apr.") (p (em "Extra credit: ") "+1/10 if you implement the polyonmial interpolation yourself, without relying on a package.")) (li (p (b "Homework 9: ") "Complete exercise 2.1 in the Jupyter notebook of week 13. Return your work before Sun 8 May.") (p (em "Accompanying documents: ") (a (@ (href "/static/teaching/numerical_analysis/misc/recitation.ipynb") (download)) "[Jupyter notebook]") (a (@ (href "/static/teaching/numerical_analysis/misc/reg_dataset.csv") (download)) "[dataset1]") (a (@ (href "/static/teaching/numerical_analysis/misc/class_dataset.csv") (download)) "[dataset2]"))) ) (p "At any time during the course, you can earn bonus points for the next assignment, with a maximum of +2 out of 10, if you spot typos in the lecture notes (only in the sections explicitly listed): +0.4 for an English or formatting typo, and +1 for a mathematical error. " "To communicate that you found a typo, you can either send me an email with [TYPO] in the subject line, or fix the typo directly in the " (a (@ (href "https://github.com/urbainvaes/numerical_analysis/tree/master/mainmatter")) "LaTeX source") ". (For the latter option, you will need a Github account.)") (h2 "Julia codes") (ul (@ (id codes)) ,(link-files `((b "Chapter 1") ": Floating point arithmetic") "codes/notebook_roundoff" #:course "na_spring" #:jl #t #:ipynb #t #:html #t) ,(link-files `((b "Chapter 2") ": Solving linear systems") "codes/notebook_linear" #:course "na_spring" #:jl #t #:ipynb #t #:html #t) ) (h2 "Detailed log (adjusted a posteriori)") (h3 "Week 1") (ul (@ (id codes)) (li (b "Thu 27 Jan (lecture)") ": Introduction, Section 1.1, and beginning of Section 1.2. " (a (@ (href "https://nyu.zoom.us/rec/share/dWlxF-hg_ywsRlO62bjB7V_GxVkMxxb3YNnUa3Y5d1ZWj8TZYgxFaOHlDbjb1EGQ.lyOvyFr4j_NTvLfC")) "[Recording]")) (li (b "Thu 27 Jan (recitation)") ": Appendix B.") ) (h3 "Week 2") (ul (@ (id codes)) (li (b "Tue 01 Feb (lecture)") ": Sections 1.2 and 1.3. We will not cover Sections 1.4 and 1.5 during the lectures. " (a (@ (href "https://nyu.zoom.us/rec/share/T4jmU3hoy0RsVrlRkc-9JwZE0G1mcV01HuaEOEttf09tpiUzsxVSL62WxNrIHXeX.Zl9QS3qkf8-1BDHo")) "[Recording]")) (li (b "Thu 03 Feb (lecture)") ": Sections 2.1 and background material in Sections A.2 and A.3. " (a (@ (href "https://nyu.zoom.us/rec/share/x57nP0LvOY1tcK9ZxCQCzsmgxApNMZ0ijbebYQqVmCcf7WDelIRfaWcHP39WzReq.Dk_7sXXx3e8DDiOj")) "[Recording]")) (li (b "Thu 03 Feb (recitation)") ": Exercises 1.3, 1.4, 1.7 and 1.14. " ) ) (h3 "Week 3") (ul (@ (id codes)) (li (b "Tue 08 Feb (lecture)") ": Sections 2.1 and 2.2. " (a (@ (href "https://nyu.zoom.us/rec/share/H3sCmlSy3aHNAl9Shg-mdc2WMSF8DJjOonDFdTNgp41d837JGFmAOk6ej2QUBe9V.n9pR_zmIATXMe_ix")) "[Recording]")) (li (b "Thu 10 Feb (lecture)") ": Section 2.2. " (a (@ (href "https://nyu.zoom.us/rec/share/Ykmlg15x2x71F3ODd-A5BPE4VuqbkIqaYgt7yM3R5s9Uo-F0A6FGnHgFG5iud6A.ow8Pz4nZlPDVdF0Y")) "[Recording]")) (li (b "Thu 10 Feb (recitation)") ": Exercises 2.1, 2.2, 2.4 and 2.5. " ) ) (h3 "Week 4") (ul (@ (id codes)) (li (b "Tue 15 Feb (lecture)") ": End of 2.2. " (a (@ (href "https://nyu.zoom.us/rec/share/oMCvvDEYro6tKmk5OIYc-eI4M9QB5noNpe2KmthAUbhz5sgXHLgC0gd0CQt2UGDU.4QumyY1wEIHTJ_9O")) "[Recording]")) (li (b "Thu 17 Feb (lecture)") ": Section 2.3. " (a (@ (href "https://nyu.zoom.us/rec/share/WSbbsTOllGDl-z8jjS6WtyBmzreEXmkp-0c0CZYwhZP_RZrrxTEWGvPdHcJEdrRQ.RJvtjf8XFz-VFPG1")) "[Recording]")) (li (b "Thu 10 Feb (recitation)") ": Exercices 2.9 to 2.15." ) (li (b "Thu 18 Feb (online lecture)") ": Section 2.3. " (a (@ (href "https://nyu.zoom.us/rec/share/tpbbNcoLHksolrKRMuj_ewqEqe0sNmrsfskaXejzM-mxCsWq8IxhwiqqjDCuiB_y.fGgLIW4_0re9S9kG")) "[Recording]")) ) (h3 "Week 5") (ul (@ (id codes)) (li (b "Tue 22 Feb (lecture)") ": Section 2.3.1: convergence results for Jacobi's method and the relaxation method. " (a (@ (href "https://nyu.zoom.us/rec/share/pzGvsn7pcItfujAjNrreS-2s2MD9f0DkdEAdlK4vKVKslBhkiZCcUBJDXhI4X9qg.YCBw61iANKALcvFN")) "[Recording]")) (li (b "Thu 24 Feb (lecture)") ": End of Section 2.3.1 and beginning of Section 2.3.2. " (a (@ (href "https://nyu.zoom.us/rec/share/sERTqib-BWYY29DW1N3pGadpBynHEnrU1KUYr9gYIV4kpeKB1c5rTRJYl71HaJxR.2RCDMzX5uynUmfnB")) "[Recording]")) (li (b "Thu 24 Feb (recitation)") ": Exercise 2.12, 2.13 and 2.19. Then 2.18 if time permits." ) ) (h3 "Week 6") (ul (@ (id codes)) (li (b "Tue 1 Mar (lecture)") ": Section 2.3.2. " (a (@ (href "https://nyu.zoom.us/rec/share/m0IA0P0HsBP9eCFyclhyt0eUjuhFXPIwtUv3ybKWAr9vMUrMoNeaxmd51gMtuRXU.aO8zkSOdnYhOzgKn")) "[Recording]")) (li (b "Thu 3 Mar (lecture)") ": End of Section 2.3.2. " (a (@ (href "https://nyu.zoom.us/rec/share/M1Enm1t101lhVOf4vw4x3ZDPajX-orYtOlLgnohwMNGdH3kjHyO0cFj_FIM6-hQo.qV1eU8zbCOvdPUEM")) "[Recording]")) (li (b "Thu 3 Mar (recitation)") ": Exercises 2.20 and 2.21." ) ) (h3 "Week 7") (ul (@ (id codes)) (li (b "Tue 8 Mar (lecture)") ": End of Section 2.3.2 and beginning of Chapter 3. " (a (@ (href "https://nyu.zoom.us/rec/share/s6vBn7yFNXDzW4688eYdmsgZJRyUf6Hb0sl1yj-uKYpy0yB8Ch8TjmBYq-K55tjs.DoSDwobdSOmBKRiw")) "[Recording]")) (li (b "Thu 10 Mar (lecture)") ": Beginning of Section 3 " (a (@ (href "https://nyu.zoom.us/rec/share/IxK0P9f-LpWolRgcOGtXTGIE7cn_2qxWScyOGeEIZiLyFlp6GAknhCJItFswSH3C.o2IjFsCdipdtqv0h")) "[Recording]")) (li (b "Thu 10 Mar (recitation)") ": Exercise 2.24 and Exercises 3.1 to 3.4." ) ) (h3 "Week 8") (ul (@ (id codes)) (li (b "Tue 21 Mar (lecture)") ": Section 3.3. " (a (@ (href "https://nyu.zoom.us/rec/share/IxK0P9f-LpWolRgcOGtXTGIE7cn_2qxWScyOGeEIZiLyFlp6GAknhCJItFswSH3C.o2IjFsCdipdtqv0h")) "[Recording]")) (li (b "Thu 24 Mar (lecture)") ": Section 3.4. " (a (@ (href "https://nyu.zoom.us/rec/share/5dzRYK0HUhLY5nCh0A1CLnOa0iC6BBVUEwoolHmmB_ST3QHbOaU37WVyJb1VA9Cd.pC2oe1bMngbwxeK6")) "[Recording]")) (li (b "Thu 24 Mar (recitation)") ": Exercise 3.6 to 3.10." ) ) (h3 "Week 9") (ul (@ (id codes)) (li (b "Tue 29 Mar (lecture)") ": Introduction to Chapter 4. " (a (@ (href "https://nyu.zoom.us/rec/share/8HW_lOuYsCS7_fPfFgPqJygjflNtO3k_c2rdrjzWVvHhi6YCbGsiJxOkjzgjeivm.pTtnC0p36uHsVT0W")) "[Recording]")) (li (b "Thu 31 Mar (lecture)") ": Practice midterm and end of Section 4.2.") ) (h3 "Week 10") (ul (@ (id codes)) (li (b "Tue 5 Apr (lecture)") ": Section 4.3 and 4.4. " (a (@ (href "https://nyu.zoom.us/rec/share/IxK0P9f-LpWolRgcOGtXTGIE7cn_2qxWScyOGeEIZiLyFlp6GAknhCJItFswSH3C.o2IjFsCdipdtqv0h")) "[Recording]")) (li (b "Thu 7 Apr (lecture)") ": End of Chapter 4. " (a (@ (href "https://nyu.zoom.us/rec/share/3Ny-LY9gkUtzMCKEse3fL-B4eDXaZNt90_BUE2n70JRJzHBZPuZasjefdNgbsknS.OXqW7g62ZD8rzm66")) "[Recording]")) (li (b "Thu 7 Apr (recitation)") ": Exercises of Chapter 4." ) ) (h3 "Week 11") (ul (@ (id codes)) (li (b "Tue 12 Apr (lecture)") ": Beginning of Chapter 5, introduction to interpolation. " (a (@ (href "https://nyu.zoom.us/rec/share/HDrKFUjQz5XZgFSFvQAvivwJrB8eL7bcqBwh2wvPksJaGQ50AA2xzS2k4SbhLko_.lLH2_n1M9TXLaCg5")) "[Recording]")) (li (b "Thu 14 Apr (lecture)") ": Sections 5.1.3 and 5.1.4. " (a (@ (href "https://nyu.zoom.us/rec/share/UaklmkJ44cXOXzWB8-_FDl3dxDTFeGmT93hRqVORXEwjMTA-FzW8FMSidf7KQHXZ.IbLgC1c2tJVFIbHD")) "[Recording]")) (li (b "Thu 14 Apr (recitation)") ": Exercises of Chapter 5." ) ) (h3 "Week 12") (ul (@ (id codes)) (li (b "Tue 19 Apr (lecture)") ": Sections 5.1.5 and 5.1.6. " (a (@ (href "https://nyu.zoom.us/rec/share/1pFiPnWj973lcs0AxJ6H6V14tz_-I2pnWZjImN5Mttzor5l8yPoXUCRA4u0uHmRP.cInjmIAF_DTYC0vJ")) "[Recording]")) (li (b "Thu 21 Apr (lecture)") ": End of Section 5.1 and beginning of Section 5.2. " (a (@ (href "https://nyu.zoom.us/rec/share/JANuGJ6OxWgCKorFrvmrR0AZbi7OJax9mJeD6BBZtwwQ4KKUCj8IVBZxzFNnIW9a.dbb9h-2yFkOafBNN")) "[Recording]")) (li (b "Thu 21 Apr (recitation)") ": Exercises of Chapter 5.") ) (h3 "Week 13") (ul (@ (id codes)) (li (b "Tue 26 Apr (lecture)") ": Beginning of Chapter 6. " (a (@ (href "https://nyu.zoom.us/rec/share/1pFiPnWj973lcs0AxJ6H6V14tz_-I2pnWZjImN5Mttzor5l8yPoXUCRA4u0uHmRP.cInjmIAF_DTYC0vJ")) "[Recording]")) (li (b "Thu 28 Apr (lecture)") ": Guest lecture on machine learning approaches to function approximation.") (li (b "Thu 28 Apr (recitation)") ": Exercises in this " (a (@ (href "/static/teaching/numerical_analysis/misc/recitation.ipynb") (download)) "Jupyter notebook") ". Accompanying datasets: " (a (@ (href "/static/teaching/numerical_analysis/misc/reg_dataset.csv") (download)) "[dataset1]") (a (@ (href "/static/teaching/numerical_analysis/misc/class_dataset.csv") (download)) "[dataset2]")) ) (h3 "Week 14") (ul (@ (id codes)) (li (b "Tue 3 May (lecture)") ": Composite integration methods and Richardson's extrapolation. " (a (@ (href "ttps://nyu.zoom.us/rec/share/lYpl10zNThxg_f4ZW0HdYpy4Ajksc62hfVig5cAudFQJXImEgdfI6Ij0aDwsgXsB.CD6qhiQorwfMvnlf")) "[Recording]")) (li (b "Thu 5 May (lecture)") ": End of Chapter 6. " (a (@ (href "not_available_yet")) "[Recording]")) (li (b "Thu 5 May (recitation)") ": Exercises of Chapter 6.") ) (h2 "Miscellaneous documents") (ul (@ (id misc)) ,(link-files "Calendar of Spring term 2022" "misc/calendar" #:course "na_spring" #:pdf #t #:last-modified #f) ,(link-files "Slides 28 April" "misc/slides" #:course "na_spring" #:pdf #t #:last-modified #f)) ) #:with-nav #f)) ;{{{1 webpage: teaching 2022-fall-na (define (teaching-page/2022-fall-na) (static-page "Numerical Analysis" `(main (div (@ (id "mybox") (class "jxgbox") (style "width:100%; height:300px")) "") (script (@ (type "text/javascript") (src ,(static-url "js/interp.js"))) "") (p "See " (a (@ (href "/teaching")) "here") " my previous teaching activities.") (h1 "Numerical Analysis") (p "This is the website for the course MATH-UA 9252: " (em "Numerical Analysis.") " Lecture notes and assignments will be posted here weekly. All the lectures will be hybrid: in room 406 and online at the Zoom link indicated below.") (h2 "Practical information") (dl (dt (b "Lectures")) (dd "Monday and Wednesday 15:00-16:15 Paris time, Room 406.") (dt (b "Recitation")) (dd "Monday 16:30-18:00 Paris time, Room 406.") (dt (b "Office hours")) (dd "Thursday 10:00 Paris time at the usual Zoom link or by email appointment.") (dt (b "Zoom link")) (dd (a (@ (href "https://nyu.zoom.us/j/2341268713")) "https://nyu.zoom.us/j/2341268713") ".") (dt (b "Assessment")) (dd "60% assignments, 40% final exam.") (dt (b "Reference textbook")) (a (@ (href "https://link.springer.com/book/10.1007/b98885")) "https://link.springer.com/book/10.1007/b98885") ".") (p "There will be an additional online lecture on " (b "Friday 23 Sep") " 15:00-18:00, which is the make up day for Monday 31 Oct") (h2 "Lecture notes") (ul (@ (id "codes")) ,(link-files "Lecture notes" "build/main" #:course "na_fall" #:pdf #t #:special #t) ,(link-files "Syllabus" "frontmatter/syllabus" #:course "na_fall" #:tex #t #:special #t) ,(link-files "List of examinable proofs" "frontmatter/list_of_proofs" #:course "na_fall" #:tex #t #:special #t) ,(link-files "Introduction" "mainmatter/introduction" #:course "na_fall" #:tex #t #:special #f) ,(link-files `((b "Chapter 1") ": Floating point arithmetic") "mainmatter/roundoff" #:course "na_fall" #:tex #t #:special #f) ,(link-files `((b "Chapter 2") ": Interpolation and approximation") "mainmatter/interpolation_approximation" #:course "na_fall" #:tex #t #:special #f) ,(link-files `((b "Chapter 3") ": Numerical integration") "mainmatter/numerical_integration" #:course "na_fall" #:tex #t #:special #f) ,(link-files `((b "Chapter 4") ": Solving linear equations") "mainmatter/linear_equations" #:course "na_fall" #:tex #t #:special #f) ,(link-files `((b "Chapter 5") ": Solving nonlinear equations") "mainmatter/nonlinear_equations" #:course "na_fall" #:tex #t #:special #f) ,(link-files `((b "Chapter 6") ": Calculating eigenvalues and eigenvectors") "mainmatter/eigenproblems" #:course "na_fall" #:tex #t #:special #f) ,(link-files `((b "Appendix A") ": Linear algebra") "mainmatter/matrices" #:course "na_fall" #:tex #t #:special #f) ,(link-files `((b "Appendix B") ": Introduction to Julia") "mainmatter/julia" #:course "na_fall" #:tex #t #:special #f) ,(link-files `((b "Appendix C") ": Chebyshev polynomials") "mainmatter/chebyshev" #:course "na_fall" #:tex #t #:special #f) ,(link-files "Bibliography" "references" #:course "na_fall" #:bib #t #:special #t) ) (h2 "Homework") (p "Unless otherwise specified, the due time for assignments is the Saturday following the day of handing out. All the assignments carry an equal weight. You can send your work by email to " (a (@ (href "mailto:urbain.vaes@inria.fr")) "urbain.vaes@inria.fr") ".") (ul (@ (id "homework")) (li (p (b "Homework 1: ") "Complete one of the items of Task 5 in Appendix B. You may return either a file " (em "hw1.jl") " or a notebook " (em "hw1.ipynb") ".") (p (em "Extra credit: ") "+2/10 if you complete all three items. ")) (li (p (b "Homework 2: ") "Complete Exercise 1.23. Return a file " (em "hw2.pdf") ".") (p (em "Extra credit: ") "+2/10 if you complete also exercise 1.5 (in this case, please send a file " (em "hw2.jl") ")")) (li (p (b "Homework 3: ") "Complete Exercise 2.15. Return a file " (em "hw3.jl") ".") (p (em "Extra credit: ") "+2/10 if your code is the fastest.")) (li (p (b "Homework 4: ") "Complete Exercise 3.11. Return a file " (em "hw4.jl") ".") (p (em "Extra credit: ") "+2/10 if your confidence interval is better than the one in the example solution.")) (li (p (b "Homework 5: ") "Complete Exercise 4.24. Return a file " (em "hw5.jl") ".") (p (em "Extra credit: ") "+2/10 if you also complete the part that says \"Extra credit\".")) (li (p (b "Homework 6: ") "Complete Exercise 4.25. Return a file " (em "hw6.jl") ".") (p (em "Extra credit: ") "+2/10 if you have the fastest code.")) (li (p (b "Homework 7: ") "Complete Exercise 5.13 Return a file " (em "hw7.jl") ".") (p (em "Extra credit: ") "+2/10 if you have the fastest code.")) (li (p (b "Homework 8: ") "Complete Exercise 6.1. Return your work in a file called " (em "hw8.ipynb") ". Dataset: " (a (@ (href "/static/teaching/numerical_analysis/misc/data_hw7.tar.gz")) "[data.tar.gz]")) (p (em "Extra credit: ") "+1/10 if you complete the part that says 'extra credit'.")) ) (p "At any time during the course, you can earn bonus points for the next assignment, with a maximum of +2 out of 10, if you spot typos in the lecture notes (only in the sections explicitly listed): +0.4 for an English or formatting typo, and +1 for a mathematical error. " "To communicate that you found a typo, just send me an email with [TYPO] in the subject line.") (h2 "Midterms and final exams") (ul (@ (id codes)) ,(link-files "Spring 2022: Midterm" "midterm/build/main" #:course "na_spring" #:pdf #t #:last-modified #t) ,(link-files "Spring 2022: Final exam" "endterm/build/main" #:course "na_spring" #:pdf #t #:last-modified #t) ,(link-files "Spring 2022: Final exam with solutions" "endterm/build/main_solutions" #:course "na_fall" #:pdf #t #:last-modified #t) ,(link-files "Fall 2022: Midterm" "midterm/build/main_questions" #:course "na_fall" #:pdf #t #:last-modified #t) ,(link-files "Fall 2022: Midterm with solutions" "midterm/build/main" #:course "na_fall" #:pdf #t #:last-modified #t) ,(link-files "Fall 2022: Final exam" "endterm/build/main_fall_711" #:course "na_fall" #:pdf #t #:last-modified #t) ) (h2 "Detailed log (adjusted a posteriori)") (h3 "Week 1") (ul (@ (id "codes")) (li (b "Mon 5 Sep (lecture x2)") ": Introduction and Sections 1.1 to 1.3. " (a (@ (href "https://nyu.zoom.us/rec/share/W3WpBG5BpiVq96E7KhHuLUZdpS44es2_Kl8alPpXS1KtHQfDiSEZZ0rR3NKcLP_p.mH1bQymKzwHqvwxo")) "[Recording]")) (li (b "Wed 7 Sep (recitation)") ": Introduction to Julia in Appendix B. " (a (@ (href "https://nyu.zoom.us/rec/share/mQzpB-mwd9UtWe3edwSzg6wZwgnspCKkkFJedUGqTn-WGWgg08LWq5NVGoTkULyj.A0rHKq-WAvT3DnYD?startTime=1662558645000")) "[Recording]"))) (h3 "Week 2") (ul (@ (id "codes")) (li (b "Mon 12 Sep (lecture)") ": Beginning of Chapter 2. " (a (@ (href "https://nyu.zoom.us/rec/share/nDxLOY2sj2oPXzP5wEQ_HdoZ6WSZYFkBISDSahjleD5c87nnq57ATz_AlhmgW5Nq.8oTV0amVjsWf0R2l?startTime=1662988252000")) "[Recording]")) (li (b "Mon 12 Sep (recitation)") ": Exercises 1.6, 1.20, 1.22 and 1.24.") (li (b "Wed 14 Sep (lecture)") ": Section 2.1: Newton interpolation and interpolation error. " (a (@ (href "https://nyu.zoom.us/rec/share/VAzu4IhJcVh0uxKDBdsguqy64nceXJyZIotvyncCIEhpj0TtlVxSmL1tXLkqVEO5.JgH2vg7LR3VsCCSU")) "[Recording]"))) (h3 "Week 3") (ul (@ (id "codes")) (li (b "Mon 19 Sep (lecture)") ": Interpolation error and Chebyshev polynomials. " (a (@ (href "https://nyu.zoom.us/rec/share/afmaZ6rfI6-0Ju5VTnanJcgehnwblh8XAQnyGlnBF9_u55vhjXFlEd331gDXoZ9m.zFOWPsBXgJeJDs0d")) "[Recording]")) (li (b "Wed 21 Sep (lecture)") ": Hermite interpolation and approximation. " (a (@ (href "https://nyu.zoom.us/rec/share/eE0lhbkSwEboISvWf5nZA9D514Ej881zAZJ0OVc13jX3rD6d-GcrYZt7tJ5wk7oJ.RnPsBZWulOsCk_-D")) "[Recording]")) (li (b "Wed 21 Sep (recitation)") ": Exercises 2.1, 2.2, 2.6, 2.7 and C.5.") (li (b "Fri 23 Sep (lecture)") ": Section 2.2.1, approximation of data points. " (a (@ (href "https://nyu.zoom.us/rec/share/irULrEXuyBSPC5ylDSZjln7iGuZ4qGmTWg3YGCc87SCOdCNLUksmKUhbtHIhYAuy.HDltcyaLnt_9Xu58?startTime=1663938178000")) "[Recording]")) (li (b "Fri 23 Sep (recitation)") ": Exercises 2.8, 2.11 and 2.13.")) (h3 "Week 4") (ul (@ (id "codes")) (li (b "Mon 26 Sep (lecture)") ": End of Chapter 2 and beginning of Chapter 3. " (a (@ (href "https://nyu.zoom.us/rec/share/IRI_s_AGBMSyLd4dU6TuaxbIHUQuW35cyip55xuflep-DWw_SVle5j7WNBX5MDX3.7c8qzbN1fDZ8EmTe?startTime=1664197907000")) "[Recording]")) (li (b "Mon 26 Sep (recitation)") ": Exercise 2.14.") (li (b "Wed 28 Sep (lecture)") ": Error estimates in chapter 3. " (a (@ (href "https://nyu.zoom.us/rec/share/xefZ3T_yqF48-7Mcl934O8FvZ62A_Ha6VjEswQwSIvWXnuiUh5Bu8wGAcKbXFs-2.uEtJThJ-SRZblkMW?startTime=1664370622000")) "[Recording]"))) (h3 "Week 5") (ul (@ (id "codes")) (li (b "Mon 3 Oct (lecture)") ": Richardson extrapolation. " (a (@ (href "https://nyu.zoom.us/rec/share/hGuxMbt48ZuY7jqXH9iD8eoalriBIvYZ_gWjWDbdUV6v3LO6_Y59W84HmGYrNNgi.SEmhbxoPuCyo-vZo?startTime=1664802147000")) "[Recording]")) (li (b "Mon 3 Oct (recitation)") ": Exercises from Chapter 3.") (li (b "Wed 5 Oct (lecture)") ": End of Chapter 3: Gaussian quadrature. " (a (@ (href "https://nyu.zoom.us/rec/share/JrnBbdcM1654jLaYHECxGmEvTGPeafN75A57gt7X1zHND_IGpF7YT-yS0bkNhF2c.V0dgN07O5Q9qf4cG?startTime=1664975083000")) "[Recording]"))) (h3 "Week 6") (ul (@ (id "codes")) (li (b "Mon 10 Oct (lecture)") ": Numerical integration using the Monte Carlo method. " (a (@ (href "https://nyu.zoom.us/rec/share/pKoJueio-F80SKm3A21uP3pykAeY-dR9X45lA5xAKrx7J_xiVHEbZaEUhb0fjmud.UeJC5y-ZaESB3cOf")) "[Recording]")) (li (b "Wed 12 Oct (lecture)") ": Section 4.1, on conditioning for linear systems. " (a (@ (href "https://nyu.zoom.us/rec/share/pRsV6ybrauntU-5ggbJcNVPf8EcvFz9FPFkjWNq6RZw98C4CCycCkayjom4-auCP.VpyKG4e_hV4idB7w")) "[Recording]")) (li (b "Wed 12 Oct (recitation)") ": Exercises from Chapter 3")) (h3 "Week 7") (ul (@ (id "codes")) (li (b "Mon 17 Oct (lecture)") ": Conditioning and direct methods for linear systems. " (a (@ (href "https://nyu.zoom.us/rec/share/yRk4djAibU2MW41OzGsLI3WHUEnwUFkvA8eBMubPuKM1pC1ySmgYLXE2FZG90Sw_.24rxdIEl7MlahZqj")) "[Recording]")) (li (b "Mon 17 Oct (recitation)") ": Exercise in Chapter 4: vector and matrix norms.") (li (b "Wed 19 Oct (lecture)") ": End of Section 4.2 " (a (@ (href "https://nyu.zoom.us/rec/share/3aadsWqR8BFudodjSRPTf079-r9VitZMn7lpsxMhxia8FM5kL8b9P5l4oyZXKMmA.VIe255Sc7EWAS7xi")) "[Recording]"))) (h3 "Week 8") (ul (@ (id "codes")) (li (b "Mon 24 Oct (lecture)") ": Midterm.") (li (b "Wed 26 Oct (lecture)") ": Beginning of Section 4.3 " (a (@ (href "https://nyu.zoom.us/rec/share/SxVi9gCoxkqmxwoQsTul4fKi2XGPD__WuLyxt6yUxiozNpUuPjgUXY2IMsHAVsNE.cStUDrZG94nOoJQ0")) "[Recording]"))) (h3 "Week 9") (ul (@ (id "codes")) (li (b "Wed 2 Nov (lecture)") ": Section 4.3, convergence of basic iterative metods. " (a (@ (href "https://nyu.zoom.us/rec/share/kcLAx2ud4bzPq8WCOKQiayxcPDdRfhSGSaW-Pwm8bz6cYi7dORfRyy7nXsFBw50b.b8DtcYWT9-7nfbc3")) "[Recording]"))) (h3 "Week 10") (ul (@ (id "codes")) (li (b "Mon 7 Nov (lecture)") ": Section 4.3, convergence of Jacobi and Gauss-Seidel. " (a (@ (href "https://nyu.zoom.us/rec/share/P2OWzVagzpZIQPwOSI_ibkd-mu4Oi0Hna3Q0bZC7syA2kJ0IWtQIepGqQ-0_qjSL.JWu_jXZukgcaBMKX")) "[Recording]")) (li (b "Mon 7 Nov (recitation)") ": Exercises 4.12, 4.13, 4.14, 4.15, 4.16.") (li (b "Wed 9 Nov (lecture)") ": Section 4.3, introduction to gradient methods. " (a (@ (href "https://nyu.zoom.us/rec/share/wbIkMXrTVXQSw9Q-cw8nw1E2ElrRypS2wLLoUEwXi4p6VJoRlsQW88Bboe6Sxt8z.f6EGu3QRRrhb7tFC")) "[Recording]"))) (h3 "Week 11") (ul (@ (id "codes")) (li (b "Mon 14 Nov (lecture)") ": End of Chapter 4 and beginning of Chapter 5. " (a (@ (href "https://nyu.zoom.us/rec/share/MybjqBipq5FKx0uT08VAVVfOF4bMfl2-A597S7HxfC49E-X2aBRt8o3E_MIMSUFu.23buH2CrcwEhfqsO")) "[Recording]")) (li (b "Mon 16 Nov (recitation)") ": Exercises 4.18, 4.27, 4.28, 4.20.") (li (b "Wed 16 Nov (lecture)") ": Fixed point methods " (a (@ (href "https://nyu.zoom.us/rec/share/_LG5EDBt17Pq9YVr1MHvJkKpWc3TevULwuKBYDcIoTX7zNrA7nqXiEaJBTEFfVg2.5CQQIt-QYpjywdgR")) "[Recording]"))) (h3 "Week 11") (ul (@ (id "codes")) (li (b "Mon 21 Nov (lecture)") ": Convergence results for fixed-point methods. " (a (@ (href "https://nyu.zoom.us/rec/share/H5E2qdR3MTC3y3zegvgT4M9DIDP92aWFX-xIVsMJ6dgQ8UAizTSAmp6X6-c8W-pY.K06KF-tpf3mHKA-w")) "[Recording]")) (li (b "Mon 21 Nov (recitation)") ": Exercises from Chapter 5.") (li (b "Wed 23 Nov (lecture)") ": Proof of quadratic convergence for Newton-Raphson. " (a (@ (href "https://nyu.zoom.us/rec/share/xP6zeEIy9itK707M9WJyx1jA5bX7kQqo83va_jyW5AOZnJ8RgoTp0luVpIijQ2Uf.q-2lZB88GzkE6Jko")) "[Recording]"))) (h3 "Week 13") (ul (@ (id "codes")) (li (b "Mon 28 Nov (lecture)") ": Beginning of Chapter 6: power iteration. " (a (@ (href "https://nyu.zoom.us/rec/share/_IGl8twJyk2aBrhidd3EFJYSyrfnDxAzi0B8WGX_0xU6fNnqDmMyjh2gkR0KwF5N.wFx_h3GCg60mvkfa")) "[Recording]")) (li (b "Wed 30 Nov (lecture)") ": Inverse and subspace iterations. " (a (@ (href "https://nyu.zoom.us/rec/share/1i3SP-H3J6MLQslO4pXB_8JqNfsjSbf12FWDk00ZS07z3lQFWqTOrNakq-Htb_bT.0wj7e3AjooJ1tqfz")) "[Recording]")) (li (b "Wed 30 Nov (recitation)") ": Exercises from Chapter 6.")) (h3 "Week 14") (ul (@ (id "codes")) (li (b "Mon 5 Dec (lecture)") ": End of Chapter 6. " (a (@ (href "https://nyu.zoom.us/rec/share/Eve8mp2Zs0aEn2ngNJA0e156vPzxscIHC7J1szX6V0U_slh3Cf4AalSEcM8vvxxL.IpcLxUmuzi9oH1SI")) "[Recording]")) (li (b "Mon 5 Dec (recitation)") ": Exercises from Chapter 6.") (li (b "Wed 7 Dec (lecture)") ": Revisions. " (a (@ (href "https://nyu.zoom.us/rec/share/wz3DqAje6civ3opmpc0g8y5D54nUSieOVqR93HWRTWUSRu3U52wl7rgr08hQd0Y-.0wKmXFVqNIDS200v")) "[Recording]"))) (h2 "Miscellaneous documents") (ul (@ (id misc)) ,(link-files "Animation: polynomial interpolation" "animations/interpolation" #:course "na_fall" #:html #t #:last-modified #f #:special #f) ,(link-files "Animation: polynomial interpolation for the cosine function" "animations/interpolation_cosine" #:course "na_fall" #:html #t #:last-modified #f #:special #f) ,(link-files "Animation: polynomial interpolation for the Runge function" "animations/interpolation_runge" #:course "na_fall" #:html #t #:last-modified #f #:special #f) ,(link-files "Calendar of Fall term 2022" "misc/calendar-fall" #:course "na_fall" #:pdf #t #:last-modified #f) ,(link-files "Official syllabus" "misc/syllabus-fall" #:course "na_fall" #:pdf #t #:last-modified #f) ,(link-files "Principles of academic integrity at NYU" "misc/integrity" #:course "na_fall" #:pdf #t #:last-modified #f) ) ) #:with-nav #f)) ;{{{1 webpage: teaching 2023-calcul-scientifique (define (teaching-page/2023-cs) (static-page "Calcul scientifique" `(main (img (@ (width "100%") (height "25%") (src ,(static-url "img/scientific_computing.jpg")))) (p "See " (a (@ (href "/teaching")) "here") " my previous teaching activities.") (h1 "Practical Scientific Computing") (p "This is the website for the course " (em "Practical Scientific Computing") " at Ecole des Ponts. Lecture notes and assignments will be posted here weekly.") (h2 "Practical information") (dl (dt (b "Lectures")) (dd "Friday from 13:30 to 16:15.") (dt (b "Assessment")) (dd "100% assignments + oral discussion.") (dt (b "Reference textbook")) (a (@ (href "https://link.springer.com/book/10.1007/b98885")) "https://link.springer.com/book/10.1007/b98885") ".") (h2 "Lecture notes") (ul (@ (id "codes")) ,(link-files "Lecture notes" "build/main" #:course "cs" #:pdf #t #:special #t) ,(link-files "Syllabus" "frontmatter/syllabus_enpc" #:course "cs" #:tex #t #:special #t) ,(link-files "Introduction" "mainmatter/introduction" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Chapter 1") ": Floating point arithmetic") "mainmatter/roundoff" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Chapter 2") ": Interpolation and approximation") "mainmatter/interpolation_approximation" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Chapter 3") ": Numerical integration") "mainmatter/numerical_integration" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Chapter 4") ": Solving linear equations") "mainmatter/linear_equations" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Chapter 5") ": Solving nonlinear equations") "mainmatter/nonlinear_equations" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Chapter 6") ": Calculating eigenvalues and eigenvectors") "mainmatter/eigenproblems" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Chapter 7") ": Numerical integration of differential equations") "mainmatter/odes" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Chapter 8") ": Numerical optimization") "mainmatter/optimization" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Appendix A") ": Linear algebra") "mainmatter/matrices" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Appendix B") ": Introduction to Julia") "mainmatter/julia" #:course "cs" #:tex #t #:special #f) ,(link-files `((b "Appendix C") ": Chebyshev polynomials") "mainmatter/chebyshev" #:course "cs" #:tex #t #:special #f) ,(link-files "Bibliography" "references" #:course "cs" #:bib #t #:special #t) ) (p "At any time during the course, you can earn bonus points for the next assignment, with a maximum of +2 out of 10, if you spot typos in the lecture notes (only in the sections explicitly listed): +0.4 for an English or formatting typo, and +1 for a mathematical error. " "To communicate that you found a typo, just send me an email with [TYPO] in the subject line.")) #:with-nav #f)) ; {{{1 deploy website (define site-directory "site") (system (string-append "rm -rf " site-directory)) (system (string-append "mkdir -p " site-directory)) (system (string-append "cp -r static " site-directory)) (for-each ; Write resource to output file (lambda (resource) (let* ((path (string-append site-directory "/" (car resource)))) (begin (system (string-append "mkdir -p " (dirname path))) (call-with-output-file path (lambda (output-port) (sxml->xml (cdr resource) output-port)))))) ; List of web resources (list (cons "index.html" (hello-page)) (cons "cv/index.html" (cv-page)) (cons "hello/index.html" (hello-page)) (cons "contact/index.html" (contact-page)) (cons "research/index.html" (research-page)) (cons "publications/index.html" (publications-page)) (cons "presentations/index.html" (presentations-page)) (cons "software/index.html" (git-page)) (cons "teaching/index.html" (teaching-page)) (cons "teaching/2020-csp/index.html" (teaching-page/2020-csp)) (cons "teaching/2022-spring-na/index.html" (teaching-page/2022-spring-na)) (cons "teaching/2022-fall-na/index.html" (teaching-page/2022-fall-na)) (cons "teaching/2023-cs/index.html" (teaching-page/2023-cs)) ) )