Numerical Computing with Julia

Programme Syllabus

Julia Workshop

Course Syllabus: Numerical Computing with Julia

Course Title: Numerical Computing with Julia

Course Description: This course introduces students to numerical computing using the Julia programming language. It covers the fundamentals of numerical methods and how they are implemented in Julia for solving real-world scientific and engineering problems. Students will learn to utilize Julia’s high-performance capabilities to handle large-scale numerical computations efficiently. The course includes both theoretical understanding and practical applications, ensuring students can effectively apply numerical methods to various problems.

Prerequisites:

  • Basic knowledge of calculus and linear algebra

  • Familiarity with programming concepts (experience with any programming language is beneficial)

Course Objectives:

  • Understand the core principles of numerical computing

  • Develop proficiency in using Julia for numerical methods

  • Implement and analyze numerical algorithms

  • Apply numerical techniques to solve scientific and engineering problems

  • Enhance skills in mathematical modeling and computational efficiency

Week 1: Introduction to Julia and Numerical Computing

  • Overview of Julia programming language

  • Basic syntax and operations in Julia

  • Introduction to numerical computing concepts

  • Importance and applications of numerical methods

Week 2: Numerical Linear Algebra

  • Solving systems of linear equations (direct and iterative methods)

  • Matrix factorizations (LU, QR, Cholesky)

  • Eigenvalues and eigenvectors

  • Implementing linear algebra algorithms in Julia

Week 3: Root-Finding Methods

  • Bisection method

  • Newton-Raphson method

  • Secant method

  • Implementing root-finding algorithms in Julia

Week 4: Interpolation and Extrapolation

  • Polynomial interpolation (Lagrange, Newton)

  • Spline interpolation

  • Extrapolation techniques

  • Implementing interpolation methods in Julia

Week 5: Numerical Differentiation and Integration

  • Finite difference methods

  • Numerical differentiation techniques

  • Trapezoidal and Simpson’s rule for integration

  • Implementing differentiation and integration algorithms in Julia

Week 6: Numerical Solutions of Ordinary Differential Equations (ODEs)

  • Initial value problems (IVPs)

  • Euler’s method and improved Euler’s method

  • Runge-Kutta methods

  • Implementing ODE solvers in Julia

Week 7: Numerical Solutions of Partial Differential Equations (PDEs)

  • Classification of PDEs

  • Finite difference methods for PDEs

  • Solving heat and wave equations

  • Implementing PDE solvers in Julia

Week 8: Optimization Methods

  • Unconstrained optimization (gradient descent, Newton’s method)

  • Constrained optimization (linear and quadratic programming)

  • Implementing optimization algorithms in Julia

  • Practical applications and case studies

Week 9: Monte Carlo Methods and Simulations

  • Introduction to Monte Carlo methods

  • Random sampling techniques

  • Monte Carlo integration and simulations

  • Implementing Monte Carlo methods in Julia

Week 10: High-Performance Computing with Julia

  • Parallel and distributed computing

  • Performance optimization techniques

  • Using Julia packages for high-performance computing

  • Practical examples and projects

Week 11: Final Project

  • Students will work on a comprehensive project

  • Apply the concepts and techniques learned throughout the course

  • Present findings and insights using Julia

Week 12: Review and Exam Preparation

  • Review of key concepts

  • Practice problems and Q&A

  • Exam preparation strategies

Week 13: Final Exam

  • Comprehensive exam covering the course material

Assessment:

  • Weekly assignments and quizzes

  • Midterm project

  • Final project presentation

  • Final exam


Textbooks and Resources:

  • “Think Julia: How to Think Like a Computer Scientist” by Ben Lauwens and Allen Downey

  • “Numerical Analysis” by Richard L. Burden and J. Douglas Faires

  • Online documentation and resources from the Julia Language website

  • Additional readings and resources provided during the course

Instructor Contact:

  • Office hours: [Specify time]

  • Email: [Instructor’s email]

  • Course website: [Provide link]

This syllabus provides a detailed structure for a university course on numerical computing with Julia, ensuring a thorough understanding of numerical methods and their applications.