Technical Requirements

This course assumes a baseline of technical knowledge. It is important to make sure you are comfortable with the following tech. If you are not, we are providing links to excellent resources you can use to get up to speed! Please note that you can learn all these things in our free Basic Training course.

Unix or Linux Environments

To be successful in this course you must have access to a Unix or Linux based operating system. MacOS is based on Unix and if you're running Ubuntu, that's a Linux distribution.

If you are on a Windows 10 machine, follow this guide to installing a Linux environment before starting the course.

If you'd like to get more familiar with a Linux environment, you can check out this Ubuntu for beginners, targeting Ethereum Developers specifically:

(Those interested in learning more about the history of Unix can read this excerpt from Advanced Programming in Unix Environment by Stevens and Rago)

Command Line

The command line is the basic non-graphic interface for your computer. It is most commonly called the terminal or the shell.

To be successful in this course, you should be comfortable using the command line. Among other things, you should be very comfortable changing directories using cd, deleting files with rm, installing files with curl, and running programs from the command line.

We would also recommend becoming familiar with command line shortcuts, such as:

Sometimes it's helpful to remap your caps lock key to become CTRL. Find out how to do that here.

To brush up on command line skills, check out:

Git

Git is a version-control system (VCS) used to track changes made to projects. While git seems simple, it's actually a bit challenging to get comfortable with. (Note that git is a piece of software, on which version control sites like GitHub or GitLab are based.)

Here are some resources to get you started:

Not only is git a part of a good coding repertoire, it's also used by many open-source projects. An essential part of the bootcamp is contributing to open-source projects. It's really important to know how to do proper Pull Requests and other guidelines for contributing to open-source. Here are a few resources to help you with this:

For those who would like to get a headstart, check out the "Good First Issues" for these open-source Ethereum projects:

Be sure to read Community Guidelines before contributing to a project. For example, here is Geth's Contributor Guidelines and their Code Review Guidelines

JavaScript

Even if JavaScript is not your first software language, it's really important you be familiar with its basic syntax. Solidity, the smart contract language you'll learn, is based on ECMAScript. We recommend Code Academy's free Intro to JavaScript course, The Odin Project or The Modern JavaScript Tutorial to get the basics. Beyond basic JavaScript, students should be familiar with Node and npm. Some advanced students will also be using React in this course. Here are some resources to help familiarize yourself with these:

Code Editor

VSCode is a very popular editor with developers due to the plug-ins and extensions it makes available. We would recommend getting started with it and the following plug-ins / features:

We strongly recommend using VSCode in this course, particularly if you're new to coding, due to its extensive plugins. Other popular editors include Atom, Sublime Text, and IDEA (written originally for Java but now supports many languages).

There is also the option of text-only editors. Many developers find them extremely productive and, while challenging to learn, make their job much easier. We'll address one here, vim, by providing this series of tutorials:

If you'll be using text-only editors, or simply using the command line for your development environment, you'll want to get familiar with tmux: Getting Started with Tmux