Setting Up Your Workspace

Introduction: Building Our Foundation

Welcome to "Understanding and cleaning the movie dataset using Codex"! Throughout this course, you'll learn how to work with real-world data by cleaning and analyzing a movie dataset. But before we dive into the data itself, we need to set up our development environment properly.

Think of this lesson as laying the foundation for a house. You wouldn't start building walls without a solid foundation, and similarly, we shouldn't start working with data without the right tools and practices in place. In this lesson, you'll install Codex, an AI coding assistant that will help you write better code faster. You'll also learn about version control using Git, which is essential for tracking your work and protecting yourself from mistakes.

By the end of this lesson, you'll have a properly configured development environment with version control set up and a clean .gitignore file that keeps unnecessary files out of your repository. These foundational skills will serve you throughout this course and in your future data projects.

Meet Codex: Your AI Coding Assistant

Codex is an advanced AI system developed by OpenAI that helps you write code more efficiently. It understands natural language and can translate your descriptions into working code across multiple programming languages, including Python, which we'll use extensively in this course.

What makes Codex particularly valuable for data work is its ability to suggest code snippets, help you debug problems, and even explain complex code that you encounter. When you're cleaning a movie dataset, you might need to write functions to handle missing values, transform data formats, or filter out invalid entries. Codex can assist with all of these tasks by generating code based on your descriptions or completing code you've started writing.

Throughout this course, you'll use Codex as a coding companion. It integrates directly into your terminal and development environment, so you can get help without switching between different tools or searching through documentation. While Codex is powerful, remember that you should always review and understand the code it generates. Think of it as a knowledgeable assistant rather than a replacement for your own understanding.

Installing the Codex CLI

The Codex Command Line Interface (CLI) allows you to interact with Codex directly from your terminal. But first, lets install it with npm:

npm i -g @openai/codex

The CodeSignal environment comes with Codex and other necessary tools pre-installed. This means you won't need to run these installation commands when working through the course exercises on CodeSignal. However, learning how to install Codex on your own machine is valuable because you'll want to use these skills for your personal projects outside of CodeSignal.

Once installation is complete, you can launch Codex by simply typing:

codex

Version Control: Why Git Matters

Version control is a system that tracks changes to your files over time. When you're working on a data cleaning project, you'll make many changes to your code: adding new functions, fixing bugs, and trying different approaches to handle messy data. Version control keeps a complete history of all these changes, allowing you to see what you changed, when you changed it, and why.

The most popular version control system is Git, and it's what we'll use throughout this course. Git provides several critical benefits for your work. First, it acts as a safety net. If you make a change that breaks your code, you can easily revert to a previous working version. Second, it enables collaboration. Even if you're working alone now, you might share your project with others later, and Git makes it easy for multiple people to work on the same code without conflicts. Third, it serves as a backup. Your entire project history is stored, protecting you from accidental deletions or computer failures.

To start using Git with your project, you need to initialize a Git repository. Navigate to your project directory in the terminal and run:

git init

This command creates a hidden .git folder in your directory that stores all the version control information. You'll see output similar to this:

Initialized empty Git repository in /path/to/your/project/.git/

Your project is now under version control. Every change you make from this point forward can be tracked, saved, and recovered if needed. This simple command is the first step toward professional development practices that will serve you throughout your career.

The .gitignore File: Keeping Your Repository Clean

When you work on a Python project, your computer generates many files that you don't want to track with version control. These include temporary files, compiled code, virtual environments, and editor-specific settings. The .gitignore file tells Git which files and folders to ignore, keeping your repository clean and focused on the code that actually matters.

Let's create a .gitignore file with patterns that are essential for Python projects. In your project's root directory, create a new file named .gitignore and add the following content:

# Byte-compiled / cache files
__pycache__/
*.py[cod]
*.pyo

# Virtual environments
.venv/
venv/
.env
.python-version

# OS / editor
.DS_Store
.idea/
.vscode/

# Python tooling
.mypy_cache/
.pytest_cache/
.coverage
coverage.xml

Let's understand what each section does. The first section handles Python's compiled and cache files. When Python runs your code, it creates bytecode files with extensions like .pyc, .pyo, and .pyd, and stores them in __pycache__ directories. These files are automatically regenerated when needed, so there's no reason to track them in version control.

The second section excludes virtual environments. Virtual environments are isolated Python installations that contain the specific packages your project needs. They can be quite large and are easy to recreate from a requirements file, so you should never commit them to your repository. The patterns .venv/, venv/, .env, and .python-version cover the most common virtual environment directory names and configuration files.

The third section handles operating system and editor files. If you're on macOS, your system creates .DS_Store files in every directory to store folder display settings. IDEs like PyCharm and Visual Studio Code create .idea/ and .vscode/ directories to store their settings. These files are specific to your local setup and shouldn't be shared with others through version control.

The final section covers Python development tools. When you run type checkers like mypy, test frameworks like pytest, or code coverage tools, they create cache directories and report files. These are temporary artifacts of your development process and should be regenerated fresh each time you run the tools.

By creating this .gitignore file at the start of your project, you ensure that only meaningful code and configuration files are tracked by Git. This keeps your repository clean, makes it easier to see what actually changed between versions, and prevents you from accidentally committing sensitive information like environment variables that might be stored in .env files.

Summary and Ready for Practice

You've now completed the essential setup for your development environment. You learned about Codex and how it will assist you throughout this course as an AI coding companion. You installed the Codex CLI on your local machine, though remember that on CodeSignal, these tools come pre-installed for your convenience.

You also initialized a Git repository for version control, which will track all your changes and protect your work as you clean and analyze the movie dataset. Finally, you created a comprehensive .gitignore file that keeps your repository clean by excluding temporary files, virtual environments, and system-specific artifacts.

These foundational tools and practices might seem like extra work now, but they're essential habits that professional developers use every day. As you move forward in this course, you'll appreciate having version control when you want to try a different approach to cleaning your data without losing your current work. You'll value Codex's assistance when you need to write complex data transformation code. And you'll be glad your repository is clean and focused on the code that matters.

Now you're ready to move on to the practice exercises, where you'll apply what you've learned by setting up your own environment and creating these essential configuration files. Let's get started!

Sign up

Join the 1M+ learners on CodeSignal

Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal