Tópicos Especiais em Sistemas de Programação II: Desafios de Programação (TCC-00.254)
horários das aulas: quintas de 14:00 às 18:00h no laboratório 306
Objetivos
A disciplina Desafios de Programação tem como objetivo o treinamento de talentos para a participação em competições de programação. A manutenção da cultura de treino e participação de discentes nessas competições é ao mesmo tempo benéfica para o desenvolvimento técnico dos discentes envolvidos, quanto estratégica para o fortalecimento do curso de Bacharelado em Ciência da Computação da UFF. Os alunos que se destacarem na preparação serão convidados a representar a UFF nessas competições.
Tópicos Abordados
- Introdução à Olimpíada Brasileira de Informática e a Maratona de Programação da SBC;
- Introdução ao uso de juízes on-line;
- Linguagens
Python
, C/C++
e Java
: vantagens e desvantagens do uso de cada delas durante as competições; e
- Conceitos básicos aplicados à solução de problemas nos temas:
- Estruturas de dados elementares;
- Manipulação de Strings;
- Algoritmos de ordenação;
- Aritmética e álgebra;
- Análise combinatória;
- Teoria dos números;
- Algoritmos em grafos; e
- Programação dinâmica.
Critério de avaliação
O sistema de avaliação da disciplina consiste na realização de três provas (P1, P2 e P3), valendo 4 pontos cada uma.
Sejam as médias M = P1 + P2 + P3, calculada a partir das notas anteriormente citadas, e MF a nota que consta no histórico escolar do discente.
Se M ≥ 6.0, o aluno será aprovado e MF será igual a M.
Senão, se M < 4.0, o aluno será reprovado com MF igual a M.
Caso contrário, o discente fará uma verificação suplementar (VS), com data e horário pré-estabelecidos, respeitando-se o prazo de, no mínimo, três dias úteis após a divulgação de M. As provas serão realizadas nos horários de aula.
Literatura básica
- S. Halim et al., Competitive Programming, Third Edition, Lulu, 2013.
- S.S. Skiena e M.A. Revilla, Programming challenges: The programming contest training manual, Springer, 2006.
- T.H. Cormen, C.E. Leiserson e R.L. Rivest, Introduction to algorithms, McGraw-Hill, 2009.
Horários de Monitoria
- Fernando Costa Rodrigues (
fernandocr@id.uff.br
): quintas de 14:00 às 18:00h.
Aulas ministradas
15/03/18
- Apresentação do curso: objetivos, tópicos a serem apresentados, critério de avaliação a ser empregado e literatura utilizada;
- Slides referentes a aula de introdução;
- Uso do URI judge online; e
- Exercícios do URI feitos em sala de aula: 1018, 1144, 1158, 1160, 1534 e 1557.
- Datas das provas:
- P1: 24/05/18
- P2: 14/06/18
- P3: 28/06/18
- VR: 05/07/18
- VS: 12/07/18
22/03/18
- Slides sobre problemas triviais;
- Uso do UVa judge online; e
- Exercícios do UVa feitos em sala de aula: 100, 272, 10189 e 10267.
05/04/18
- Slides sobre problemas ad-hoc; e
- Torneio com exercícios do URI: 1031, 1103, 1171, 1318, 1514 e 1533.
12/04/18
- Slides sobre estruturas de dados lineares; e
- Torneio com exercícios do URI: 1068, 1077, 1256, 1861 e 2406.
19/04/18
- Slides sobre estruturas de dados não lineares; e
- Torneio com exercícios do URI: 1340, 1430, 1449, 1863 e 2496.
26/04/18
- Slides sobre strings; e
- Torneio com exercícios do URI: 1120, 1222, 1257, 2017 e 2035.
03/05/18
- Slides sobre ordenação; e
- Torneio com exercícios do URI: 1023, 1088, 1244, 1252, 1303 e 1388.
10/05/18
- Slides sobre aritmética; e
- Torneio com exercícios do URI: 1022, 1028, 1193, 1307, 1390 e 1398.
17/05/18
- Slides sobre análise combinatória; e
- Torneio com exercícios do URI: 1323, 1536, 1537, 1644 e 1722.
18/05/18 (torneio de 72 horas com exercícios do URI: 1029, 1503, 1683, 1726, 1740, 2088, 2118 e 2169)
22/05/18 (torneio de 72 horas com exercícios do URI: 1083, 1105, 1237, 1313, 1669, 2251, 2485 e 2546)
24/05/18 (P1 de 14:00 às 18:00h no laboratório 306)
25/05/18 (torneio de 72 horas com exercícios do URI: 1107, 1243, 1285, 1301, 1610, 1632, 1855 e 2240)
29/05/18 (torneio de 72 horas com exercícios do URI: 1138, 1290, 1327, 1328, 1413, 1434, 1806 e 1931)
01/06/18 (torneio de 72 horas com exercícios do URI: 2659, 2660, 2661, 2662, 2664, 2666, 2667 e 2670)
05/06/18 (torneio de 72 horas com exercícios do URI: 1744, 1745, 1746, 1749, 1750, 1751, 1752 e 1808)
07/06/18
- Slides sobre teoria dos números; e
- Torneio com exercícios do URI: 1380, 1381, 1694, 1754, 2066 e 2180.
08/06/18 (torneio de 72 horas com exercícios do URI: 1317, 1339, 2177, 2181, 2186, 2238, 2242 e 2246)
12/06/18 (torneio de 72 horas com exercícios do URI: 1279, 1444, 1580, 1776, 1904, 2063, 2145 e 2589)
14/06/18 (P2 de 14:00 às 18:00h no laboratório 306)
15/06/18 (torneio de 72 horas com exercícios do URI: 1894, 1896, 1897, 1898, 1899, 1900, 1902 e 1903)
19/06/18 (torneio de 72 horas com exercícios do URI: 2174, 2175, 2178, 2179, 2182, 2183, 2184 e 2185)
21/06/18
- Slides sobre grafos; e
- Torneio com exercícios do URI: 1738, 1764, 1835, 2688 e 2725.
22/06/18 (torneio de 72 horas com exercícios do URI: 1737, 1798, 1799, 1800, 1928, 2087, 2550 e 2768)
28/06/18 (P3 de 14:00 às 18:00h no laboratório 306)
05/07/18 (VR de 14:00 às 18:00h no laboratório 306)
06/07/18 (Divulgação das notas finais)