A comprehensive Android development playground featuring multiple modules for learning, practicing, and mastering Android development concepts, Data Structures & Algorithms, and System Design.
This project is organized into multiple modules and learning resources:
- Purpose: Primary Android application module with Jetpack Compose
- Package:
com.example.androidplayground - Key Features:
- Modern Android development with Jetpack Compose
- Material 3 design system
- Edge-to-edge UI support
- Compose-based UI components
- Technology Stack:
- Kotlin
- Jetpack Compose
- Material 3
- AndroidX libraries
- Build Configuration:
- Compile SDK: 35
- Min SDK: 24
- Target SDK: 34
- JVM Target: 1.8
- Purpose: Dedicated module for practicing DSA problems and algorithms
- Package:
com.example.dsa - Key Features:
- Array and Hashing problems
- Basic programming algorithms
- Interactive problem-solving environment
- Contents:
- Array_Hashing/ - Collection of array-based problems:
AnagramString.kt- Anagram detection algorithmsConcatenationOfArray.kt- Array concatenation solutionsDuplicateItemInArray.kt- Duplicate detection in arraysTwoSumArray.kt- Two Sum problem implementations
- BasicPrograms.kt - Fundamental algorithms:
- Palindrome detection
- Fibonacci sequence generation
- Anagram checking
- Prime number validation
- Factorial calculation
- String reversal
- Number swapping without third variable
- Second largest element finding
- Smallest word extraction
- Array_Hashing/ - Collection of array-based problems:
- Purpose: Comprehensive collection of Android interview resources and notes
- Contents:
- android-interview-questions.md - Links to interview resources and experiences
- Android.md - Advanced Android concepts and best practices:
- Coroutines and Dispatchers
- Main thread handling with
Dispatchers.Main.immediate - CoroutineExceptionHandler and supervisorScope
- withContext(NonCancellable) usage
- ViewModel scope management
- yield() function usage
- Java.md - Java-specific interview topics
- kotlin.md - Kotlin language concepts (placeholder)
- Purpose: Structured learning path for mobile system design
- Contents:
- SystemDesignRoadmap/ - 8-week learning curriculum:
- RoadMap.md - Complete learning roadmap with weekly goals:
- Week 1: Foundations of System Design
- Week 2: Android App Architecture & Clean Code
- Week 3: Networking & APIs
- Week 4: Data Storage & Offline Sync
- Week 5: Authentication & Security
- Additional weeks covering advanced topics
- Concepts.md - Core system design concepts and principles
- Week1.md - Detailed Week 1 curriculum and exercises
- RoadMap.md - Complete learning roadmap with weekly goals:
- SystemDesignRoadmap/ - 8-week learning curriculum:
- Root: Multi-module Android project with Gradle Kotlin DSL
- Version Management: Centralized dependency management via
gradle/libs.versions.toml - Modules:
:app- Main application:dsa- Data Structures & Algorithms module
Both modules include:
- AndroidX Core KTX
- Lifecycle Runtime
- Activity Compose
- Compose BOM
- Material 3
- Testing frameworks (JUnit, Espresso)
- Android Studio Hedgehog or later
- JDK 11 or higher
- Android SDK 35
- Kotlin 1.9+
- Clone the repository
- Open in Android Studio
- Sync Gradle files
- Build the project
- Run either the
appordsamodule
- Main App: Run the
appmodule to see the basic Android Compose application - DSA Module: Run the
dsamodule to access the algorithms playground
- Start with the
appmodule to understand basic Compose UI - Study the interview resources in
androidInteview/ - Practice with the DSA problems in the
dsamodule - Follow the system design roadmap in
SystemDesign/
- Explore
BasicPrograms.ktfor fundamental algorithms - Work through the
Array_Hashing/problems - Implement and test your solutions
- Compare with existing implementations
- Begin with
SystemDesign/SystemDesignRoadmap/RoadMap.md - Follow the 8-week curriculum
- Complete weekly deliverables
- Practice with mock questions provided
- Fork the repository
- Create a feature branch
- Add your implementations or improvements
- Write tests for new functionality
- Submit a pull request
For questions or contributions, please open an issue or submit a pull request.
Happy Coding! 🎉