# Programming for Mathematical Applications
### By Per-Olof Persson, Michael Franco, and Robert Sweeney Blanco
## Description
An introduction to computer programming with a focus on the solution of mathematical and scientific problems. Basic programming concepts such as variables, statements, loops, branches, functions, data types, and object orientation. Mathematical/scientific tools such as arrays, floating point numbers, plotting, symbolic algebra, and various packages. Examples from a wide range of mathematical applications such as evaluation of complex algebraic expressions, number theory, combinatorics, statistical analysis, efficient algorithms, computational geometry, Fourier analysis, and optimization. Mainly based on the Julia and the Mathematica programming languages.
## Additional Readings
* **[Julia]** [The official Julia documentation (latest stable version)](https://docs.julialang.org/en/v1). Free online.
* **[Think]** [Think Julia: How to Think Like a Computer Scientist](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html), Ben Lauwens and Allen Downey. Free online book.
## Computing Resources
* By generous support from the Division of Data Sciences, we have access to cloud-based Julia server based on Jupyter notebooks in a browser. Visit [datahub](https://julia.datahub.berkeley.edu) and sign in using your CalNet ID.
* See the official [Jupyter Notebook documentation](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html#) to get started using notebooks. Here is a good [keyboard shortcut cheat sheet](https://www.cheatography.com/weidadeyue/cheat-sheets/jupyter-notebook/pdf_bw/), here is a [markdown cheat sheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Here-Cheatsheet), and here are details of how to write [mathematics using LaTeX syntax](https://en.wikibooks.org/wiki/LaTeX/Mathematics).
* If you would like to install Julia on your own laptop, download the latest stable version at https://julialang.org. Optionally, you can also install [Atom Editor](https://atom.io/) and the [Juno IDE](https://junolab.org/). A step-by-step instruction for PC Windows is available [here](http://highorder.berkeley.edu/Julia_Installation_Instructions/julia_install_windows.html).