Skip to content

Latest commit

 

History

History
158 lines (101 loc) · 8.66 KB

BixeCamp.md

File metadata and controls

158 lines (101 loc) · 8.66 KB

Orientações sobre o BixeCamp e Simulado dos Bixos

Este documento versa sobre a estrutura do BixeCamp e do Simulado dos Bixos.

BixeCamp

O BixeCamp é um curso introdutório oferecido anualmente pelo MaratonUSP. O curso é oferecido no primeiro semestre e é nossa principal forma de captação de membros para o grupo, assim como meio de divulgação entre os calouros.

Princípios

O BixeCamp tem alguns objetivos principais:

  • Introduzir os ingressantes à programação competitiva, sem assumir qualquer conhecimento prévio;

  • Tornar os alunos e alunas suficientemente independentes para poderem participar das atividades do grupo;

  • Divulgar o MaratonUSP e suas atividades entre os ingressantes;

  • Introduzir os alunos do segundo ano nas atividades administrativas do grupo.

Organização

Para cumprir com os objetivos propostos e garantir a continuidade do grupo, o BixeCamp deverá sempre que possível ser organizado pelos ingressantes do ano anterior. No geral, deve-se envolver o maior número possível de membros novos de forma a não se opor às restrições propostas nesse documento.

Normalmente o BixeCamp é coordenado por uma comissão de ingressantes. Entre as obrigações dessa comissão estão:

  • Organizar o conteúdo programático do BixeCamp;

  • Recrutar professores principais e auxiliares;

  • Acompanhar o curso, prezando pela retenção dos ingressantes e a qualidade da atividade;

  • Estar presente na reunião de feedback do BixeCamp ao final do semestre.

Professores

Há dois tipos de professores que compoẽm uma aula do BixeCamp. O professor principal é responsável por preparar a aula, a lista de exercícios e lecionar a aula. O professor auxiliar, quando veterano, deve prezar pela qualidade da aula (como tópicos indispensáveis a serem abordados ou o que não fazer) e dar orientações ao professor principal. Quando novato, o professor auxiliar deve debater com o veterano sobre a preparação, para que o mesmo possar dar essa mesma aula no futuro.

A lista de exercícios (ou outros meios de praticar o conteúdo visto em aula) é parte fundamental do aprendizado no BixeCamp, o professor principal também possui por responsabilidade auxiliar os alunos após a aula com as atividades. É interessante que além deste sejam definidos outros responsáveis por acompanhar a turma no momento dos exercícios, de maneira que fiquem à disposição para eventuais dúvidas e que ativamente de tempos em tempos verifiquem se existe algo em que possam ajudar.

Estrutura

O BixeCamp normalmente consiste de 10 a 12 aulas, sendo duas delas dedicadas ao simulado dos bixos. Aqui detalhamos uma possível estrutura para o BixeCamp, que é modular, cada ano podem haver alterações desde que baseiam-se no proposto a seguir.

No que segue estão as descrições do conteúdo programático das aulas. Conteúdos opcionais devem ser decididos pela comissão do BixeCamp. Em cada conteúdo teremos três recomendações dispostas da seguinte maneira

(professor principal, professor auxiliar, lista de exercícios)

Conteúdos Obrigatórios (10 semanas: 8 fixas + 2 flexíveis)

  • Introdução, tópicos básicos de C++ (professor VETERANO, auxiliar bixo, livre)

    • Entrada e saída;
    • Tipos básicos (sem string) e operações;
    • Condicionais;
    • Loops.
  • Vetores, matrizes, funções (livre, auxiliar veterano, mashup em duplas/trios)

    • Soma prefixos;
    • Vetor de frequência;
    • Vetor de update (SPOJ: updateit);
    • Básico de strings.
  • Recursão, complexidade e ordenação (professor veterano, auxiliar bixo, mashup em duplas/trios)

    • Fibonacci;
    • Falar sobre constantes;
    • Ordenação de vetor e sua complexidade.
  • Busca binária e STL1 (livre, auxiliar veterano, lista)

    • Busca binária normal e na resposta;
    • Vector (+ lower bound, upper bound e find);
    • Revisão para simulado.
  • Simulado dos bixos

  • Revisão do simulado + tópico adicional

  • Gulosos e STL2 (livre, auxiliar veterano, lista)

    • Gulosos (cobertura de pontos, deadline, salas, …);
    • Pilha, fila;
    • Map, set;
    • Fila de prioridade (opcional).
  • Introdução à grafos (livre, livre, livre)

    • Conceitos básicos;
    • Representação computacional;
    • DFS.
  • Introdução à programação dinâmica (livre, livre, livre)

    • Fibonacci (como recursão e como PD);
    • Troco exato (Moedas);
    • Mochila;
    • Problemas de combinatória (opcional).
  • Tópico Opcional + Como treinar / Próximos passos (professor VETERANO, livre, lista)

Orientações

Mashup: O mashup deve ser uma lista convertida em contest no Vjudge, mas os veteranos devem intervir ativamente nos grupos, perguntando e oferecendo ajuda. O objetivo não é que os veteranos formem times com os ingressantes, e sim tornar a atividade mais divertida. É uma lista em grupo, não um contest pra valer.

VETERANO: Competidor experiente, de preferência que tem facilidade com grandes grupos (primeira aula).

Evite abstrações nas aulas, dando ênfase em resolver problemas sobre o assunto e mostrar como esse se aplica na prática em código, destacando também a análise de complexidade das soluções. Especial cuidado para o uso do Linux (não precisa ter uma aula dedicada, mas o básico é legal explicar na aula introdutória) e do C++, principalmente quando a disciplina de Introdução à Computação estiver sendo ministrada em outra linguagem (dividir a aula introdutória em duas pra diluir mais o conteúdo pode ser uma boa).

Conteúdos Opcionais (até 3)

  • BFS e Dijkstra (livre, livre, livre)
  • Bitset e PD com bitset (livre, livre, livre)
  • Two pointers e outros problemas clássicos (livre, livre, livre)
  • Introdução à geometria (livre, livre, livre)
    • Explicar o conceito de biblioteca e caderninho;
    • Ponto;
    • Produto interno e vetorial;
    • Área de polígono/pertencimento ao polígono;
    • Na lista, utilize alguns exercícios de library checker.
  • Introdução à teoria dos números
  • Contest final, simulado 2

Conteúdos Vetados

  • Conteúdos de listas médias e avançadas.
    • Exemplo: Segtree.

Exemplo: BixeCamp2023

  • Aula 1 : Introdução, tópicos básicos de C++
  • Aula 2 : Vetores, matrizes, funções
  • Aula 3 : Recursão, complexidade e ordenação
  • Aula 4 : Busca binária e STL1
  • Aula 5 : Gulosos e STL2
  • Aula 6 : Simulado dos bixos
  • Aula 7 : Introdução à grafos
  • Aula 8 : BFS e Dijkstra
  • Aula 9 : Introdução à programação dinâmica
  • Aula 10 : Two pointers e outros problemas clássicos
  • Aula 11 : Introdução à geometria + Como treinar / Próximos passos

Note que o conteúdo não segue as normas dispostas pois decisões foram tomadas baseadas no feedback do mesmo.

Listas e exemplos de planos de aula

O site do MaratonUSP contém diversas listas passadas que podem servir de base para as próximas, inclusive com as listas dos BixeCamps passados.

No geral, a primeira aula deve maximizar o número de exercícios em português e minimizar o número de sites que os alunos precisam registrar. No geral, o melhor é manter entre o NEPS e o Vjudge. O NEPS contém diversos exercícios em português e o Vjudge agrega diversos sites vitais.

Por outro lado, é melhor evitar sites como LiveArchive e UVA devido a sua instabilidade.

Recomenda-se que os primeiros exercícios da lista sejam de aplicação direta do conteúdo visto em aula, ou até mesmo exercícios que foram já feitos na própria aula. A dificuldade deve ser gradual nos demais, é interessante priorizar exercícios com ideias legais e que podem ser úteis em outros contextos.

No futuro pretendemos ter planos de aula base para cada aula. Entretanto, já existem alguns materiais no drive do MaratonUSP nesse sentido, como os roteiros neste link.

Simulado dos bixos

O simulado dos bixos ocorre no contexto do BixeCamp. O objetivo é mostrar aos alunos como a maratona de programação se parece. Para tal, o simulado segue o modelo ICPC. No dia são distribuídos balões e prêmios. O simulado dos bixos já se mostrou uma forma efetiva de manter e cativar os alunos para maratona de programação.

No geral, o coach ou algum veterano irá coordenar a prova. Uma recomendação é que as questões mais fáceis da prova não cobrem strings. Muitos alunos não dominam o C++ e muitos vem pelos pontos extras em outras disciplinas, é interessante garantir que os problemas aceitem soluções em outras linguagens (em especial a que está sendo utilizada em IntroComp no semestre). No geral, os alunos são bons em matemática e têm dificuldade com questões que exigem análise da complexidade.