Useful links for new contributors

Hi,

I am here for sharing useful links for new contributors, especially for those who do not have much experience in programming. If you are a professional programmer, you may find some of the following information to be redundant.

First thing first, I highly recommend one to work through the Developer Process section under the top-level Wiki for the Stan project before doing anything. It covers the process of Stan development team, coding style, and other important information.

The “New Functions” section is a good starting point for understanding Stan language. It is a good idea to compare the existing code in Stan with the examples in it. I find it to be very helpful for understanding the structure of Stan code.

Stan uses Eigen for linear algebra. For those who are not familiar with Eigen, this link might be useful: Eigen Overview. Most of the functions in Eigen have their wrapper in Stan. For example, the “cholesky_decompose.hpp” under folder “math/prim/mat/fun” is a wrapper of “LLT.h” under folder “src/Cholesky” in Eigen. One should always check the Stan math library first for linear algebra.

For those who want to know more about the theory support behind Stan, check the website page for Stan-Documentation. From the very basic level, Stan facilities the implementation of HMC by avoiding the difficulty of tuning its hyperparameters and sparing the effort of calculating the derivatives of the log-posterior with respect to parameters. The former is solved through no-U-turn sampler (NUTS) (see Hoffman & Gelman 2014), and the latter is overcome by automatic differentiation (eg. Carpenter et al. 2015)

Thanks, and I wish you all the best in work!

Wish you a Merry Chirstmas and A Happy New Year

Lu Zhang

2 Likes

Since we have a more stats crowd, these software-related books are useful:

C++ template metaprogramming

General programming books:

These are some of my favorites (other than Feathers, which I
haven’t read).

That’s Vandevoorde & Josuttis as authors of the C++ Templates book.

We can also point people ot the Agner Fog optimization
guides and the Myers Effective C++ books.

And Bentley’s Programming Pearls. It’s old, but probably the
thing to read before Fog’s guides.

I also like Cormen et al.'s Introduction to Algorithms, but
that may be too compute-sciency.

And the Code Complete book by McConnell — it’s on its second
edition.

I wish there were a simple intro to numerical analysis. All
the ones I have are dense.

  • Bob