File size: 2,744 Bytes
1b83e76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
export interface TaskMeta {
  topic: string;
  difficulty: "easy" | "medium" | "hard";
  tier: "beginner" | "intermediate" | "advanced";
}

// Mirrors explainer_env/task_bank.py. The env's /reset chooses a random topic
// unless a selected row sends a topic hint.
export const TASKS: TaskMeta[] = [
  { topic: "Linear Regression", difficulty: "easy", tier: "beginner" },
  { topic: "Gradient Descent", difficulty: "easy", tier: "beginner" },
  { topic: "Decision Trees", difficulty: "easy", tier: "beginner" },
  { topic: "K-Means Clustering", difficulty: "easy", tier: "intermediate" },
  { topic: "Backpropagation", difficulty: "medium", tier: "intermediate" },
  {
    topic: "Convolutional Neural Networks",
    difficulty: "medium",
    tier: "intermediate",
  },
  { topic: "Attention Mechanism", difficulty: "medium", tier: "intermediate" },
  { topic: "Batch Normalization", difficulty: "hard", tier: "advanced" },
  { topic: "Variational Autoencoders", difficulty: "hard", tier: "advanced" },
  {
    topic: "Reinforcement Learning Basics",
    difficulty: "easy",
    tier: "beginner",
  },
  { topic: "Fourier Transform", difficulty: "medium", tier: "intermediate" },
  {
    topic: "Eigenvalues and Eigenvectors",
    difficulty: "medium",
    tier: "intermediate",
  },
  { topic: "Taylor Series", difficulty: "easy", tier: "beginner" },
  { topic: "Bayes' Theorem", difficulty: "easy", tier: "beginner" },
  {
    topic: "Gradient and Directional Derivatives",
    difficulty: "medium",
    tier: "intermediate",
  },
  {
    topic: "Matrix Multiplication as Linear Transformation",
    difficulty: "easy",
    tier: "beginner",
  },
  { topic: "Central Limit Theorem", difficulty: "medium", tier: "intermediate" },
  {
    topic: "Singular Value Decomposition",
    difficulty: "hard",
    tier: "advanced",
  },
  { topic: "Merge Sort", difficulty: "easy", tier: "beginner" },
  { topic: "Binary Search", difficulty: "easy", tier: "beginner" },
  { topic: "Dijkstra's Algorithm", difficulty: "medium", tier: "intermediate" },
  { topic: "A* Search Algorithm", difficulty: "medium", tier: "intermediate" },
  { topic: "Quick Sort", difficulty: "easy", tier: "beginner" },
  {
    topic: "Exploratory Data Analysis",
    difficulty: "easy",
    tier: "beginner",
  },
  { topic: "Hypothesis Testing", difficulty: "medium", tier: "intermediate" },
  {
    topic: "Principal Component Analysis",
    difficulty: "medium",
    tier: "intermediate",
  },
];

export const RANDOM_TASK = "(random)";

export function taskLabel(t: TaskMeta): string {
  return `${t.topic}  [${t.difficulty}, ${t.tier}]`;
}

export function taskTopic(label: string): string | undefined {
  return TASKS.find((task) => taskLabel(task) === label)?.topic;
}