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
  • sortingbubble-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-structurestrees, 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 paradigmsgreedy-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