Module 2: Build Sprint 1

Understanding Your First Ticket

Learn how to approach your first ticket in the Labs project and understand the development workflow.

First Ticket Details

View your first ticket details and requirements on GitHub:

First Ticket Documentation

Note: You should be working off a forked version of the starter repo.

Here is the exact step-by-step workflow you should follow when you access your ticket above:

  1. Familiarize Yourself with the Repository
    1. Read the documentation thoroughly to understand the repository. This may include API contracts, READMEs, or docs on Google/Notion.
    2. Check the README of the ticket you have been assigned to know what is expected of you.
  2. Understanding the Deliverable
    1. Check the deployed version of the product to see the expected output and match it with what you have to build.
    2. Read the example of the expected output provided in the README.
  3. Code Unit Test (if applicable)
    1. If a relevant test exists, follow the test-driven development approach to guide your development.
    2. Validate your code using the unit test to ensure you've produced the expected outcome.
  4. Code the Component/Feature
    1. Code your deliverable, the feature described in the ticket.
  5. Record a Loom Video
    1. Demonstrate the feature in the video.
    2. Provide a detailed explanation of your thought process while coding.

Approaching Your First Feature

Learn how to implement database operations and data generation for your first Data Science Labs ticket.

Implementation Checklist

  • Set up MongoDB account and create a free tier shared cluster
  • Configure database security and environment variables
  • Implement the database interface class with CRUD operations
  • Generate monster data using the MonsterLab library
  • Create functions for seeding and managing the database
  • Implement data visualization with Pandas DataFrames
  • Follow PEP style guidelines and add proper documentation
  • Test your implementation with at least 1000 monsters
# Example Database Interface Implementation

from os import getenv
from typing import Dict, Optional
import pandas as pd
from pymongo import MongoClient
from dotenv import load_dotenv
from certifi import where
from monster_lab import generate_monster  # Hypothetical monster generation library

class MonsterDatabase:
    """Interface for monster database operations."""
    
    def __init__(self):
        """Initialize database connection using environment variables."""
        load_dotenv()
        self.client = MongoClient(getenv("DB_URL"), tlsCAFile=where())
        self.db = self.client["monster_database"]
        self.collection = self.db["monsters"]
    
    def seed(self, num_monsters: int) -> bool:
        """Seed the database with specified number of monsters."""
        try:
            monsters = [generate_monster() for _ in range(num_monsters)]
            self.collection.insert_many(monsters)
            return True
        except Exception as e:
            print(f"Error seeding database: {e}")
            return False
    
    def reset(self) -> bool:
        """Delete all monsters from the collection."""
        try:
            self.collection.delete_many({})
            return True
        except Exception as e:
            print(f"Error resetting database: {e}")
            return False
    
    def count(self) -> int:
        """Return the number of monsters in the collection."""
        return self.collection.count_documents({})
    
    def dataframe(self) -> Optional[pd.DataFrame]:
        """Return a DataFrame of all monsters in the collection."""
        data = list(self.collection.find({}, {'_id': 0}))
        return pd.DataFrame(data) if data else None
    
    def html_table(self) -> Optional[str]:
        """Return HTML table representation of monster data."""
        df = self.dataframe()
        return df.to_html() if df is not None else None

Submit your Sprint 1 Deliverables: Loom and Code

Technical Interview Simulation

You're in the middle of your first technical interview. The interviewer is going through your resume and stops at the section describing your Labs project. They turn to you and ask:

“How would you describe the project you built in BloomTech Labs and the contributions you had on it?”

Using Loom, record a video articulating to a hiring manager the product you'll be working on in Labs. Feel free to reference your code and ticket.

You should concisely answer the following questions:

The video should be no longer than 5 minutes, and you must demo the project in the video.

Submission Details

Submit the links to your Loom video and code on GitHub using the form below.

You can access the submission form in the Portal.

Note: If any one link is missing, the assignment will not be graded and you will have to resubmit.

Your code should:

In your Loom video, you must:

All submissions will be graded based on criteria set forth in the rubric below.

Never used Loom before?

How to get started with Loom:
https://youtu.be/eSMiGNzJwtg

How to use the Loom Chrome Extension:
https://youtu.be/tR_t9owJpRA

Need support? Open a support ticket in the Hub!

Points

100

Submitting

Nothing

Due For Available from Until
- Everyone - -

Rubric

Build Sprint Grading Criteria

Criteria Ratings
Presenting Their Work
The student clearly and accurately explains all aspects of their work, including their approach, design decisions, and results.
Meets Expectations Needs Improvement
Organization
The video is well-organized, easy to follow, and presents information in a logical and coherent manner.
Meets Expectations Needs Improvement
Technical Knowledge
The student demonstrates a solid understanding of the technical concepts and tools used in their work. They are able to answer technical questions.
Meets Expectations Needs Improvement
Code Quality
The code is well-organized and readable, follows the best practices that they learned, and the code is readable
Meets Expectations Needs Improvement
Functionality
The code runs without errors and produces the expected results. The code is complete and meets the requirements of the assignment.
Meets Expectations Needs Improvement
Commenting
Comments are clear and provide enough information to understand the purpose and function of the code.
Meets Expectations Needs Improvement
Correctness
The code is implemented in a correct, efficient and optimal way.
Meets Expectations Needs Improvement
Test Execution
The student is able to execute tests and document issues or bugs found. They are able to explain how the tests are verifying the functionality of the system.
Meets Expectations Needs Improvement
Communication & Delivery
The student communicates effectively and professionally, speaking clearly, using appropriate nonverbal communication, and expressing themselves in a confident and engaging manner. They show active listening skills and can build rapport.
Meets Expectations Needs Improvement
Preparation & Self-Presentation
The student presents themselves in a professional and polished manner and is well-prepared. They project confidence and enthusiasm.
Meets Expectations Needs Improvement
Adaptability
The student demonstrates an ability to adapt to new information and respond appropriately to unexpected questions or changes in the interview. They display flexibility and some initiative.
Meets Expectations Needs Improvement