Update (December 2020)

I am trying to solve a two-body problem in the American West. Here's my CV. Also check out:

### source view: teaching.php

``````
<?php

require_once sprintf( '%s/classes/Course.php', __DIR__ );

class OldCourse
{
private \$course_title;
private \$description;
private \$eval_mean;
private \$eval_median;
private \$has_notes;

function __construct ( \$course_title, \$description, \$eval_mean, \$eval_median, \$notes_addendum )
{
\$this->course_title   = \$course_title;
\$this->description    = \$description;
\$this->eval_mean      = \$eval_mean;
\$this->eval_median    = \$eval_median;

if ( is_array( \$this->description ) )
{
\$this->description = \$this->description[ rand( 1, count( \$this->description ) ) - 1 ];
}
}

function toHTML ( \$i )
{
\$c = \$i % 2 ? 'eee' : 'fff';

\$s = <<<EOH
<tr><td><strong>{\$this->course_title}</strong>
EOH;

if ( strlen( \$this->eval_mean ) > 0 )
{
if ( strlen( \$this->description ) > 0 )
{
\$s .= <<<EOH
<span style="display:block;font-size:9pt;margin-bottom:1ex;">Mean {\$this->eval_mean}; median {\$this->eval_median}
EOH;
}
else
{
\$s .= <<<EOH
<span style="display:block;font-size:9pt;">Mean {\$this->eval_mean}; median {\$this->eval_median}
EOH;
}

{
// \$s .= ' | <a href="/economics-notes">class notes</a>';
\$s .= ' | <span style="font-style:italic;">notes available</span>';
}

\$s .= '</span>';
}
{
// \$s .= '<span style="display:block;font-size:9pt;margin-bottom:1ex;"><a href="?economics-notes">class notes</a></span>';
\$s .= '<span style="display:block;font-size:9pt;font-style:italic;margin-bottom:1ex;">notes available</span>';
}

// gross but fast
{
}

\$s .= <<<EOH
EOH;

if ( strlen( \$this->description ) > 0 )
{
\$s .= <<<EOH
<a href="#" onclick="return showIt( this );">details</a>
EOH;
}

\$s .= '</td></tr>';

return \$s;
}
}

class Hobby
{
private \$description;
private \$name;
private \$type;
private \$url;

function __construct ( \$name, \$type, \$url, \$description )
{
\$this->description = \$description;
\$this->name        = \$name;
\$this->type        = \$type;
\$this->url         = \$url;
}

function toHTML ( \$i )
{
\$s = '<tr><td>';

\$type_letter = strtoupper( substr( \$this->type, 0, 1 ) );
\$type_color  = \$this->type == 'Android' ? '229966' : ( \$this->type == 'HTML' ? '536895' : '990000' );

\$s .= <<<EOH
<span style="color:#{\$type_color};cursor:default;font-weight:bold;margin-right:1ex;" title="{\$this->type}">{\$type_letter}</span>
EOH;

if ( \$this->url != null )
{
\$s .= <<<EOH
<a class="heavy" href="{\$this->url}" target="_blank">{\$this->name}</a>
EOH;
}
else
{
\$s .= <<<EOH
<strong>{\$this->name}</strong>
EOH;
}

\$s .= <<<EOH
<p style="display:none;">{\$this->description}</p></td><td class="more">[<a href="#" onclick="return showIt( this );">more</a>]</td></tr>
EOH;

return \$s;
}
}

require './classes/Page.php';
\$page = new Page();

<style type="text/css">
table
{
margin-bottom: 0px;
margin-left:   15px;
width:         550px;
}

td
{
}

td.more
{
position:       relative;
width:          6ex;
text-align:     center;
vertical-align: top;
}

td > p
{
margin-bottom: 0ex;
}

@media screen and (max-width: 600px)
{
table
{
width: initial;
}
}
</style>
EOH
);
<style type="text/css">
div#content_actual > ul, div#content_actual > ul ul
{
list-style-type: none;
}

div#content_actual > ul ul ul
{
margin-left: 1.75ex;
}

div#content_actual > ul li
{
margin-bottom: 2ex;
}

ul.course-notes p
{
margin-bottom: 0ex;
}

a.notes-title
{
display: block;
}

div.course-details
{
border-left:   1px solid #eee;
display:       none;
margin-bottom: 3.0ex;
margin-left:   0.5ex;
}

li.course p:last-of-type
{
margin-bottom: 0ex;
}

div#content_actual > ul li.course li:last-of-type
{
margin-bottom: 0ex;
}

span.course-name
{
font-weight: 400;
}

span.course-summary
{
display:   block;
font-size: 9pt;
}

span.show-details
{
float:        right;
}

span.semester-offered
{
font-weight: 400;
}
</style>
EOH
);
<script language="javascript">
var A = document.getElementsByClassName( 'show-details' );
for ( var i = 0; i < A.length; ++i )
{
A[i].firstChild.addEventListener( 'click', makeDetailsHandler( A[i].firstChild ) );
}
} );

function makeDetailsHandler ( a )
{
return function ( e )
{
let c           = a.parentNode;
c.style.display = 'none';
c               = c.parentNode;
c.getElementsByClassName( 'course-summary' )[0].style.display = 'none';
c.getElementsByClassName( 'course-details' )[0].style.display = 'block';

e.preventDefault && e.preventDefault();
e.cancel && e.cancel();
return false;
};
}
</script>
EOJ
);

\$courses = array(
new OldCourse( 'Economics 701: Analytical Methods for Mathematical Economics (UNC, Fall 2020)', '', '', '', false ),
new OldCourse( 'Economics 510H: Honors Advanced Microeconomic Theory (UNC, Fall 2020)', '', '', '', false ),
new OldCourse( 'Economics 701: Analytical Methods for Mathematical Economics (UNC, Fall 2019)', '', '', '', false ),
new OldCourse( 'Economics 510: Advanced Microeconomic Theory (UNC, Spring 2019)', '"Now I find myself in a class where I excitedly talk to my peers and family about topics from lecture over dinner about what I\'m learning, completely unprompted."', '4.20/5', '4.00/5', false ),
new OldCourse( 'Economics 890: Contract Theory (UNC, Spring 2019)', '', '4.50/5', '4.50/5', false ),
new OldCourse( 'Economics 701: Analytical Methods for Mathematical Economics (UNC, Fall 2018)', '', '', '', false ),
new OldCourse( 'Economics 510: Advanced Microeconomic Theory (UNC, Fall 2017)', '"He tried his best."', '3.90/5', '4.00/5', false ),
new OldCourse( 'Economics 890: Quantitative Techniques II (UNC, Fall 2017)', '', '', '', false ),
new OldCourse( 'Economics 510: Advanced Microeconomic Theory (UNC, Spring 2017)', '', '4.70/5', '5.00/5', false ),
new OldCourse( 'Economics 890: Quantitative Techniques II (UNC, Fall 2016)', '', '', '', false ),
new OldCourse( 'Economics 510: Advanced Microeconomic Theory (UNC, Fall 2015)', '', '', '', false ),
new OldCourse( 'Economics 890: Quantitative Techniques II (UNC, Fall 2015)', '', '', '', false ),
new OldCourse( 'Economics 97: The Economic Toolkit (UCLA, Summer 2013)', '', '', '', false ),
//new OldCourse( 'Economics 106D: Market Design (UCLA, Spring 2013)', '"One of the best econ TAs I\'ve had. I hope you become an econ professor somewhere awesome."<br /><br /><em>Ed. note: I asked for bonus points in my ratings. Absent extra credit, the mean was 8.82 and the median was 9.', '13.18', '12', true ),
new OldCourse( 'Economics 106D: Market Design (UCLA, Spring 2013)', '"One of the best econ TAs I\'ve had. I hope you become an econ professor somewhere awesome."', '8.82/9', '9.00/9', 'UCLA ECON 106D' ),
new OldCourse( 'Economics 41: Statistics for Economists (UCLA, Winter 2013)', array( '"You sir are a BEAST!"<br /><br /><img src="/blog_data/images/you_are_a_straight_gem.jpg" alt="I am a straight gem." width="300" /><br /><em>Ed. note: I happen to enjoy pepperoni pizza.</em>', '"Better teacher than any Econ 41 prof I\'ve seen (I\'ve seen 3)."<br /><br /><img src="/blog_data/images/you_are_a_straight_gem.jpg" alt="I am a straight gem." width="300" /><br /><em>Ed. note: I happen to enjoy pepperoni pizza.</em>' ), '8.60/9', '9.00/9', 'UCLA ECON 41' ),
new OldCourse( 'Economics 101: Microeconomic Theory (UCLA, Fall 2012)', '"[...] Hope Kyle will teach econ here as a professor soon."<br /><br /><img src="/blog_data/images/i_am_a_bomb.jpg" alt="I am a [bomb]" width="300" />', '8.65/9', '9.00/9', 'UCLA ECON 101' ),
new OldCourse( 'Economics 11: Microeconomic Theory (UCLA, Spring 2012)', '"Kyle balls out. He\'s the man. Best TA I\'ve ever had. Thanks, homie."<br /><br /><em>(sadly there was a mix-up in evaluations, and only half were returned)</em>', '8.67/9', '9.00/9', 'UCLA ECON 11' ),
new OldCourse( 'Economics 41: Statistics for Economists (UCLA, Winter 2012)', '"Phenomenal job. Honestly the most comprehensive TA I have ever had. You would make one of the best professors this school offers. Good luck and thank you for the time you put into your precision and care."', '8.51/9', '9.00/9', 'UCLA ECON 41' ),
new OldCourse( 'Economics 201A: Microeconomics (UCLA, Fall 2011)', '"Kyle is the best TA. He was always available and responsive, came prepared, and thoroughly answered questions."', '8.56/9', '9.00/9', 'UCLA ECON 201A' ),
new OldCourse( 'Economics M134A: Environmental Economics (UCLA, Summer 2011)', '', '', '', false ),
new OldCourse( 'Global Green Business Week (UCLA, Summer 2011)', 'Covered a motivation of and introduction to game theory for high school students, by way of demonstrating that other people\'s choices affect the choices we would like to make.', '', '', 'CIEBR' ),
new OldCourse( 'Economics 201C: Welfare Economics (UCLA, Spring 2011)', '', '8.37/9', '9.00/9', 'UCLA ECON 201C' ),
new OldCourse( 'Economics 101: Microeconomic Theory (UCLA, Winter 2011)', '"List of top 5 people I want to be: (1) Derek Jeter; (2) Johnny Depp; (3) Andy Roddick; (4) Michael Burry; (5) Kyle Woodward"', '8.23/9', '9.00/9', 'UCLA ECON 101' ),
new OldCourse( 'Economics 41: Statistics for Economists (UCLA, Fall 2010)', '"Kyle was really clear. He was effective, straightforward, and super helpful. He also gave us cookies, which in no way influenced my evaluation. Seriously, though, he was really good. Give him a raise, because he really works hard to make us learn."', '8.27/9', '9.00/9', 'UCLA ECON 41' ),
new OldCourse( 'Introduction to Computer Science (Phillips Academy Andover, Summer 2005)', 'A six-week course covering an introduction to C++ programming. Things went well until I forced recursion and pointers into the final week; I do believe my three charges are more than capable of writing competent programs.', '', '', false ),
new OldCourse( 'Algebra II (Phillips Academy Andover, Summer 2005)', 'TA\'d for a course with roughly twenty tenth-graders. Teaching this basic content did more to build my powers of explanation than any amount of training could have. I can still teach memorization of the quadratic formula by way of <em>Row, Row, Row Your Boat</em>.', '', '', false )
);

'UCLA ECON 11' => <<<EOA
EOA
,
'UCLA ECON 41' => <<<EOA
EOA
,
'UCLA ECON 101' => <<<EOA
<ul><li> <a href="/blog_data/pdfs/handout_micro_games.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 101 - Introduction');return true;" target="_top">Nitty gritty introduction to game theory</a> &mdash; dominance, Nash equilibrium, sequential games, and mixed strategies with an application to where <a href="http://www.its.caltech.edu/~shabnam/" target="_top">Shab</a> and I should go to dinner.</li>  <li> <a href="/blog_data/pdfs/handout_micro_extensive.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 101 - Extensive-form games');return true;" target="_top">Extensive-form games</a> &mdash; an extensive-form game with a light take on knowledge; should I grade problem sets or just give everyone a C?</li>  <li> <a href="/blog_data/pdfs/handout_micro_centipede_spne.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 101 - Centipede games');return true;" target="_top">Centipede games</a> &mdash; centipede games as an <em>introduction</em> to game theory (this quarter we started with SPNE); an illustration of a situation in which backward induction is irrelevant and how it breaks.</li>  <li> <a href="/blog_data/pdfs/handout_micro_msne_counting.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 101 - MSNE and counting');return true;" target="_top">Mixed-strategy Nash equilibrium</a> &mdash; why mixed-strategy Nash equilibrium is a necessary concept; how to find mixed-strategy equilibria; the relationship between mixed- and pure-strategy Nash equilibria in terms of the total number of equilibria.</li>  <li> <a href="/blog_data/pdfs/handout_micro_hotelling.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 101 - Hotelling');return true;" target="_top">Hotelling's game[s]</a> &mdash; an apology for a botched attempt to discuss Hotelling&#0039;s pricing game (which has no apparent Nash equilibrium, as Hotelling&#0039;s original paper discovered), followed by a simple coverage of Hotelling&#0039;s location game.</li>  <li> <a href="/blog_data/pdfs/handout_micro_discounting_repetition.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 101 - Discounting and repetition');return true;" target="_top">Discounting and repetition</a> &mdash; a brief discussion of the counterintuitive implications of the standard cops-and-robbers formulation; wherefore, future discounting; repeating the ultimatum game with alternating offers and passage of time; a simple recursive approach to Rubinstein bargaining.</li>  <li> <a href="/blog_data/pdfs/handout_micro_cournotstack.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 101 - Cournot/Stackelberg');return true;" target="_top">Cournot and Stackelberg competition</a> &mdash; examples of Cournot and Stackelberg competition models, with an extensive discussion of when the first mover wants to use its power to keep the second mover out of the market.</li>  <li> <a href="/blog_data/pdfs/handout_micro_competition.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 101 - Price discrimination');return true;" target="_top">Price discrimination and price competition</a> &mdash; price discrimination, club cards, and a nonstandard price competition setup to illustrate how competitive equilibrium has explicit strategic implications.</li>  <li> <a href="/blog_data/pdfs/handout_micro_equilibrium.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 101 - General equilibrium');return true;" target="_top">General equilibrium</a> &mdash; the production possibility frontier, an exchange economy, and a general equilibrium problem with a corner-case production function which is linear in both capital and labor.</li></ul>
EOA
,
'UCLA ECON 106D' => <<<EOA
<ul><li> <a href="/blog_data/pdfs/handout_micro_revenue_equivalence.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 106D - Revenue equivalence');return true;" target="_top">Uses of revenue equivalence</a> &mdash; solving an all-pay auction without the revelation principle, using revenue equivalence to compute strategies, order statistics and their applications.</li></ul>
EOA
,
'UCLA ECON 201A' => <<<EOA
<p>I had a concussion during this quarter and most of my notes are not very good. What follows is the one set that is worth anything, and it only on a practice-problem basis.</p>
<ul><li> <a href="/blog_data/pdfs/handout_micro_production_assets.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 201A - Production, assets, and insurance');return true;" target="_top">Production, assets, and insurance</a> &mdash; a definitional approach to production; &#8220;baby asset-pricing</tag>&#8221;; a handful of very simple forms of insurance and what they imply about insurer profits.</li></ul>
EOA
,
'UCLA ECON 201C' => <<<EOA
<p>Many of these notes refer to <a href="http://essentialmicroeconomics.com/" target="_top"><em>Essential Microeconomics</em></a>, John Riley&#0039;s textbook-in-progress. It&#0039;s a good reference with a nice view towards applying questions to real-ish problems; this is of course opposed to <a href="http://www.amazon.com/gp/product/0195073401/ref=as_li_ss_tl?ie=UTF8&tag=kylewoodward-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0195073401" target="_top">MWG's</a> proof-heavy book which, while mathematically powerful, is often devoid of any intuitive appeal.</p>
<ul><li> <a href="/blog_data/pdfs/handout_micro_auctions_bne.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 201c - Auctions/BNE');return true;" target="_top">Auctions (with BNE)</a> &mdash; auctions with finite types, as well as all-pay auctions with continuous types. A brief example of Bayesian Nash equilibrium taken from <em>Essential Microeconomics</em>; Batman.</li>  <li> <a href="/blog_data/pdfs/handout_micro_crossing_pbe.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 201c - Single crossing/PBE');return true;" target="_top">Single crossing and PBE</a> &mdash; perfect Bayesian equilibrium and single crossing; numerous worked examples of old comp questions with perfect Bayesian equilibrium (and related concepts) and some quick incentive compatibility.</li>  <li> <a href="/blog_data/pdfs/handout_micro_incentive_compatibility.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 201c - Incentive compatibility');return true;" target="_top">Incentive compatibility</a> &mdash; incentive compatibility, with ties to the intuitive criterion. Optimal package pricing. Many questions from <em>Essential Microeconomics</em>.</li>  <li> <a href="/blog_data/pdfs/handout_micro_ironing_auctions.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 201c - Auctions and ironing');return true;" target="_top">Auctions and ironing</a> &mdash; optimal auctions, ironing, the meaning of <em>ex ante</em>, <em>interim</em>, and <em>ex post</em>. Worked exercises regarding the construction of optimal auctions.</li>  <li> <a href="/blog_data/pdfs/handout_micro_mechanisms_vcg.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 201c - Mechanisms and VCG');return true;" target="_top">Mechanisms and VCG</a> &mdash; optimal auctions, designer-optimal mechansisms, Vickrey-Clarke-Groves. Mostly a potpourri of questions, with a couple throwbacks; basic common-value auctions sprinkled in.</li>  <li> <a href="/blog_data/pdfs/handout_appropriation_principle.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','Econ 201c - Appropriation principle');return true;" target="_top">The appropriation principle</a> &mdash; the alignment of social benefit with individual incentives to simultaneously achieve efficiency and incentive compatibility; implications for monetary transfers and the designer.</li></ul>
EOA
,
'CIEBER' => <<<EOA
<ul><li> <a href="/blog_data/pdfs/lecture_intro_game_theory.pdf" onclick="pageTracker._trackEvent('Blog','Downloads','CIBER GGBW - Notes 2011');return true;" target="_top">Introduction to Game Theory</a> &mdash; a ground-up introduction to game theory and related topics, assuming no knowledge of anything (other than how to find the extremum of a quadratic equation). Fairly well put-together, if I do say so, but the last bit on sustainability could use some work.</li></ul>
EOA
);

?>
<h3>teaching</h3>
<p>
<!-- note: this average hasn't been updated in years... -->
My overall mean teaching evaluation comes in at 8.57/9, with a median of 9/9; the latter held pointwise until 2018. I am occasionally asked to provide more motivation in tying economic themes together.
</p>
<ul>
<?php

\$courses = Course::fetchAllCourses();

for ( \$i = 0; \$i < count( \$courses ); ++\$i )
{
\$courses[\$i]->printCourse();
}

?>
</ul>
<?php

\$page->printPageFooter();

?>
``````