- Python Programming Language - Week 1
- Numpy: 100 exercises in two teams subdivided in subteams
- Scipy and Sympy:
- Homework exercises
- HW1: Preliminaries - Week 2 and Week 3
- Recap/Intro of Prerequisites Part (1/3)
- Recap/Intro of Prerequisites Part (2/3)
- Recap/Intro of Prerequisites Part (3/3);
- HW2: Poisson-Boltzmann Equation (scalar equation)- Week 4 and Week 5
- Solving Non-Linear Problems: initial guess, Jacobian, solver call, solver performance;
- Solving the Poisson-Boltzmann Equation
- Solution by TA A. Bharade (in progress)
- HW3: Reaction-Diffusion Systems (coupled system of equations) - Week 6 and Week 7
- Time Integration of Initial Value Problems
- Solving Fisher as Reaction-Diffusion Systems in Pursuit of Turing Patterns
- Solving Brusselator as Reaction-Diffusion Systems in Pursuit of Turing Patterns
- HW4: Week 10 and Week 11
- HW5: Week 11 and Week 12
- Applied Transport Phenomena: heat transfer in industrial furnaces in collaboration with Celsian BV Eindhoven
- HW6: Week 13 and Week 14
- Machine Learning Assignment and imagine recognition for industrial furnaces in Collaboration with Danieli-Corus in Ijmuiden;
- Visit to Shell Pernis Week 15
- 6 ECTS in Q1 and Q2 of 2022 - 2023;
- 4 hours per week;
- more supervision/help/support in Q1; less so in Q2;
Mathematical modeling and numerical simulation techniques are indispensable to address challenges in chemical engineering. These challenges include the combustion of hydro-carbon fuels in industry, irrigation in sustainable agriculture and the deployment of new instruments and materials in medicine. This course builds on two pilars. The first pilar encompasses tools related to solving partial differential equations numerically. These tools include methods for solving ordinary differential equations, non-linear and linear systems. The second pilar encompasses tools used to extract meaningful information from large collections of data. This data includes sound, image and video recordings resulting from either numerical simulations or experimental campaigns. Tools for data handling include methods for computing integrals, derivatives, trends, compression and frequency content. This course is subdivided into three compartments. In the first and second compartment, the first and second pilar are discussed seperately. The third compartment, the two pillars are combined using methods from calibration, optimization and assimilation to arrive at predictive models in advanced chemical engineering applications.
The course divides the learning activities in three consequitive steps; 1/ allow students to work in group (or individually) on the assignments; 2/ facillitate in-classroom discussion/feedback/peer-review on the assignment (how to ask for feedback in such away that more reserved students are genuinely heard?); 3/ give lectures on-demand to after receiving input on the assignments;
20 percent of the grade on each of the six homework assignments; give 10 percent of the grade for free; take 10 percent of the grade back in case of poor participation (absence, obstructive behavior) in the course; reward above average participation in the course (giving lectures, moderating group discussions, tutoring fellow students, sharing sample code, seeking and sharing documentation, providing alternative pointers or examples) by adding 10 percent of the grade;
80 percent of the grade on each of the six homework assignments; completion of the assignment; individual grade on first homework assignment; grade used as input for group formation; assessment per group of four (4) students for last five assignments; group grade on the last five homework assignments;
how to formulate?
- establish house rules for the course;
- establish Q&A for the course;
- Vocareum for auto-grading of the assignments;
- notify TG that a book is no longer required; course will link to online resources instead;
- notify Osiris of wish to register two grades. The first (to two) grades is an intermediate grade (after 3 assignments at the end of Q1). The second (of two) grades is the final grade (after 6 assignments at the end of Q2). The first grade only serves for teaching staff to keep track of active participation in the course (thanks to Arno Hakket for providing this suggestion);
- notify campus-wide BrightSpace support about need for course pages and plug-in for Vocareum (see below);
- notify non-TU-Delft bachelor students about Python introduction to the course (see below);
- notify all students to enroll in course via BrightSpace;
- instruct students on how to navigate to Vocareum and Jupiter notebook for Python through Vocareum;
- need to monitor time and content spend homework assignment;
- in Q1 and Q2 spend 7 * 12 = 84 hours; in first semester spend 168 hours
- need to ask Michael for indication of homework in Miro board;
- 12 uren per week voor 7 weken
- 6 contacturen: 4 uren op dinsdag en 2 uren op donderdag; van de 6 contacturen kunnen 4 uren voor hoorcollege zijn (dus met de docent) en 2 uren voor werkcollege (dus met de TAs)
- 6 zelfstudieuren
- 12 uren per week voor 7 weken
- 4 contacturen: 2 uren op dinsdag en 2 uren op donderdag; van de 4 contacturen kunnen 2 uren voor hoorcollege zijn (dus met de docent) en 2 uren voor werkcollege (dus met de TAs)
- 8 zelfstudieuren
Beste Domenico,
Mijn collega's hebben het aanvragen van een nieuwe course, CH3133, voor volgend jaar via een TOPdesk call in gang gezet, echter vernamen wij van de Faculty Mandate dat dit vak in Osiris staat voor volgend jaar en dus automatisch aangemaakt zal worden. Als dit het geval is dan kunnen wij geen nieuwe course aanvragen, deze zou namelijk alleen maar verwarring opleveren wanneer er automatisch vanuit Osiris nieuwe courses worden aangemaakt voor volgend jaar, dan zou de course dubbel bestaan.
Om toegang te krijgen tot de course voor volgend jaar zult u dus Early Access moeten aanvragen, dit kan helaas pas vanaf 1 Juni. Wilt u wel al beginnen met het klaarzetten of uittesten van enkele dingen voor de cursus van volgend jaar dan raden wij u aan om een Sandbox te gebruiken. Als u nog geen Sandbox heeft kunt u deze bij ons aanvragen en als u wel een Sandbox heeft kunnen wij deze op uw verzoek re-setten.
Ik zal dus de lopende TOPdesk calls sluiten.
Excuses voor het ongemak, Vriendelijke groet, Willem Kerstjens
Divide students in the following three groups: TU bachelor, entirely strange to Python and in between group. Define seperate tasks for the three groups.
Introduction in Python programming in four parts. Used as reference for future parts of the course. (Encourage TU Delft bachelor students to give Part 4/4 a look?, how to provide opportunity to practice, how do other courses do so?)
- Part 1/4: introduction; operations of vectors and matrices; plotting;
- Part 2/4: functions, particular matrices, matrix-vector operations, linear Systems and more plotting;
- Part 3/4: conditional statements, loops, vectorization and function handles;
- Part 4/4: non-linear systems, ordinary differential equations, partial differential equations, data and optimization
- Harvard CS50 Week 6 Python Elementary
- Udemy Course
- Various level courses on Linked-Inn
- Gary Steele's Introduction to Python for Physicists
- Top 8 Python Podcasts You Should Be Listening to
- Python Tutorials (need to select appropriate parts)
Doubts on the use of Python in Computational Practicum for non-math/non-computer science master students
- Python + Numpy (patches deficiencies of Python) + Scipy (patches deficiencies of Numpy) creates confusion. Replace by Julia instead.
- When/how (in case at all) to raise awareness on how to code to obtain computational efficiency? How to discuss avoiding loops? How to vectorize code? What are good examples/practices/tools? What are pitfalls to avoid? How to explain the need for Numpy and Scipy (written in C++) for large scale scientific computing?
- When/how (in case at all) to address the two language problem, i.e., the fact that the bulk of the computations does not happen in Python, but rather in Fortran or C? (Examples are linear algebra, time stepping and FFT among many others). Do we teach Python initially to reveal the need to switch to non-Python later?
- When/how (in case at all) to address software development practises? When to introduce object-oriented programming?
- When/how (in case at all) to address parallel computing architectures and/or large data sets?
- Talk: Anthony Shaw - Why is Python slow?
- Talk: Sebastian Witowski - Writing faster Python
- Talk: 11 Tips And Tricks To Write Better Python Code
- Talk: 25 nooby Python habits you need to ditch
- High level overview: replace Python lists by Numpy vectors, matrices and operations on these objects.
- NumPy uses C-order indexing. That means that the last index usually represents the most rapidly changing memory location, unlike Fortran, where the first index represents the most rapidly changing location in memory. This difference represents a great potential for confusion.
- NumPy uses particular rules for broadcasting. Some documentation is here; more documentation is required;
- Numpy documentation hard to read. From the very start, users are confronted with other programming languages;
- NumPy: the absolute basics for beginners compulsory read for all student; copy and paste examples to own note;
- 100 numpy exercises
- NumPy: Fundamentals: array creation, indexing on ndarrys,broadcasting, unversal function basics;
- Numpy Tutorial: linear algebra on ndarrays;
- Real Python: Look Ma, No For-Loops: Array Programming With NumPy: text that complement the previous with other examples;
- Real Python: NumPy Tutorial: Your First Steps Into Data Science in Python: text with many small interesting examples and pointers to other resources;
- NumPy Reference: the glory details;
Assignment: Ask TU Delft students give demo, show how they solve problems and talks on topics such as ndarrays, broadcasting and ufunc
- What is Scipy: high level overview and many examples;
- scipy.linalg documentation from Users guide with examples similar exists for other components of scipy. What to choose?
- scipy-lectures.org include information on profiling;
- Hans Petter Langtangen, A Primer in Scientific Computing Using Python, PDF file, 900+ pages: Can we summarize? Can we find other examples?
- high level overview
- My tutorial my-py-pde-tutorial
- ChemPy and related tools
- Awesome Cheminformatics: list of Cheminformatics tools.
- How to guide students into the use of Jupyter notebooks?
- How to guide TA in the use of nb-grader? Refer them to instructional videos by Gary Steele?
Cloud computing. Support for online distribution notebooks and grade administration using Vocareum. TEAMS has a Vocareum channel. Gary Steele has instructional videos on the use of Vocareum.
- Parallel Computing and Scientific Machine Learning (SciML): Methods and Applications
- Material for the RWTH Julia workshop taking place on 17th and 18th February 2022
- Why We Use Julia, 10 Years Later
- Nouvelles Julia
See notebook.
See notebook Assignment on Reactors and Kinectics (dialogue with Ruud van Ommen)
Help in developing this assignment: Marc Caballero Megia (TA financed by EEMCS Faculty)
See notebook.
Our goald here are to:
- colloid: solve a model colloid transport in porous medium (blood flow through artery) taken from Tosco-Sehti-2009; we intend to use home-brewed code as well as py-pde;
- interfaces: solve a Cahn-Hilliard model to simulate phase-seperation as shown wiki on Cahn-Hilliard equations. We intend to do so using the Cahn-Hilliard module of py-pde as well as home-brewed code;
References:
Polymer physics, random walk, stochastic differential equations.
Build assignments around the use of . The example for methaner, e.g., is given here.
References:
Section 12/: HW9: Assignment on Inorganic Materials Engineering (Laurens Sibelles and Ferdinand Grozema)
- Short (4.11 min) video giving overview of molecular dynamics Valuable as introductory material, nice voice, good content;
- wiki page on molecular dynamics containing simulations
- Tutorial in implementing MD simulations in Python
- Molecular Dynamics using openmm.py good content;
- mdanalysis
- Molecular Dynamics using Molly.jl
- Molecular Dynamics simulations for protein-folding: nice stuff! ProtoSyn.jl code (the list of 14 examples are potentially interesting to look into) and Short (3.54 min) ProtoSyn video
- (Advanced) Poster Presentation Julia software development for MD simulation
Assignment on quantum thermodynamic simulations: interesting for computation on eigenvalues and eigenvectors
Assignment by Artur on machine learning. To be detailed later.
References
- Chapter in Python Book Introduction to Machine Learning
- wiki on neural network with valuable schematic
- wiki on artificial neural network with broad overview
- Video with history of neural networks
- Deep Learning for Molecules and Materials by Andrew D. White Very nice!
- RDKit is a collection of cheminformatics and machine-learning software written in C++ and Python
- DeepChem: DeepChem aims to provide a high quality open-source toolchain that democratizes the use of deep-learning in drug discovery, materials science, quantum chemistry, and biology. See also Deepchem Tutorial Examples;
- Using TensorFlow to model chemistry problems; well thought, well worked out example;
- Julia: Introduction to Scientific Programming and Machine Learning with Julia (SPMLJ)
- Julia: Doing small network scientific machine learning in Julia 5x faster than PyTorch
- Literature: Overview Paper on Physics informed Neural Networks The part on ODEs might be valuable to us.
- heat transfer in air by diffusion; heat transfer in air/lining by diffusion (first test to implement variable diffusion failed); non-linear diffusion is lining; add convection in air; add radiative heat transfer in the air;
- heat transfer in molten glass; thermal conductivity and density are temperature dependent leading to a non-linear problem;
- one and two spatial dimensions;
- finite difference method on uniform meshes;
- implementation in Python using py-pde library;
- TU Delft takes the lead;
Second Assignment: Handling Lab Experimental Data to Estimate Thermo-Physical Properties of Molten Glass
- in production on glass, formation of bubbles of air in the molten glass forms a challenges. The modeling of the formation of these bubbles requires a good estimate of the diffusion coefficient of species. These diffusion coefficients are typically known up to a high degree of uncertainty. Celsian therefore carries out lab test to be able to infer estimates of the diffusion coefficients from measurements;
- Gibs free energy mimization; an example of Gibbs free energy minimizer is volpatto/gibbs. Requires equation of state (parameters to estimate, pressure and temperature dependence) and experimental data; a hierarchy of models would be nice to have here;
- Celsian takes the lead;
- Zonal Models - Reduced order models - Specified desired objective - Formulate and solve optimization problem;
- TU Delft takes the lead;
Assignments will be deployed to students in November 2022;
- Linear solvers and sparse matrices;
- FFT of Heart Rate Signals;
- Growth Model;
- SVD decomposition applied to images tutorial;
- Matrix-Free implementation of the Laplacian for use inside non-linear iteration tutorial;
