This guide was written for the purposes of UTDesign Senior Capstone Project No. 932. It has been made available here for public benefit.

Our Senior Design project will require the use of several technologies, products, and services. Please make sure to thrououghly read through the following information.

Text Editors

A good text editor can make all the difference when it comes to productivity. I recommend using Visual Studio Code, which I have found to be absolutely fantastic in terms of features.

In the event that you do not like using Visual Studio Code, here are some other alternatives:

Programming Languages

The primary programming language we will be using for this project is Python 3, not Python 2. It is best to use Anaconda, a Python distribution that comes with a graphical package manager that you can use to install additional libraries.

Markup and Typesetting Languages

  • Markdown
    • Fun fact: this document was produced in Markdown.
  • LaTeX
    • Overleaf is a great online editor for this.
    • Overleaf has published comprehensive documentation and tutorials here.
    • You can also be courageous and install a LaTeX editor onto your computer. I am a big fan of TeXStudio. You will need to install a LaTeX distribution (such as MiKTeX) separately.

Python Data Science Libraries

  • jupyter-lab
    • Once you have Anaconda installed, you can start Jupyter Lab from the command line by typing:

      jupyter lab
      
    • Note that Jupyter Lab is different from Jupyter Notebooks (it’s basically a more advanced version).

  • pandas
  • matplotlib

Machine Learning Libraries and Frameworks

A DigitalOcean Tutorial:

Version Control Software

We will be using the Git version control system for this project.

  • The Git repository hosting service we will be using for this project will be GitLab.
  • A good Git GUI to install on your computer is Sourcetree. You will need to make a free Bitbucket account to use this product, but it is worth the inconvenience.
  • The Atlassian Git tutorial can be found here.
  • The Github Git tutorial can be found here.

And here are a few additional DigitalOcean tutorials as well:

Terminal Emulator

A good terminal emulator program will reduce your inevitable frustration when working with command-line interfaces (CLIs).

The ones that ship with Windows are not too great. I recommend installing one of the following programs:

MacOS users can make of the following emulators:

Linux Environment

We will be extensively using the Bash shell when interfacing with Linux cloud servers. MacOS users already have Bash installed on their computers, so there is no additional action needed on their part. Windows users must install Windows Subsystem for Linux (WSL).

A brief Bash command tutorial can be found here.

Linux Environment Tutorials:

Once we start working in the commandline with cloud servers, it will be worth your time to learn how to use Vim. Vim is usually preinstalled on Linux and MacOS systems. Windows users must install it separately.

Vim Tutorials:

SSH Keys

The SSH protocol is the most secure method of connecting to cloud servers and other computers (such as a headless Raspberry Pi). Windows users can follow this tutorial once they have WSL installed onto their computers. MacOS users need not take any additional steps and can follow the same tutorial.

Password Manager

We will also be making several user accounts for different services on cloud servers. In order to prevent any security vulnerabilities, we will be using long, unique passwords for every account. I recommend the use of a password manager such as Bitwarden to keep track of passwords. This is non-negotiable.

If you are interested in other cybersecurity measures, feel free to check out the following resources:

Containerization

Containerization essentially allows you to ship software in a “container” that not only contains source code, but also dependencies. Docker is what is used to accomplish this.

Supplemental DigitalOcean Tutorials

DigitalOcean has hundreds of tutorials covering a range of topics as it relates to software development. I have listed a few of my favorites below:

DigitalOcean:

Programming Languages:

Django Web Development Framework:

Server and Networking Setups: