Giter Club home page Giter Club logo

syllabus's Introduction

ScPo-CompEcon Syllabus

  • Course: Computational Economics for PhDs
  • Teacher: Florian Oswald, [email protected]
  • Class Times: Mondays 10:15-12:15
  • Class Location: Salle 22, 27 RSG
  • Slack: I invited you to our Slack group. Please sign up!

Course Description

This is a course for PhD students at the Department of Economics at Sciences Po in Computational Economics.

Course Overview

In this course you will learn about some commonly used methods in Computational Economics. These methods are being used in all fields of Economics. The course has a clear focus on applying what you learn. We will cover the theoretical concepts that underlie each topic, but you should expect a fair amount of hands on action required on your behalf. In the words of the great Che-Lin Su:

Doing Computation is the only way to learn Computation. Doing Computation is the only way to learn Computation. Doing Computation is the only way to learn Computation.

True to that motto, there will be homeworks for you to try out what you learned in class. There will also be a term paper. It will be helpful to bring a laptop to the sessions if you have one.

Topics will be demonstrated through live-code examples/slides, available at https://scpo-compecon.github.io/CoursePack/.

Prerequisites

  1. You need a laptop. No programming skills required.
  2. You must sign up for a free account at github.com.
  3. Before you come the first class, please do this:
    1. Download the latest stable julia release (v1.0.3 as of today) for your OS.
    2. Start julia by double-clicking on the relevant icon
    3. In the julia console:
      1. type ] (switches into the Package Manager Mode)
      2. type add IJulia InstantiateFromURL and hit Enter
      3. type using InstantiateFromURL and hit Enter
      4. type (or copy/paste) activate_github("QuantEcon/QuantEconLectureAllPackages", tag = "v0.9.5", add_default_environment = true). Hitting Enter will download a bunch of packages and it will compile them for about 10 minutes. Let your computer just run.

Getting Programming Skills

  1. If you followed Hugo L'Huillier's introduction to programming class last year, you should be all set. If you haven't, or would like a refresher, why not follow introduction to programming taught by Clement Mazet this semester (staring January 2019)? I warmly recommend to attend this course if you did not sit Hugo's course.
  2. We will be using Julia for this course.
  3. Clement in his course will introduce you to things like the Unix Shell and the verion control system Git. Both of those are very useful - for this course, and for the rest of your life as a scientist. If you want to get a headstart, why not have a peek at those excellent tutorials:
    1. Software Carpentry: The Unix Shell: If you have never heard of unix, please go over the first three (very short) chapters:
  4. What is Version Control? watch this 5 minute video.

Homeworks

There will be homeworks. They will be listed within the Course Outline.

Term Project

We will try and further develop a prototype for a new course allocation algorithm for SciencesPo students. There was a task force on this 2 years ago to work on a solution, and they came up with a workable algorithm. Last year's CompEcon class developed a prototype implemetnation. This year we will try to complete what we started with last year!
(:wrench:, :muscle:, :tada:) => (acquire the tools, do the work, tada!)

details

You will work in teams of 2/3. Details tbc.

Textbooks

There are some excellent references for computational methods out there. This course will use material from

  • Fackler and Miranda (2002), Applied Computational Economics and Finance, MIT Press
  • Kenneth Judd (1998), Numerical Methods in Economics, MIT Press
  • Nocedal, Jorge, and Stephen J. Wright (2006): Numerical Optimization, Springer-Verlag
  • Kochenderfer and Wheeler (2019), Algorithms for Optimization, MIT Press

Course Schedule

1. Programming languages and why julia

  1. Talk through homework requirements
  2. Talk through term project requirements
  3. Show where material is and do first set of slides.

Homework


2. julia setup and Getting Started

  • Setup environment
  • Tools and Editors
  • Examples
  • Types
  • Essentials
  • Speed
  • Data and Statistical Packages

3. Integration and Function Approximation

  1. Numerical Integration
    • Monte-Carlo integration
    • Gaussian Quadrature
    • Multidimensional Quadrature
      • Quadrature with correlated shocks
  2. Function Approximation
    • Polynomial Interpolation
      • Basis functions and Coefficients
    • Regression as Approximation
    • Colocation Methods
    • Multidimensional Approximation
      • The Smolyak Grid

4. Optimisation 1

  1. Intro
  2. Conditions for Optima
  3. Derivatives and Gradients
  4. Numerical Differentiation
  5. JuliaOpt

5. Optimisation 2

  1. Bracketing
  2. Local Descent
  3. First/Second Order and Direct Methods
  4. Constraints

6. Numerical Dynamic Programming

  • Review of DP theory
  • Different Solution methods for different cases
  • Solving the Growth Model in 7 Different ways

7. Constrained Optimisation Applications as MPECs

  • What is an MPEC?
  • How can we cast constrained problems as MPECs?

Applications:

  1. MPEC on John Rust's Bus Engine Replacement
  2. The Berry-Levinsohn-Pakes (BLP) paper as constrainted optimization problems

8. HPC julia

  • Brief intro to parallel computing concepts
  • Parallel computing with julia
  • GPU computing with julia

9. Solving the McCall Search Model


10. Term Project


11. Term Project


12. Term Project


Grading

50% contribution to term project, 50% homeworks

Statements on Plagiarism

We will try to honour Science Po's anti-plagiarism policy:

Plagiarism occurs when a student submits work that does not allow one to distinguish the student's own thoughts from those of other authors: it can be characterised by the absence of citation of a group of consecutive words (five or more), by reformulation or translation, or by copying directly." (article on intellectual honesty)

Related to Plagiarism

Reuse and building upon ideas or code are major parts of modern software development. As an economist writing code, you will (hopefully) never write anything from scratch. This class is structured such that all solutions are public. You are encouraged to learn from the work of your peers. As I said above, I won't hunt down people who are simply copying-and-pasting solutions, because without challenging themselves, they are simply wasting their time and money taking this class.

Please respect the terms of use and/or license of any code you find, and if you reimplement or duplicate an algorithm or code from elsewhere, credit the original source with an inline comment.

License

I took the setup for the structure of this course from https://github.com/advanced-js taught by Aidan Feldman and team at NYU, and I would like to thankfully acknowledge making the materials useable to other teachers. The same license applies (below). The coursepack material is based on Chris Rackauckas' excellent Julia Intro. The license allows you to copy and use everything here, under the condition that you attribute the work (details in the license). The copyright notice to be included in any such copies and other derivative work is:

Copyright 2019 Florian Oswald, Sciences Po Paris, [email protected]

Thank you.

Creative Commons License
This work and all other materials under https://github.com/ScPo-CompEcon are licensed under a Creative Commons Attribution 4.0 International License.

syllabus's People

Contributors

floswald avatar gitter-badger avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.