Sprint 9 Challenge

Software Engineering Challenge

This Sprint Challenge is designed to assess your mastery of the software engineering concepts covered in this sprint. You'll demonstrate your ability to create a well-structured Python package, apply object-oriented programming principles, and implement testing for your code.

Challenge Instructions

Getting Started

Follow these steps to begin your Sprint Challenge:

  1. Fork the challenge repository to your GitHub account
  2. Clone your forked repository to your local machine
  3. Create a virtual environment for the project
  4. Install the required dependencies
  5. Complete the tasks outlined below
  6. Commit and push your changes to your GitHub repository
  7. Submit the link to your completed repository

Challenge Repository

Challenge Tasks

Task 1: Python Package Development

Create a Python package named lambdata_username with the following requirements:

  • Proper package structure with __init__.py and module files
  • Implementation of at least two utility functions for data science
  • Documentation for each function and module
  • A setup.py file with package metadata

Task 2: Object-Oriented Programming

Create a Python class that demonstrates your understanding of OOP principles:

  • Class should be related to data science (e.g., DataFrameHandler, DataCleaner)
  • Implementation of appropriate instance attributes and methods
  • Use of special methods (__init__, __repr__, etc.)
  • Application of inheritance or composition if appropriate

Task 3: Testing

Write unit tests for your package functionality:

  • Create test files for utility functions and classes
  • Use pytest or unittest to write test cases
  • Ensure all tests pass successfully
  • Aim for good test coverage of your code

Task 4: Code Style and Documentation

Ensure your code follows Python best practices:

  • Adherence to PEP 8 style guidelines
  • Clear and helpful docstrings for all modules, classes, and functions
  • Meaningful variable and function names
  • Well-structured README.md with installation and usage instructions

Evaluation Criteria

Your submission will be evaluated based on the following criteria:

  • Functionality: Does the package work as expected and fulfill all requirements?
  • Code Quality: Is the code well-organized, readable, and following best practices?
  • Testing: Are there comprehensive tests that verify the code's functionality?
  • Documentation: Is the code well-documented with clear explanations?
  • Package Structure: Is the package correctly structured according to Python standards?

Tips for Success

  • Start by outlining your package structure before writing any code
  • Consider what utility functions would be most useful for data science work
  • Test your code frequently as you develop it
  • Don't hesitate to reference documentation or course materials
  • Focus on quality over quantity - a well-implemented smaller feature set is better than many poorly implemented features
  • Remember to check your code against PEP 8 guidelines before submitting

Submission Instructions

To submit your Sprint Challenge:

  1. Ensure all your code is committed and pushed to your GitHub repository
  2. Verify that your repository includes a complete README.md with setup and usage instructions
  3. Make sure all tests pass when run locally
  4. Submit the URL of your GitHub repository through the designated submission form

The deadline for submission is Friday at 11:59 PM.