“LaTeX is a software system for document preparation. When writing, the writer uses plain text as opposed to the formatted text found in “What You See Is What You Get” word processors like Microsoft Word, LibreOffice Writer and Apple Pages.” – Wikipedia
- Overleaf Tutorials, specifically the Mathematics Tutorials
- Overleaf Templates e.g. Template for SIAM Journal
“BibTeX is reference management software for formatting lists of references. The BibTeX tool is typically used together with the LaTeX document preparation system.” – Wikipedia
“Beamer is a LaTeX document class for creating presentation slides, with a wide range of templates and a set of features for making slideshow effects.” – Wikipedia
Git Version Control
“Git is software for tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development.” – Wikipedia
- Git Homepage (Includes Download links)
- Git Bash shell in Windows, comes bundled in git download
- GitHub Desktop is a good first-party application if your IDE doesn’t come with nice Git support. (Most IDEs have good support though, including VSCode)
- Git Graph is a nice extension for visualizing version contol in VSCode
Python Language and Conda Virtual Environments
Anaconda/miniconda allow us to create virtual environments that store all dependencies / Python meta-info that are relevant to a project.
Miniconda is more light weight than anaconda, but requires using a terminal to manage virtual-envs.
Visual Studio Code (VSCode) IDE
There are a lot of good Python IDEs. I like VSCode since it has many helpful extensions for lots of different languages, integrated Git support, easy debugging, virtual environment integration, … Most things are pretty intuitive.
- Most unix based systems include a C compiler. However, Windows requires you to install your own. See this page on C/C++ for VSCode
- For Mac, the Homebrew package manager is quite helpful
- Some familiarity with basic shell commands is helpful for navigating directories, using Git, using virtual machines, writing shell scripts, …