mcpField
C
computer-science-tutor

computer-science-tutor

github.com/szeyu開発3088 回インストール2 日前に更新
リポジトリ

computer-science-tutor について

computer-science-tutor は、コンピューターサイエンスの学習、問題解決、ノート作成を支援するスキルです。アルゴリズムの手順、定番パターン、コードテンプレート、計算量の資料をまとめています。

主な機能

  1. 01アルゴリズムとデータ構造を網羅
  2. 02問題解決の手順を提示
  3. 03よく使う問題解決パターンを整理
  4. 04BFS、DFS などのコードテンプレート
  5. 05データ構造操作の計算量を参照

活用シーン

  1. 01アルゴリズム問題を解き、解法を改善
  2. 02代表的なアルゴリズムパターンの復習
  3. 03グラフアルゴリズム実装時のテンプレート参照
  4. 04データ構造ごとの操作計算量の比較

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/szeyu/vibe-study-skills --skill computer-science-tutor

インストール後、Claude Code で/computer-science-tutorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
algorithms.md
big-o.md
data-structures.md

詳細

コンピュータサイエンス科目エキスパート

コンピュータサイエンスの学習、問題解決、ノート作成のための専門知識。

トピックの範囲

mindmap
  root((Computer Science))
    Algorithms
      Sorting
      Searching
      Graph Algorithms
      Dynamic Programming
    Data Structures
      Arrays & Lists
      Trees & Graphs
      Hash Tables
      Heaps & Queues
    Systems
      Operating Systems
      Networks
      Databases
    Theory
      Complexity
      Automata
      Computability

クイックリファレンスリンク


図のパターン

アルゴリズムのフローチャート
flowchart TB
    A[Start] --> B{Condition?}
    B -->|Yes| C[Process A]
    B -->|No| D[Process B]
    C --> E[End]
    D --> E
データ構造の可視化
graph TB
    subgraph "Binary Search Tree"
        A((8)) --> B((3))
        A --> C((10))
        B --> D((1))
        B --> E((6))
        C --> F((14))
    end
シーケンス図 (API/プロセス)
sequenceDiagram
    Client->>Server: Request
    Server->>Database: Query
    Database-->>Server: Results
    Server-->>Client: Response

問題解決のフレームワーク

アルゴリズム設計の手順
  1. 理解 - 入力、出力、制約を明確にする
  2. 例 - 2〜3 個の例を手作業で解いてみる
  3. 力任せ法 - まず明白な O(n²) または O(n!) の解法から始める
  4. 最適化 - パターン (二本指、スライディングウィンドウなど) を適用する
  5. 実装 - クリーンでモジュール化されたコードを書く
  6. テスト - エッジケース (空、単一要素、重複)
よく使うパターン
パターン使用する場面例
二本指ソート済み配列、ペアの探索Two Sum (ソート済み)
スライディングウィンドウ連続する部分配列最大和部分配列
ハッシュマップO(1) の検索が必要Two Sum (未ソート)
BFS最短経路 (重みなし)迷路の解法
DFSすべての経路の探索順列
二分探索ソート済みデータ、要素の探索回転配列の探索
動的計画法部分問題の重複フィボナッチ、ナップサック

コードテンプレートのパターン

二分探索
def binary_search(arr, target):
    left, right = 0, len(arr) - 1
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1  # Not found
BFS テンプレート
from collections import deque

def bfs(start, target):
    queue = deque([start])
    visited = {start}
    while queue:
        node = queue.popleft()
        if node == target:
            return True
        for neighbor in get_neighbors(node):
            if neighbor not in visited:
                visited.add(neighbor)
                queue.append(neighbor)
    return False
DFS テンプレート
def dfs(node, visited):
    if node in visited:
        return
    visited.add(node)
    # Process node
    for neighbor in get_neighbors(node):
        dfs(neighbor, visited)

計算量クイックリファレンス

操作配列連結リストハッシュテーブルBST (平均)
アクセスO(1)O(n)O(1)O(log n)
検索O(n)O(n)O(1)O(log n)
挿入O(n)O(1)O(1)O(log n)
削除O(n)O(1)O(1)O(log n)

コメント