Skip to content

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

License

Notifications You must be signed in to change notification settings

manastalukdar/learning-technical

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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