Preface
===============

## Copyright

Copyright © 2020 Hao Cheng, Rohan Fernando. All rights reserved.

Modern Programming in Julia for Genomic Prediction is available under the Creative Commons Attribution-NonCommercial 3.0 Unported License. The authors maintain an online version at https://ebook.QTL.rocks.

**Hao Cheng** is an Assistant Professor of Quantitative Genetics at University of California, Davis. He has a PhD in Genetics and Statistics from Iowa State University. 

**Rohan Fernando** is a Emeritus Professor of Statistcal and Quantitative Genetics in the Department of Animal Science at Iowa State University. 


## Why Julia?

Whole-genome analyses are usually computationally intensive even for data sets of moderate size. 
Although these analyses can be implemented with most dynamic languages such as R or Python with very 
readable code that is easy to understand, modify and extend, they are often too slow for real data analyses. 
Therefore, for computational efficiency, compiled languages such as C, C++, or Fortran have historically 
been used to implement methods for genomic analyses. In order to make these more accessible, a dynamic 
language such as R may be used as a user interface to the underlying methods that are written in the 
compiled language. The problem of using compiled languages, however, is that they are usually hard to understand, modify, extend and maintain, in addition to being difficult to readily deploy across different operating systems. Julia, a relatively new scientific programming language, approaches the computing speed of compiled languages, but retains the benefits of dynamic languages. 

## What is this book for?

The purpose of this book is to help you develop skills in computer programming and algorithm development useful for 
research projects and applications in quantitative genetics, especially genomic prediction. Julia, which is a modern
programming language, will be used for this course. It is assumed that you have some programming experience, and concepts 
in genomic prediction will be introduced through examples. The focus of this book is not Julia. Rather, it is the use of
Julia for applications in quantitative genetics. These include:

* Mixed effects models with polygenic, maternal and permanent environment effects
* Use of pedigree information
* Iterative methods for solving linear systems, e.g, Jacobi, Gauss–Seidel
* GBLUP and Bayesian alphabet
* Variance component estimation
* Single-step methods

## Useful resources

* [Julia Cheatsheet](https://github.com/reworkhow/QTLweb/blob/24444cd26d7a475862e3d7104c3951689f1818a6/notes/JuliaCheatSheet.pdf)
* [Matrix Cookbook](https://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf)
* [Think Julia](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html)
