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:
- Fork the challenge repository to your GitHub account
- Clone your forked repository to your local machine
- Create a virtual environment for the project
- Install the required dependencies
- Complete the tasks outlined below
- Commit and push your changes to your GitHub repository
- 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:
- Ensure all your code is committed and pushed to your GitHub repository
- Verify that your repository includes a complete README.md with setup and usage instructions
- Make sure all tests pass when run locally
- Submit the URL of your GitHub repository through the designated submission form
The deadline for submission is Friday at 11:59 PM.