CLI tool for practicing data structures and algorithms using spaced repetition.
Project description
Data Structures and Algorithms Practice (DSAP)
DSAP is a terminal-first CLI that schedules coding interview problems using the SM-2 spaced repetition algorithm,
helping you retain patterns long-term instead of forgetting them after solving once.
Why DSAP?
Most developers preparing for technical interviews solve algorithm problems once and never revisit them.
As a result, they forget patterns they previously learned.
DSAP solves this by scheduling problems using spaced repetition, a learning technique proven to improve
long-term memory.
Benefits:
- Retain algorithm patterns long-term
- Structured daily practice
- Automatic scheduling of reviews
- Focus on problems you’re about to forget
Instead of guessing what to practice next, DSAP tells you exactly what to review.
Installation
# Recommended
uv tool install dsap-cli
# Alternatives
pipx install dsap-cli
pip install dsap-cli
Verify installation:
dsap --version
Quick Start
# Load problems and set focus
dsap load blind75
dsap config preferred_set blind75
# Start practicing
dsap next
For the full workflow see:
USER_GUIDE.md
Example Session
$ dsap next
Next Problem
Two Sum (Easy)
Category: Arrays
Set: Blind 75
Open problem in browser? [y/N]
After solving, rate your recall:
5 - Perfect
4 - Good
3 - Hard
2 - Incorrect but remembered idea
1 - Incorrect
0 - Complete blackout
DSAP then schedules the next review automatically.
Commands
| Command | Description |
|---|---|
dsap next |
Get next recommended problem |
dsap review |
Review due problems in a session |
dsap list |
List problems with filters |
dsap stats |
View progress and statistics |
dsap load |
Load curated problem sets |
dsap config |
Manage configuration |
dsap reset |
Reset problems and/or progress |
dsap add |
Add a custom problem |
Examples
# Filter by problem set
dsap next --set blind75
dsap review --set neetcode150
# Filter by difficulty
dsap next --difficulty Easy
dsap list --difficulty Hard
# Filter by category
dsap list --category "Dynamic Programming"
# Other options
dsap review --limit 5
dsap next --new-only
dsap list --due
# Reset progress
dsap reset --progress
# Reset a specific set
dsap reset --set blind75 --all
Problem Sets
| Set | Problems | Description |
|---|---|---|
blind75 |
75 | Core interview essentials |
neetcode150 |
150 | Comprehensive curriculum |
grind75 |
75 | Flexible study roadmap |
dsap load --list
dsap load blind75
dsap load ./custom.yaml
Configuration
dsap config --list
dsap config preferred_set blind75
dsap config daily_goal 5
dsap config preferred_difficulty Medium
dsap config auto_open_browser false
dsap config --reset
| Setting | Default | Description |
|---|---|---|
preferred_set |
None | Default problem set |
daily_goal |
5 | Target problems per day |
preferred_difficulty |
None | Filter by difficulty |
show_hints |
true | Show problem hints |
auto_open_browser |
true | Open problems in browser |
How It Works
DSAP implements the SM-2 (SuperMemo 2) spaced repetition algorithm.
After solving each problem, rate your recall from 0–5.
| Rating | Meaning | Effect |
|---|---|---|
| 5 | Perfect | Interval grows |
| 4 | Good | Interval grows |
| 3 | Hard | Interval grows slowly |
| 0-2 | Forgot | Interval resets |
Typical interval progression:
1 day → 6 days → 15 days → 38 days → 95 days
After several successful reviews, problems reappear only every few months.
Data Storage
DSAP stores all data locally:
~/.dsap/
├── dsap.db
└── config.json
To completely uninstall:
uv tool uninstall dsap-cli
rm -rf ~/.dsap
Development
git clone https://github.com/juma-paul/dsap-cli.git
cd dsap-cli
uv sync --all-extras
uv run pytest
Changelog
See the full release history in:
License
This project is open source and available under the MIT License.
Built with Python, Click, Rich, Pydantic, and SQLite.
If you found this helpful, consider giving it a star
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dsap_cli-1.0.0.tar.gz.
File metadata
- Download URL: dsap_cli-1.0.0.tar.gz
- Upload date:
- Size: 2.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5d0450225df0a75a2deeefc51a00e55d4f5084ef98b27e7904a560aee067c35
|
|
| MD5 |
bcf4701ed7ac98fc306a4fbedad7da49
|
|
| BLAKE2b-256 |
508a34adc9d436501b7c38e7d09fee18e60782b6f0efe7708e7e9cdf80c204c1
|
File details
Details for the file dsap_cli-1.0.0-py3-none-any.whl.
File metadata
- Download URL: dsap_cli-1.0.0-py3-none-any.whl
- Upload date:
- Size: 42.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46e006b7a87e504f1f9aec96ac74acc0c2e197c77857152d15045633edb74885
|
|
| MD5 |
89b1e57d5005e30b07729b4af91bf2d4
|
|
| BLAKE2b-256 |
426d3b24daea9391a3b26d189c39141486ba3825217a3000a77c14b54cb49e3a
|