Thank you for your interest in contributing! This project aims to help others learn DSA through hands-on practice.
- New algorithms and data structures
- Improved wiki guides
- Additional test cases
- Bug fixes
- Documentation improvements
When adding new content, please include:
-
Skeleton Implementation (
src/main/java/...)- Method signatures with clear names
- JavaDoc comments explaining parameters and return values
- TODO markers where implementation is needed
- Include complexity analysis in class-level JavaDoc
-
Comprehensive Tests (
src/test/java/...)- Use JUnit 5
- All test assertions initially commented out with TODO
- Cover edge cases: empty, single element, duplicates, large inputs
- Include both positive and negative test cases
- Test method names should clearly describe what they test
-
Wiki Guide (
wiki/...)- Problem description - What needs to be implemented
- What it is - Brief explanation of the concept
- Characteristics - Time/space complexity, properties
- How it works - Step-by-step explanation
- Your task - What methods to implement
- Test cases - What to consider
- Hints - Guidance WITHOUT giving the solution
- Applications - Real-world use cases
- Common pitfalls - What to watch out for
- Follow-up questions - To deepen understanding
- Related topics - Links to similar concepts
- NO SOLUTIONS - The guide should help, not solve
/**
* Brief description of what this does
* Time Complexity: O(?)
* Space Complexity: O(?)
*
* TODO: Implement [algorithm name]
* See wiki/[AlgorithmName].md for problem description and hints
*/
public class AlgorithmName {
/**
* Method description
* @param param description
* @return what it returns
*/
public ReturnType methodName(ParamType param) {
// TODO: Implement this method
}
}@Test
void testDescriptiveNameOfWhatIsBeingTested() {
// Setup
DataStructure ds = new DataStructure();
// TODO: Uncomment when implementation is complete
// Execute and assert
// assertEquals(expected, actual);
// assertTrue(condition);
}# [Algorithm/Data Structure Name]
## Problem Description
[What needs to be implemented]
## What is [Name]?
[Brief explanation]
## Characteristics
- **Time Complexity**: O(?)
- **Space Complexity**: O(?)
- **Key properties**
## How It Works
[Step-by-step explanation]
## Your Task
Implement the following methods:
1. method1
2. method2
## Test Cases to Consider
- Case 1
- Case 2
## Hints
[Guidance without solutions]
## Applications
[Real-world uses]
## Common Pitfalls
[What to avoid]
## Follow-up Questions
[To deepen understanding]
## Related Topics
[Links to similar concepts]- Fork the repository
- Create a feature branch:
git checkout -b feature/algorithm-name - Add your content following the guidelines above
- Test that your code compiles and tests are structured correctly
- Commit with clear messages:
git commit -m "Add Heap Sort algorithm" - Push to your fork:
git push origin feature/algorithm-name - Create a Pull Request with:
- Clear title
- Description of what you added
- Why it's useful for learners
- Code compiles without errors
- All methods have JavaDoc comments
- TODO markers are in place
- Tests are comprehensive and initially commented
- Wiki guide is complete and helpful (no solutions!)
- Complexity analysis is included
- Edge cases are considered
- Code follows existing style
- No actual implementations in skeleton code
We especially welcome contributions for:
- AVL Tree
- Red-Black Tree
- B-Tree
- Skip List
- Segment Tree
- Fenwick Tree (Binary Indexed Tree)
- A* Search
- Bellman-Ford
- Floyd-Warshall
- Kruskal's MST
- Prim's MST
- Strongly Connected Components
- More DP problems (Edit Distance, Coin Change, etc.)
- Performance benchmarks
- Visualization tools
- More test cases
- Video tutorials
- Interactive examples
Help improve existing wiki guides:
- Clearer explanations
- Better examples
- More hints
- Additional test cases
- Fixing typos or errors
Found a bug? Please include:
- What you expected to happen
- What actually happened
- Steps to reproduce
- Your environment (Java version, OS)
Open an issue with:
- Algorithm/data structure name
- Why it's useful for learners
- Difficulty level
- Common interview frequency
- Be respectful and welcoming
- Focus on helping learners
- Provide constructive feedback
- Remember: everyone is learning!
Open an issue or start a discussion. We're here to help!
Thank you for contributing to the learning journey of others! 🚀