/learning-technical

Learning data structures, algorithms, machine learning and various computer science constructs by programming practice from resources around the web.

Primary LanguageJavaMIT LicenseMIT

Learning Technical

Documenting learnings of technical topics

GitHub Actions GitHub Super-Linter codecov

๐Ÿ“š Table of Contents

๐ŸŽฏ Overview

This repository is a comprehensive learning resource for computer science fundamentals, containing thousands of coding problems and system design concepts from top interview platforms and educational resources. Whether you're preparing for technical interviews or strengthening your programming foundation, this repository provides structured practice across multiple programming languages.

โœจ Key Features

  • ๐ŸŽฏ 20+ Coding Platforms: LeetCode, HackerRank, InterviewBit, and more
  • ๐Ÿ—๏ธ System Design: Real-world architecture problems and solutions
  • ๐Ÿ“š Book Solutions: Implementation from "Cracking the Coding Interview" and other technical books
  • ๐ŸŒ Multi-Language Support: Java, Python, JavaScript implementations
  • ๐Ÿงช Comprehensive Testing: Unit tests for all solutions
  • ๐Ÿ“Š Progress Tracking: Automated problem counting and statistics
  • ๐Ÿ”„ CI/CD Pipeline: Automated testing and code quality checks

๐Ÿš€ Quick Start

Prerequisites

Installation

  1. Clone the repository:

    git clone https://github.com/manastalukdar/learning-technical.git
    cd learning-technical
  2. Run tests to verify setup:

    # Java tests
    ./gradlew test
    
    # Python tests
    python scripts/run_unit_tests.py
  3. Open in VS Code (recommended):

    code .

Usage Examples

Run specific problem tests:

./gradlew test --tests "*TwoSum*"

Generate coverage report:

./gradlew jacocoTestReport

Count problems in repository:

python scripts/get_problems_count.py

๐Ÿ—๏ธ Repository Structure

learning-technical/
โ”œโ”€โ”€ ๐Ÿ“ src/
โ”‚   โ”œโ”€โ”€ ๐ŸŽฏ LeetCode/              # LeetCode problems & solutions
โ”‚   โ”œโ”€โ”€ ๐Ÿ† HackerRank/            # HackerRank challenges
โ”‚   โ”œโ”€โ”€ ๐Ÿ“– CrackingTheCodingInterview/  # Book implementations
โ”‚   โ”œโ”€โ”€ ๐ŸŽ“ EducativeIo/           # Grokking coding patterns
โ”‚   โ”œโ”€โ”€ ๐Ÿ—๏ธ ByteByByteGo/          # System design content
โ”‚   โ”œโ”€โ”€ ๐Ÿ’ก InterviewBit/          # Interview preparation
โ”‚   โ””โ”€โ”€ ๐Ÿ“ _notes/               # Study notes from tech books
โ”œโ”€โ”€ ๐Ÿงช scripts/                  # Automation and testing scripts
โ”œโ”€โ”€ ๐ŸŒ website/                  # Problem browsing interface
โ”œโ”€โ”€ ๐Ÿ“‹ build.gradle              # Java build configuration
โ””โ”€โ”€ ๐Ÿ“Š requirements.txt          # Python dependencies

Problem Organization

Each problem typically includes:

  • ๐Ÿ“„ readme.md - Problem description and approach
  • โš™๏ธ metadata.json - Problem metadata and tags
  • ๐Ÿ’ป Solution files in multiple languages
  • โœ… Comprehensive unit tests

๐Ÿ’ป Development

Tech Stack

Technology Version Purpose
โ˜• Java 19+ Primary language for algorithms
๐Ÿ Python 3.x Secondary implementation language
๐Ÿ“ฆ Gradle Latest Build automation and dependency management
๐Ÿงช JUnit 5 Latest Java testing framework
๐Ÿ“Š JaCoCo Latest Code coverage analysis
๐Ÿ”ง VS Code Latest Recommended development environment

Development Workflow

  1. Create a new problem solution:

    # Navigate to appropriate platform folder
    cd src/LeetCode/src/Problems/P1_P100/P1_TwoSum/
    
    # Create solution and test files
    touch Java/Solution.java Java/SolutionTest.java
  2. Run tests during development:

    # Run all tests
    ./gradlew test
    
    # Run specific test
    ./gradlew test --tests "SolutionTest"
  3. Check code coverage:

    ./gradlew jacocoTestReport
    # View report at build/reports/jacoco/html/index.html

๐Ÿงช Testing

Running Tests

Java Tests (JUnit 5):

# Run all Java tests
./gradlew test

# Run tests with verbose output
./gradlew test --info

# Run specific test class
./gradlew test --tests "*TwoSum*"

Python Tests:

# Run all Python tests
python scripts/run_unit_tests.py

# Run individual test file
python -m pytest src/LeetCode/Python/test_solution.py

Coverage Reports:

# Generate Java coverage report
./gradlew jacocoTestReport

# View HTML report
open build/reports/jacoco/html/index.html

Continuous Integration

All code changes are automatically tested using:

  • โœ… GitHub Actions: Build and test automation
  • ๐Ÿ” Super Linter: Code quality and style checks
  • ๐Ÿ“Š CodeCov: Coverage reporting
  • ๐ŸŽฏ Multiple OS Testing: Linux, Windows, macOS

๐Ÿค Contributing

We welcome contributions! Here's how to get started:

Quick Contribution Guide

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/new-problem
  3. Add your solution with tests
  4. Run tests: ./gradlew test
  5. Submit a Pull Request

Contribution Guidelines

  • โœ… Include comprehensive test coverage
  • ๐Ÿ“ Add clear problem descriptions
  • ๐Ÿท๏ธ Update metadata.json files
  • ๐ŸŽฏ Follow existing code organization
  • ๐Ÿ“‹ Reference original problem sources

Detailed guidelines: Contributing Guide

๐Ÿ“Š Project Stats

  • ๐ŸŽฏ 20+ Coding Platforms covered
  • ๐Ÿ“š 1000+ Problems implemented
  • ๐ŸŒ 3 Programming Languages (Java, Python, JavaScript)
  • ๐Ÿ—๏ธ System Design problems included
  • โœ… Comprehensive Test Coverage
  • ๐Ÿ”„ Active Maintenance and updates

๐Ÿ”— Resources

๐ŸŒ External Links

๐Ÿ“š Documentation

Document Purpose
๐Ÿ“‹ Requirements Development environment setup
๐Ÿ—๏ธ Architecture System design and structure
๐Ÿ”„ CI/CD Build and deployment pipeline
๐Ÿ“Š Metadata Project statistics and badges

โš ๏ธ Important Notes

Learning Philosophy: This repository prioritizes understanding over original problem-solving. Solutions may reference existing implementations to accelerate learning. All sources are properly attributed.

Problem Uniqueness: Some problems appear across multiple platforms. We're developing a web interface to filter and display unique problem instances.

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.


โญ Star this repository if it helps you learn!

Report Bug โ€ข Request Feature