Skills por Currículo ACM

Roteiro de habilidades para alinhar o catálogo WOKDEX com as disciplinas acadêmicas segundo o referencial ACM CS1–CS3. Cada skill é classificada em três tiers de domínio: Básicas, Desejadas e Avançadas.

Papel na catalogação: use conceitos (skill_nature = concept) para tópicos "ensináveis" e instrumentos (instrument) para algoritmos concretos ou padrões de exercício. Temas de enunciado ficam em context (temático). Os slug em inglês refletem a padronização recomendada no courses.json (acm_level).
Básicas — núcleo mínimo do tópico (obrigatório para concluir o nível)
Desejadas — cobertura padrão da disciplina / bons exercícios de consolidação
Avançadas — aprofundamento, competição ou extensões opcionais

Referência ACM — CS1, CS2, CS3

Visão clássica por nível de progressão curricular; útil para comparar com bibliografia internacional e com o campo acm_level do corpus.json.

CS1 Introdução à programação

Variáveis, fluxo, estruturas básicas, vetores/strings, funções introdutórias, matrizes.

Básicas — núcleo mínimo
  • Raiz basic-programming
  • variables, input-output, selection / condicionais
  • while-loop, for-loop
  • arrays — acesso e percurso simples
Desejadas — consolidação
  • expressoes-precedencia-operadores (ou equivalente de expressões)
  • do-while, nested-loops
  • strings, characters
  • functions — definição, function-parameters, scope-lifetime
  • vetor-varredura-busca-linear
  • matrices
Avançadas (Extra)
  • recursion — introdução leve, sem exigir provas
  • foreach / iteradores (se a linguagem do curso usar)
  • file-handling / E/S em arquivo (opcional por ementa)
CS2 Estruturas e algoritmos básicos

Complexidade, recursão, ordenação, busca, estruturas lineares e hash.

Básicas — núcleo mínimo
  • Notação assintótica / complexity
  • recursion — exemplos clássicos
  • sorting — bubble-sort, selection-sort, insertion-sort
  • binary-search
  • stacks, queues, dynamic-array
Desejadas — consolidação
  • mergesort, quicksort
  • lista — listas encadeadas simples / duplas
  • hashing — mapa / conjunto, colisões (conceito)
Avançadas (Extra)
  • counting-sort, radix-sort, bucket-sort
  • deque / filas especiais
  • Heurísticas de two-pointers-array em vetor ordenado
CS3 Estruturas avançadas e grafos

Árvores de busca, heaps, strings avançadas, grafos e fluxo.

Básicas — núcleo mínimo
  • nonlinear-structures — trees, binary-tree-traversals, bst-operations
  • grafos — representação, BFS, DFS
  • topological-sort (intro)
  • minimum-spanning-tree + union-find-dsu
Desejadas — consolidação
  • tree-rotations-avl / balanceamento (conforme ementa)
  • priority-queue-heap
  • Caminhos mínimos — Dijkstra / Bellman-Ford / Floyd-Warshall
  • SCC, fluxo básico (ford-fulkerson ou equivalente)
  • Ramo paradigms — greedy-algorithms, dynamic-programming introdutórios
Avançadas (Extra)
  • trie-suffix, huffman-coding, lzw-compression
  • segment-tree, fenwick-tree, lazy / persistente
  • centroid-decomposition, emparelhamento / coloração
  • PD em árvore / bitmask / digit-dp como extensão de dynamic-programming

Tópicos × Nível ACM

Visão consolidada de quais tópicos são núcleo (●), reforço/transição (○) ou fora do escopo (—) em cada nível.

Skill / slug CS1 CS2 CS3
🟢 Programação Básica (raiz CS1)
basic-programming — raiz do domínio CS1 ● ○ —
variables — declaração e tipos primitivos ● ○ —
input-output — leitura e escrita padrão ● ○ —
selection — if / else / switch ● ○ —
while-loop ● ○ —
for-loop ● ○ —
arrays — acesso e percurso simples ● ○ —
expressoes-precedencia-operadores ○ — —
do-while ○ — —
nested-loops ○ — —
strings ○ — —
characters ○ — —
functions + function-parameters + scope-lifetime ○ — —
vetor-varredura-busca-linear ○ — —
matrices ○ — —
recursion — introdução leve (extra em CS1) ○ extra ● ○
foreach / iteradores ○ extra — —
file-handling — E/S em arquivo ○ extra — —
🔵 Estruturas e Algoritmos (raiz CS2)
complexity — notação assintótica O(n) — ● ○
sorting — raiz de algoritmos de ordenação — ● ○ linear
bubble-sort — ● —
selection-sort — ● —
insertion-sort — ● —
binary-search — ● ○
stacks — ● ○
queues — ● ○
dynamic-array — ● ○
mergesort — ○ —
quicksort — ○ —
lista — listas encadeadas simples/duplas — ○ ○
hashing — mapa / conjunto, colisões — ○ ●
counting-sort — ○ extra ○
radix-sort — ○ extra ○
bucket-sort — ○ extra ○
deque — ○ extra —
two-pointers-array — ○ extra ○
🟠 Estruturas Avançadas e Grafos (raiz CS3)
nonlinear-structures — raiz do domínio CS3 — — ●
trees — — ●
binary-tree-traversals — — ●
bst-operations — — ●
grafos — representação, BFS, DFS — — ●
topological-sort — — ●
minimum-spanning-tree — — ●
union-find-dsu — — ●
tree-rotations-avl — — ○
priority-queue-heap — — ○
dijkstra — — ○
bellman-ford — — ○
floyd-warshall — — ○
ford-fulkerson — fluxo em redes — — ○
🟣 Paradigmas
greedy-algorithms — ○ ●
dynamic-programming — ○ ●
divide-and-conquer — ○ ○
simulation-ad-hoc — ○ ○
🟡 Avançadas (Extra — CS3)
trie-suffix — — ○ extra
huffman-coding — — ○ extra
segment-tree — — ○ extra
fenwick-tree — — ○ extra
centroid-decomposition — — ○ extra
digit-dp — — ○ extra
dp-bitmask — — ○ extra
lzw-compression — — ○ extra

● = núcleo do nível  |  ○ = reforço ou transição  |  — = fora do escopo principal. O detalhe por slug (Básicas / Desejadas / Avançadas) está nos cartões acima.

Todos os Slugs por Nível

Lista completa de slug para uso nos campos skills[] dos exercícios WOKDEX.

CS1

Introdução à programação

Básicas
basic-programming variables input-output selection while-loop for-loop arrays
Desejadas
expressoes-precedencia-operadores do-while nested-loops strings characters functions function-parameters scope-lifetime vetor-varredura-busca-linear matrices
Avançadas
recursion foreach file-handling
CS2

Estruturas e algoritmos básicos

Básicas
complexity recursion sorting bubble-sort selection-sort insertion-sort binary-search stacks queues dynamic-array
Desejadas
mergesort quicksort lista hashing
Avançadas
counting-sort radix-sort bucket-sort deque two-pointers-array
CS3

Estruturas avançadas e grafos

Básicas
nonlinear-structures trees binary-tree-traversals bst-operations grafos topological-sort minimum-spanning-tree union-find-dsu
Desejadas
tree-rotations-avl priority-queue-heap dijkstra bellman-ford floyd-warshall ford-fulkerson greedy-algorithms dynamic-programming
Avançadas
trie-suffix huffman-coding lzw-compression segment-tree fenwick-tree centroid-decomposition digit-dp dp-bitmask