# Teaching

ECI 115: Computer Methods in Civil & Environmental Engineering

This course covers numerical methods and their application to civil engineering problems, including differentiation, integration, linear algebra, root finding, uncertainty and sensitivity analysis, and ordinary and partial differential equations. The theory behind each method will be introduced, including pros and cons regarding the tradeoff between accuracy and runtime. Python implementations will be demonstrated for practical problems. [Jupyter Notebooks]

Topics: Intro to Scientific Python • Numerical vs. Analytical Models • Numerical Error, Differentiation • Integration: Newton-Cotes • Integration: Romberg, Adaptive, Gauss • Linear Systems • Matrix Inverse, Iterative Methods • Root finding: Bracketing Methods • Root finding: Open Methods • Optimization • ODEs: Runge-Kutta Methods • Second-Order Equations and Systems • Uncertainty Analysis • Parameter Estimation, Least Squares • Sensitivity Analysis • Boundary Value and Eigenvalue Problems • PDEs: Laplace Equation (Elliptic) • PDEs: Diffusion Equation (Parabolic) • PDEs: Wave Equation (Hyperbolic)

ECI 273: Water Resources Systems Engineering

This course introduces water resources planning and management from a systems engineering perspective, with a focus on simulation and optimization methods. Application areas include reservoir operation, environmental flow alteration, hydropower, and flood control. Emphasis will be given to stochastic simulation, multi-objective decision support, and climate change adaptation. [Jupyter Notebooks]

Topics: Data sources, reservoir simulation • Capacity sizing; sequent peak method • Storage-reliability-yield relationships • Environmental flow management • Hydropower, water-energy demands • Floods and droughts, stats review • Monte Carlo, synthetic streamflow • Monthly and multi-site models • Linear & non-linear programming • Reservoir control • Limited foresight; multi-reservoir control • Operating policy optimization, EAs • Multi-objective methods I • Multi-objective methods II • Climate vulnerability & adaptation • Sensitivity analysis

ECI 263: Evolutionary Algorithms  – offered irregularly

Evolutionary algorithms are used in engineering applications to design systems and policies with objective functions that are noisy, discontinuous, or multimodal. This course covers general approaches to designing and testing optimization methods using principles of random search, including genetic algorithms, evolution strategies, and their modern counterparts. Emphasis given to multi-objective methods and their role in engineering decision support. [Python examples]

Topics: Gradient descent • Random search, hill climbing • Simulated annealing (TSP) • Evolution strategies (NLP) • Differential evolution • Genetic algorithms (MaxSAT) • Genetic programming  • Model calibration • Multi-objective methods: Pareto dominance • Multi-objective methods: challenges • Multi-objective: performance measures • Convergence speed, scalability • Statistical tests • Response surface methods