# Development Environment

This guide will help you set up your **development environment** by installing required tools: Python programming language, GitHub for version control, and PyCharm IDE.

## Python

* Install [Python](https://www.python.org/downloads/) version **3.13.x or higher**. Earlier versions may not be compatible with this course.
* Take some time to familiarize yourself with Python's [new features](https://docs.python.org/3/whatsnew/).

## GitHub

1. Create a [GitHub](https://github.com/) account (if you do not already have one). As a student, you can get [GitHub Pro](https://docs.github.com/en/get-started/learning-about-github/githubs-plans#github-pro) features for free through the [GitHub Student Developer Pack](https://education.github.com/pack).
2. Login to GitHub.
3.  Create a new repository named "**nlp-essentials**" and set its visibility to **Private**.\


    <div align="left"><figure><img src="https://3001858638-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA1LLOdLbwlJUdM2W1pXN%2Fuploads%2F1fXlVwlwbKuLPqbDuI3a%2Fgithub1.png?alt=media&#x26;token=02b1e5ed-2ebf-46f5-a3b0-f52796cba979" alt="" width="563"><figcaption><p>Create a GitHub repository.</p></figcaption></figure></div>
4. Go to `[Settings]` in your repository, and select \[`Collaborators and teams]`.
5. Click `[Add people]`, and add each instructor using their GitHub usernames:
   1. Find their GitHub IDs in the "Instructors" section of the [Syllabus](syllabus).
   2. Enter each username and send the collaboration invitation.
6. Verify that all instructors have been added as collaborators.

<div align="center"><figure><img src="https://3001858638-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA1LLOdLbwlJUdM2W1pXN%2Fuploads%2FCkIwmDKbg1PErN5b38An%2Fgithub2.png?alt=media&#x26;token=6ff62294-ec56-42f3-af16-c83ebeb4bfad" alt=""><figcaption><p>Add collaborators to your GitHub repository.</p></figcaption></figure></div>

## PyCharm

1. Install [PyCharm](https://www.jetbrains.com/pycharm/download/) on your local machine:
   1. As a student, you can get [PyCharm Professional](https://www.jetbrains.com/pycharm/editions/) for free by applying for a [JetBrains Educational License](https://www.jetbrains.com/community/education/#students).
   2. The following instructions are based on **PyCharm 2024.3.x Professional Edition**.
2. Configure your GitHub account:
   1. Go to `[Settings] > [Version Control] > [GitHub]`.
   2. Press `[+]`, select `[Log in via GitHub]`, and follow the browser prompts to authorize PyCharm with your GitHub account.
   3. Once connected, you will be able to access GitHub directly from PyCharm for version control operations.

<div align="center"><figure><img src="https://3001858638-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA1LLOdLbwlJUdM2W1pXN%2Fuploads%2Fsct25vP1YrmnTWUOQadV%2FPyCharm1.png?alt=media&#x26;token=8ba472ac-c80d-453a-978a-e96404b28964" alt=""><figcaption><p>Add your GitHub account to PyCharm.</p></figcaption></figure></div>

3. Create a new PyCharm project from GitHub:
   1. On the PyCharm welcome screen, click `[Clone Repository]`.
   2. In the new window, select `[GitHub]` from the left menu, choose your **nlp-essentials** repository, and click `[Clone]` (verify the directory name is "nlp-essentials").
4. Set Up a Python virtual environment:
   1. Go to `[Settings] > [Project: nlp-essentials] > [Project Interpreter]`.
   2. Click `[Add Interpreter]` and choose `[Add Local Interpreter]`.
5.  In the prompted menu, choose `[Add Local Environment]`, configure as follows, then click `[OK]`:

    * Environment:  `Generate new`
    * Type: `Virtualenv`
    * Base python: the Python version you installed above
    * Location: YOUR\_LOCAL\_PATH/nlp-essentials/.venv

    <div align="left"><figure><img src="https://3001858638-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA1LLOdLbwlJUdM2W1pXN%2Fuploads%2FGX4Ao2IDhnDPW5e3dAfr%2Fpycharm2.png?alt=media&#x26;token=18532f05-f238-41f7-9531-cd08241a7491" alt="" width="375"><figcaption><p>Add a virtual environment.</p></figcaption></figure></div>

## References

* [Git](https://docs.github.com/en/get-started/using-git/about-git): a version control system for tracking changes in files.
* [Virtualenv](https://virtualenv.pypa.io): a tool to create isolated Python environment.
