# Preface {.unnumbered}


![Calculus with Julia](misc/logo.png)

----

This is a set of notes for learning
[calculus](http://en.wikipedia.org/wiki/Calculus) using the
[`Julia`](https://julialang.org) language. `Julia` is an open-source
programming language with an easy to learn syntax that is well suited
for this task.

Read "[Getting started with Julia](./misc/getting_started_with_julia.html)" to learn how to install and customize  `Julia` for following along with these notes. Read "[Julia interfaces](./misc/julia_interfaces.html)" to review different ways to interact with a `Julia` installation.

Since the mid 90s there has been a push to teach calculus using many
different points of view. The
[Harvard](http://www.math.harvard.edu/~knill/pedagogy/harvardcalculus/)
style rule of four says that as much as possible the conversation
should include a graphical, numerical, algebraic, and verbal
component. These notes use the programming language
[Julia](http://julialang.org) to illustrate the graphical, numerical,
and, at times, the algebraic aspects of calculus.

There are many examples of integrating a computer algebra system (such
as `Mathematica`, `Maple`, or `Sage`) into the calculus
conversation. Computer algebra systems can be magical. The popular
[WolframAlpha](http://www.wolframalpha.com/) website calls the full
power of `Mathematica` while allowing an informal syntax that is
flexible enough to be used as a backend for Apple's Siri
feature. ("Siri what is the graph of x squared minus 4?")  For
learning purposes, computer algebra systems model very well the
algebraic/symbolic treatment of the material while providing means to
illustrate the numeric aspects.  These notes are a bit different in
that `Julia` is primarily used for the numeric style of computing and
the algebraic/symbolic treatment is added on. Doing the symbolic
treatment by hand can be very beneficial while learning, and computer
algebra systems make those exercises seem kind of redundant, as the
finished product can be produced much more easily.

Our real goal is to get at the concepts using technology as much as
possible without getting bogged down in the mechanics of the computer
language. We feel `Julia` has a very natural syntax that makes the
initial start up not so much more difficult than using a calculator,
but with a language that has a tremendous upside. The notes restrict
themselves to a reduced set of computational concepts. This set is
sufficient for working many of the problems in calculus, but do not
cover thoroughly many aspects of programming. (Those who are
interested can go off on their own and `Julia` provides a rich
opportunity to do so.) Within this restricted set, are operators that
make many of the computations of calculus reduce to a function call of
the form `action(function, arguments...)`. With a small collection of
actions that can be composed, many of the problems associated with
introductory calculus can be attacked.


These notes are presented in pages covering a fairly focused concept,
in a spirit similar to a section of a book. Just like a book, there
are try-it-yourself questions at the end of each page. All have a
limited number of self-graded answers. These notes borrow ideas from
many sources, for example @Strang, @Knill, @Schey, @Thomas,
@RogawskiAdams, several Wikipedia pages, and other sources.

These notes are accompanied by a `Julia` package `CalculusWithJulia`
that provides some simple functions to streamline some common tasks
and loads some useful packages that will be used repeatedly.

These notes are presented as a Quarto book. To learn more about Quarto
books visit <https://quarto.org/docs/books>.

Compiling these notes into a `pdf` file with Quarto is possible with some piecing together of parts. The result is less than optimal and also quite large.

[Download pdf version](https://www.dropbox.com/scl/fi/vv8ee9a5xb9qbsw87f3bl/CalculusWithJulia.pdf?rlkey=u7ambk19sowelxtgiaosjozzo&st=i0hxwx29&dl=0)

<!--
These notes may be compiled into a `pdf` file through Quarto. As the result is rather large, we do not provide that file for download. For the interested reader, downloading the repository, instantiating the environment, and running `quarto` to render to `pdf` in the `quarto` subdirectory should produce that file (after some time).
-->

To *contribute* -- say by suggesting additional topics, correcting a
mistake, or fixing a typo -- click the "Edit this page" link and join the list of [contributors](https://github.com/jverzani/CalculusWithJuliaNotes.jl/graphs/contributors). Thanks to all contributors and a *very* special thanks to `@fangliu-tju` for their careful and most-appreciated proofreading.

## Running Julia

`Julia` is installed quite easily with the `juliaup` utility. There are some brief installation notes in the overview of `Julia` commands. To run `Julia` through the web (though in a resource-constrained manner), these links resolve to `binder.org` instances:


* [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jverzani/CalculusWithJuliaBinder.jl/main?labpath=blank-notebook.ipynb) (Image without SymPy)


* [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jverzani/CalculusWithJuliaBinder.jl/sympy?labpath=blank-notebook.ipynb) (Image with SymPy, longer to load)



----

Calculus with Julia version {{< meta version >}}, produced on {{< meta date >}}.
