1<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Teaching | Han Zhang</title> <meta name="author" content="Han Zhang"> <meta name="description" content="Han Zhang's personal webpage. "> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha256-DF7Zhf293AJxJNTmh5zhoYYIMs2oXitRfBjY+9L//AY=" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/mdb.min.css" integrity="sha256-jpjYvU3G3N6nrrBwXJoVEYI/0zw8htfFnhT9ljN3JJw=" crossorigin="anonymous"> <link defer rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-table.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css" integrity="sha256-mUZM63G8m73Mcidfrv5E+Y61y7a12O5mW4ezU3bxqW4=" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/academicons.min.css" integrity="sha256-i1+4qU2G2860dGGIOJscdC30s9beBXjFfzjWLjBRsBg=" crossorigin="anonymous"> <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jwarby/jekyll-pygments-themes@master/github.css" media="" id="highlight_theme_light"> <link rel="shortcut icon" href="data:image/svg+xml,<svg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22><text%20y=%22.9em%22%20font-size=%2290%22>%E2%9A%9B%EF%B8%8F</text></svg>"> <link rel="stylesheet" href="/assets/css/main.css"> <link rel="canonical" href="https://zhanghan-tc.github.io/teaching/"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jwarby/jekyll-pygments-themes@master/native.css" media="none" id="highlight_theme_dark">
1<script src="/assets/js/theme.js"></script>
1
1<script src="/assets/js/dark_mode.js"></script>
1 </head> <body class="fixed-top-nav "> <header> <nav id="navbar" class="navbar navbar-light navbar-expand-sm fixed-top"> <div class="container"> <a class="navbar-brand title font-weight-lighter" href="/"><span class="font-weight-bold">Han </span>Zhang</a> <button class="navbar-toggler collapsed ml-auto" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar top-bar"></span> <span class="icon-bar middle-bar"></span> <span class="icon-bar bottom-bar"></span> </button> <div class="collapse navbar-collapse text-right" id="navbarNav"> <ul class="navbar-nav ml-auto flex-nowrap"> <li class="nav-item "> <a class="nav-link" href="/">About</a> </li> <li class="nav-item "> <a class="nav-link" href="/publications/">Publications</a> </li> <li class="nav-item "> <a class="nav-link" href="/cv/">CV</a> </li> <li class="nav-item active"> <a class="nav-link" href="/teaching/">Teaching<span class="sr-only">(current)</span></a> </li> <li class="nav-item dropdown "> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Software & Data sets</a> <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown"> <a class="dropdown-item" href="/4D_radar_dataset/">4D radar SLAM data set</a> <a class="dropdown-item" href="/legged_wheel_dataset/">Legged-wheel robot SLAM data set</a> <div class="dropdown-divider"></div> </div> </li> <li class="toggle-container"> <button id="light-toggle" title="Change theme"> <i class="fas fa-moon"></i> <i class="fas fa-sun"></i> </button> </li> </ul> </div> </div> </nav> <progress id="progress" value="0"> <div class="progress-container"> <span class="progress-bar"></span> </div> </progress> </header> <div class="container mt-5"> <div class="post"> <header class="post-header"> <h1 class="post-title">Teaching</h1> <p class="post-description"></p> </header> <article> <h2 id="spring">Spring</h2> <ul> <li>Comprehensive robotics practice (Bachelor level course, Shanghai Municipal Key Course) <ul> <li>Compendium: <ul> <li>Year 2022: <a href="/assets/pdf/robotics_practice/2022/L1.pdf">[L1]</a>, <a href="/assets/pdf/robotics_practice/2022/L2.pdf">[L2]</a>, <a href="/assets/pdf/robotics_practice/2022/L3.pdf">[L3]</a>, <a href="/assets/pdf/robotics_practice/2022/L4.pdf">[L4]</a>, <a href="/assets/pdf/robotics_practice/2022/L5.pdf">[L5]</a>, <a href="/assets/pdf/robotics_practice/2022/L7.pdf">[L7]</a> </li> <li>Year 2023: <a href="/assets/pdf/robotics_practice/2023/L1.pdf">[L1]</a>, <a href="/assets/pdf/robotics_practice/2023/L2.pdf">[L2]</a>, <a href="/assets/pdf/robotics_practice/2023/Lecture%202.pptx">[L2 slides]</a>, <a href="/assets/pdf/robotics_practice/2023/L3.pdf">[L3]</a>, <a href="/assets/pdf/robotics_practice/2023/L4-KalmanFilter-Script.pptx">[L4 slides]</a>, <a href="/assets/pdf/robotics_practice/2023/L5.pptx">[L5]</a> </li> </ul> </li> </ul> </li> <li>Nonlinear Control Theory (PhD Level course) <ul> <li>Compendium (hand written) <ul> <li><a href="/assets/pdf/nonlinear_control_theory/L1.PDF">[L1 Introduction]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L2.PDF">[L2 Periodic solutions]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L3.PDF">[L3 Lyapunov stability]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L4.PDF">[L4 Lyapunov direct method I]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L5.PDF">[L5 Lyapunov direct method II]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L6.PDF">[L6 Stability of invariant set & model reduction]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L7.PDF">[L7 Controllability]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L1.PDF">[L8 Observability]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L9.PDF">[L9 Linearization of nonlinear systems I]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L10.PDF">[L10 Linearization of nonlinear systems II]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L11.PDF">[L11 Linearization of nonlinear systems III]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L12.PDF">
1[L12 Feedback stabilization I]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L13.PDF">[L13 Feedback stabilization II]</a></li> <li><a href="/assets/pdf/nonlinear_control_theory/L14.PDF">[L14 Feedback stabilization III]</a></li> </ul> </li> </ul> </li> </ul> <h2 id="autumn">Autumn</h2> <ul> <li>Scientific Writing, Integrity and Ethics <ul> <li>Conpendium: <ul> <li> <a href="/assets/pdf/scentific_writing/L1.pptx">[L1]</a>, <a href="/assets/pdf/scentific_writing/L2.pptx">[L2]</a>, <a href="/assets/pdf/scentific_writing/L3.pptx">[L3]</a>, <a href="/assets/pdf/scentific_writing/L4.pdf">[L4]</a> </li> </ul> </li> </ul> </li> </ul> </article> </div> </div> <footer class="fixed-bottom"> <div class="container mt-0"> © Copyright 2026 Han Zhang. Powered by <a href="https://jekyllrb.com/" target="_blank" rel="external nofollow noopener">Jekyll</a> with <a href="https://github.com/alshedivat/al-folio" rel="external nofollow noopener" target="_blank">al-folio</a> theme. Hosted by <a href="https://pages.github.com/" target="_blank" rel="external nofollow noopener">GitHub Pages</a>. Photos from <a href="https://unsplash.com" target="_blank" rel="external nofollow noopener">Unsplash</a>. </div> </footer>
1<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
1
1<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha256-fgLAgv7fyCGopR/gBNq2iW3ZKIdqIcyshnUULC4vex8=" crossorigin="anonymous"></script>
1
1<script src="https://cdn.jsdelivr.net/npm/[email protected]/js/mdb.min.js" integrity="sha256-NdbiivsvWt7VYCt6hYNT3h/th9vSTL4EDWeGs5SN3DA=" crossorigin="anonymous"></script>
1
1<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/masonry.pkgd.min.js" integrity="sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI=" crossorigin="anonymous"></script>
1
1<script defer src="https://cdn.jsdelivr.net/npm/imagesloaded@4/imagesloaded.pkgd.min.js"></script>
1
1<script defer src="/assets/js/masonry.js" type="text/javascript"></script>
1
1<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/medium-zoom.min.js" integrity="sha256-7PhEpEWEW0XXQ0k6kQrPKwuoIomz8R8IYyuU1Qew4P8=" crossorigin="anonymous"></script>
1
1<script defer src="/assets/js/zoom.js"></script>
1
1<script defer src="https://unpkg.com/[email protected]/dist/bootstrap-table.min.js"></script>
1
1<script src="/assets/js/no_defer.js"></script>
1
1<script defer src="/assets/js/common.js"></script>
1
1<script defer src="/assets/js/copy_code.js" type="text/javascript"></script>
1
1<script async src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>
1
1<script async src="https://badge.dimensions.ai/badge.js"></script>
1
1<script type="text/javascript">window.MathJax={tex:{tags:"ams"}};</script>
1
1<script defer type="text/javascript" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-mml-chtml.js"></script>
1
1<script defer src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
1
1<script type="text/javascript">function progressBarSetup(){"max"in document.createElement("progress")?(initializeProgressElement(),$(document).on("scroll",function(){progressBar.attr({value:getCurrentScrollPosition()})}),$(window).on("resize",initializeProgressElement)):(resizeProgressBar(),$(document).on("scroll",resizeProgressBar),$(window).on("resize",resizeProgressBar))}function getCurrentScrollPosition(){return $(window).scrollTop()}function initializeProgressElement(){let e=$("#navbar").outerHeight(!0);$("body").css({"padding-top":e}),$("progress-container").css({"padding-top":e}),progressBar.css({top:e}),progressBar.attr({max:getDistanceToScroll(),value:getCurrentScrollPosition()})}function getDistanceToScroll(){return $(document).height()-$(window).height()}function resizeProgressBar(){progressBar.css({width:getWidthPercentage()+"%"})}function getWidthPercentage(){return getCurrentScrollPosition()/getDistanceToScroll()*100}const progressBar=$("#progress");window.onload=function(){setTimeout(progressBarSetup,50)};</script>
1 </body> </html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.