Course Paperwork
Homework
Assignments
 Homework 1 — Dartboard
 Homework 2 — Derivations
 Homework 3 — Transfer Matrix Method
 Homework 4 — star() and cascn()
 Homework 5 — TMM Parameter Sweeps
 Homework 6 — calcpml2d() and yeeder()
 Homework 7 — Build Grating for 2D FDFD
 Homework 8 — Implement 2D FDFD
 Homework 9 — FDFD Parameter Sweeps
 Homework 10 — convmat() and PWEM
 Homework 11 — RCWA Implementation
Help
Final Project
Course Topics
Topic 0  Course Introduction
Topic 1  Preliminary Topics
Lectures & Notes
 (PDF) (Video) Lecture 1a – Maxwell’s Equations
 (PDF) (Video) Lecture 1b — Electromagnetic Waves
 (PDF) (Video) Lecture 1c — Wave Parameters
 (PDF) (Video) Lecture 1d — Dispersion Relation
 (PDF) (Video) Lecture 1d — EM Wave Polarization
 (PDF) (Video) Lecture 1e – Preliminary Topics in Computational Electromagnetics
Summaries
Supplemental Information
Topic 2  Transfer Matrix Method (TMM)
Lectures & Notes
 Transfer Matrix Method
 (PDF) (Video) Lecture 2a – OneDimensional Structures in Electromagnetics
 (PDF) (Video) Lecture 2b – Formulation of 4×4 Matrix Equation
 (PDF) (Video) Lecture 2c – Transfer Matrices
 (PDF) (Video) Lecture 2d – Formulation of 2×2 Matrix Wave Equation
 (PDF) (Video) – Lecture 2e – Scattering Matrices for SemiAnalytical Methods
 (PDF) (Video) – Lecture 2f – Advanced Networking Concepts
 (PDF) (Video) Lecture 2g – Transfer Matrix Method Using Scattering Matrices
 (PDF) (Video) Lecture 2h – Parameter Sweeps
 Supplemental Information
 (PDF) Lecture 2i – Transfer Matrix Method Extras
MATLAB Implementation
 ($$$) Implementation of TMM in MATLAB
This series of videos types and describes every line of code in MATLAB to implement the transfer matrix method (TMM) as described above.
Summaries
Topic 3  Concepts for 2D and 3D Simulations
Lectures & Notes
 (PDF) (Video) Lecture 3a – Solid State Electromagnetics
 (PDF) (Video) Lecture 3b – Calculation Examples Of Periodic Structures
 (PDF) (Video) Lecture 3c – Concept of Diffraction From Gratings
 (PDF) (Video) Lecture 3d – The Grating Equation
 (PDF) (Video) Lecture 3e – The Plane Wave Spectrum
 (PDF) (Video) Lecture 3f – Perfectly Matched Layer
Animations from the Notes
 Diffraction Orders from Ruled Gratings – Normal Incidence
 Diffraction Orders from Ruled Gratings – Oblique Incidence
 Diffraction Orders from Ruled Gratings – Angle Sweep
 Diffraction Orders from Crossed Gratings – Normal Incidence
 Diffraction Orders from Crossed Gratings – Oblique Incidence
 Diffraction Orders from Crossed Gratings – Angle Sweep
Topic 4  FiniteDifference FrequencyDomain (FDFD)
Lectures & Notes
 The FiniteDifference Method
 Maxwell’s Equations on a Yee Grid
 EigenMode Analysis Using the FiniteDifference Method
 Scattering Simulations Using the FiniteDifference Method
 Supplemental Information
Implementation in MATLAB
 ($$$) Implementation of Basic 2D FDFD in MATLAB
See every line of MATLAB code typed and explained. By the end, you will have developed a fully functional 2D FDFD algorithm that simulates scattering from a cylinder. It will be easy to customize the code to simulate scattering from any object. The course includes linebyline explanation of CALCPML2D(), YEEDER2D() and the FDFD2D program.  ($$$) Implementation of FiniteDifference Analysis of Waveguides in MATLAB
See every line of MATLAB code typed and explained to perform rigorous analysis of waveguides. By the end, you will have developed a fully functional program that calculates hybrid modes in waveguides. It will be easy to customize the code to analyze any waveguide. The course includes linebyline explanation of YEEDER2D() and the finitedifference analysis program for both rigorous analysis and quasivectorial analysis.
Topic 5  Other Methods Based on Finite Differences
Lectures & Notes
 (PDF) (Video) Lecture 5a – FiniteDifference TimeDomain (FDTD)
 (PDF) (Video) Lecture 5b – Beam Propagation Method
Implementation in MATLAB
 ($$$) OneDimensional FDTD with MATLAB
Having trouble getting started? This is a complete online course intended for the complete beginner. It covers every detail of 1D FDTD in simple terms and with high quality visualizations. In addition, all of the code is presented and explained to implement the 1D FDTD method in MATLAB.  ($$$) TwoDimensional FDTD with MATLAB
Having trouble getting started? This is a followon to the prerequisite course 1DFDTD that is intended for the complete beginner. The course covers every detail of FDTD in simple terms and with high quality visualizations. In addition, all of the code is presented and explained to implement the FDTD method in MATLAB.  ($$$) Implementation of 1D FDTD in MATLAB
See every line of MATLAB code typed and explained. By the end, you will have developed a fully functional 1D FDTD simulation that calculates and displays reflectance and transmittance from a device and animates the field interacting with the device. This course only contains the codes and does not explain or derive the FDTD method.  ($$$) Implementation of Basic 2D FDTD with UPML
This course types and explains every line of code in MATLAB to implement a 2D FDTD algorithm that incorporates a UPML. The code is developed in six steps and includes graphical visualization of the fields being simulated.  ($$$) Simulating Periodic Structures Using 2D FDTD in MATLAB
This course builds on the previous course to simulate periodic structures. A diffraction grating is used as the device example and the course describes how to calculate steadystate fields, calculate diffraction efficiencies, and reflectance and transmittance. The course ends by showing how to postprocess the data and display the results in a professional plot.  ($$$) Implementation of Simple FiniteDifference Analysis of Transmission Lines in MATLAB
See every line of MATLAB code typed and explained to analyze transmission lines. By the end, you will have developed a fully functional program that that can analyze both balanced and unbalanced transmission lines. The course includes programming TLDER() and develops to different codes to analyze a microstrip transmission line (unbalanced line) and a differential pair (balanced line).
Topic 6  Plane Wave Expansion Method (PWEM)
Lectures & Notes
 Maxwell’s Equations in Fourier Space
 Plane Wave Expansion Method
 Supplemental Information
 (PDF) Lecture 6e – Plane Wave Expansion Method Extras
Implementation in MATLAB
 ($$$) Implementation of 2D PWEM for band calculation in MATLAB
This series of videos types and explains every line of code in MATLAB to implement the 2D plane wave expansion method as described above. The bands for a hexagonal lattice are calculated and then displayed in a professional plot from MATLAB.  ($$$) Implementation of 3D PWEM for band calculation in MATLAB
This course contains lectures and coding sessions to implement a fully three dimensional plane wave expansion method in MATLAB. See every line of code in MATLAB typed and explained including calculation of the bands and displaying them in a professional plot.
Topic 7  Rigorous CoupledWave Analysis (RCWA)
Lectures & Notes
 Rigorous CoupledWave Analysis (RCWA)
 Supplemental Information
Implementation in MATLAB
 ($$$) Implementation of 3D RCWA in MATLAB
This course contains lectures and coding sessions to implement a fully threedimensional rigorous coupledwave analysis in MATLAB. The code can handle any number of layers and oblique symmetry such as hexagonal. See every line of code typed and explained.
Topic 8  Other Slicing and SemiAnalytical Methods
Lectures & Notes
MATLAB Implementation
 ($$$) Implementation of 3D Method of Lines in MATLAB
See every line of code typed and explained to implement a fully functional 3D method of lines in MATLAB.
Topic 9  Variational Methods
Topic 10  Other Numerical Methods
Resources
Animations and Visualizations
 Animated Visualization of a Grating Vector
 Stereo image of a 3D Yee cell. Adjust the image size until it is just under 10 cm wide.
 Animation for justification of spacer regions before the PML
 Animation of construction of a band diagram for a 3D lattice
 Animation of construction of a band diagram for a 2D lattice
 Animation of construction of a full band diagram for a 2D lattice
MATLAB Resources
 See MATLAB section in Computational Methods in EE
 Download .zip file of MATLAB codes


 test_star.p — In Homework #5, you are required to write the function star() which combines two scattering matrices. The test_star.p file is a MATLAB program that tests and verifies your star() function to ensure that all features are working properly. See Homework #4 for details.
 test_cascn.p — In Homework #5, you are required to write the function cascn() which cascades an arbitary number of scattering matrices. The test_cascn.p file is a MATLAB program that tests and verifies your cascn() function to ensure that all features are working properly. See Homework #4 for details.
 test_yeeder.p — In Homework #6, you are required to write the function yeeder() which builds the derivative matrices. The test_yeeder.p file is a MATLAB program that tests and verifies your yeeder() function to ensure that all features are working properly. See Homework #5 for details.
 little_yeeder.p — This function works just like yeeder() from Homework #6 to construct derivative matrices, but limits the size of the matrices can be be constructed. It is intended only to help you troubleshoot your yeeder() function by providing the correct matrices. See Homework #6 for details on yeeder().
 test_calcpml2d.p — In Homework #6, you are required to write the function calcpml2d() which calculates the PML functions sx and sy. The test_calcpml2d.p file is a MATLAB program that tests and verifies your calcpml2d() function to ensure that all features are working properly. See Homework #6 for details.
 test_convmat.p — In Homework #8, you are required to write the function convmat() which constructs convolution matrices. The test_convmat.p file is a MATLAB program that tests and verifies your convmat() function to ensure that all features are working properly. See Homework #8 for details.


Note: The above items are protected function files and have a “.p” extension. They work just like “.m” files, but they cannot be opened to view the code inside them.