Proposal for JuliaNLSolvers

2018-03-27

Hi, I’m Jiawei Li, currently an undergraduate Economics student in penultimate year. Being enthusiastic in programming and data science, I enjoy every minute solving problems, sharing thoughts, writing tutorials and making projects I’m proud of.

Why Julia and JuliaNLSolvers

I love Julia. It is fast, modern and easy to read. I used to write Python, the closed/open interval and weird self parameter is always a pain. As a language featuring OOP, it requires building an object first then build functions. But it is more intuitive to think of a function first rather than an object in my “functional” opinion. It also doesn’t allow sharing same function across different objects unless inheriting. Julia deals with such issues elegantly and still keeps great performance, which proves that performance and high-level programming is not a trade-off.

I would be extremely excited to work for JuliaNLSolvers because it helps solve important quantitative problems in native Julia code. Optimization is key in nearly every scientific subjects, and nonlinear equations have major roles in Economics, such as solving general equilibrium. LsqFit.jl provides curve fitting function to estimate model using data. Building such packages in Julia code makes it possible to integrate their functionalities with other Julia packages. Meanwhile, contributing to these projects gives me an invaluable opportunity to move towards my goal to do further study in Computational Economics.

Project Overview

My plan mainly consists of three parts: documentation, benchmarks and improving functionality.

LsqFit.jl, and NLsolve.jl only have example codes in their READMEs. Documentation for these projects will be good references for users. Beginner’s guide would dramatically reduce the learning curve for new users. Examples are also needed for Optim.jl, LsqFit.jl and NLsolve.jl to show people the Julia “pipeline” in areas such as Machine Learning, Statistics and Economics. Meanwhile, codes in documentation and examples can be used for testing.

Benchmarks are essential to show the advantage of Julia and therefore may persuade outside users to switch. By comparing with SciPy, it will also help guide development and find bugs.

LsqFit.jl is still on an early development stage and has large potential to improve. For example, allowing non-vectorized functions for LsqFit.jl will help it apply to more problems.

Deliverables

Contribution

I’ve already made following contributions:

Project Plan

Before - 13 May

14 May - 31 May (Part-time)

1 Jun - 14 Jun

15 Jun - 29 Jun

30 Jun - 13 Jul

14 Jul - 27 Jul

28 Jul - End

Education

I’m now exchange student at University of Birmingham, UK. My home university is University of Nottingham, China. I’ve chosen lots of courses focusing on Mathematics and Statistics. Meanwhile, I took several online courses where I learned programming and data science by myself.

University Courses

Online Courses

Portfolio

Here’re my code snippets covering basic algorithms, data processing and machine learning. iewaij/code-examples

I’m also writing tutorials on data science which attract 681 followers in Zhihu and 36 stars in Github. Topics include exploratory data analysis, data collection, distributions, OLS, and Gauss-Markov Theorem. iewaij/introDataScience

I like blogging on thoughts, mind hacks, programming, and Economic theories. Pause Game

Work Experience

In 2016 and 2017, I led a team as project manager in Enactus Nottingham China, a university society focusing on social innovation. During the year, our team experimented social innovation ideas including culture database for fashion designers, campus vintage shop and food awareness codes.

In 2016 summer, I worked for China Next foundation, a charity foundation supporting NGO works in China, as project assistant. My job includes interviewing NGO leaders in China and producing reports on their project’s impacts.

In 2015, I worked for the design team of Enactus Nottingham China. My job includes designing posters and Keynote slides.

Logistics

My university puts all academic year exams in one month, that is I’m having 10 exams during 3 May to 31 May. So I may have limited time developing in May. After that I’ll be full-time working in Birmingham till early July, then I will return to Hangzhou, China.