3340 Numerical Methods Introduction Goals and Expectations • Understand fundamentals of numerical methods • Experience in implementation (C++ and Matlab/Python) • My goals: 1) provide a set of fundamental numerical tools 2) provide practical experience implementing and using these tools 3) When you encounter a numerical problem – I want you to know how to find the best (fastest, most accurate, etc.) solution • This class is about: ̶ translating engineering mathematics into algorithms ̶ implementing algorithms with constraints imposed by digital computers • Grades should be predictable: rubrics are provided for all assignments Textbooks • Numerical Methods in Practice: A Programming Guide to Numerical Computing Using C and Python ̶ An open-access textbook written specifically for this class – available on the website https://stim.ee.uh.edu/education/ece-3340-numerical-methods/ Other Alternatives • R.W. Hamming, Numerical Methods for Scientists and Engineers ̶ Mathematical basis for numerical methods ̶ Short and precise explanations for different aspects of numerical methods ̶ ≈$14.00 on Amazon.com • W.H. Press, et al., Numerical Recipes: The Art of Scientific Computing ̶ Detailed discussions and code for more in-depth understanding of a given topic • • • • Advanced random number generation Evaluating complex functions (ex. Bessel and Hankel functions) Searching/Sorting Spectral Analysis, Fourier Transforms Prerequisites • MATH 3321 – Engineering Mathematics ̶ Linear Algebra, Calculus, and Differential Equations • ECE 3331 – Programming Applications in ECE ̶ C/C++ ̶ Matlab (you may also use Python) • See chapters 1 and 2 of the textbook as a refresher for the necessary mathematics and programming background Grading • Assignments ̶ 5% Homework – reflects material on exams ̶ 15% Mid-Term 1 – first exam, set expectations ̶ 25% Mid-Term 2 – comprehensive exam ̶ 25% Mid-Term 3 – comprehensive exam ̶ 30% Final Exam OR Programming Project – independent work Homework Assignments • 5% of your final grade – primarily practice for the exams • grade based on written homework ̶ taken from class lectures and textbook ̶ you may work together, but don’t hand in copied work ̶ I will review for completion and as a benchmark for class performance ̶ submission: Canvas, submit as PDF or image (cellphone photo is fine) • I will only review assigned homework, however there are other practice problems in the textbook ̶ please ask questions on Teams ̶ you may help classmates ̶ (be helpful – don’t just give out the answer, the exam won’t be identical) Exams • Exams are comprehensive – previous material is fair game ̶ 15%, 25%, 25%, 30% (or programming assignment) ̶ the first exam reflects my expectations and is before the final drop date • Exam questions rely on material from: ̶ homework assignments ̶ lectures ̶ reading material (textbook) ̶ programming questions Programming Project (Optional) • 30% of your grade – work independently • Code MUST compile on the department server: ̶ tuxedo.egr.e.uh.edu – request an ECC_Unix account at the ECC front desk ̶ I cannot effectively grade assignments that don’t compile, so test it • If your code doesn’t work, output what you DID complete ̶ the code must still compile ̶ comment everything – the more I know the more I can grade • Comment code – 1 comment / 2 lines of code, explain “why” not “what” • All programming assignments are tested for plagiarism and I am good at finding it Why numerical methods? • Implementation depends on requirements and constraints ̶ high-level applications can use Matlab, external libraries ̶ low-level applications are under pressure – memory, speed, architecture • Most low-level implementations are simple ̶ algorithms are well known ̶ implementation is still a challenge ̶ constrained by: architecture, memory, precision, speed, discretization errors • Examples of algorithms that are challenging for computers: ̶ subtraction ̶ evaluating non-polynomial functions (sine, cosine, 𝑒𝑒 𝑥𝑥 , logarithms) ̶ integration and differentiation ̶ optimization (finding function minima and maxima) Topics 1. Mathematics – notation that will help us communicate 2. Programming – translating from math to a computer (via C) 3. Discrete Math – theory for evaluating algorithms 4. Errors – how and where do computers make mistakes? 5. Numbers – how they are stored and manipulated in digital systems 6. Catastrophic Cancellation – yea, it can be pretty bad Exam 1 7. Solving Equations – (when you can’t solve them by hand) 8. Linear Systems – easy math that takes a long time Exam 2 Topics 9. matrix properties – more advanced matrix math 10. random numbers – probability and RNG 11. differentiation – calculus in computers 12. integration – more calculus in computers Exam 3 13. regression – building functions from samples 14. differential equations – bringing all the calculus together 15. Fourier transforms – projections and transformations Final Exam (or programming project) Resources • Website: http://stim.ee.uh.edu/education/ece-3340-numerical-methods/ • Teams forum – please ask questions: ̶ homework, textbook problems, and lecture slides ̶ exam questions AFTER the exams have been graded ̶ conceptual questions about programming assignments – DON’T post blocks of code ̶ messages can be sent to me privately via Teams • Lecture slides – PowerPoint slides will be available on Teams • Textbook – this is a work in progress, so let me know if anything is vague or could use better explanation Research Interests Immunohistochemistry Large Scale Microscopy 0.5mm 40μm 20µm 100µm High Performance Computing About Me • B.S. Computer Science – SWOSU (Oklahoma) • Ph.D. Computer Science – Texas A&M University • Beckman Fellowship – University of Illinois • Background ̶ Computer Graphics, Visualization ̶ Biomedical Imaging, Microscopy, Spectroscopy ̶ High-Performance Computing, GPU Computing • Personal ̶ video games, fencing