Tecnicas Computacionais
Esta é a pagina principal de um curso de tecnicas computacionais sendo ministrado em 2019 no IPRJ/UERJ, de utilidade geral para a formacao de programadores de nivel intermediario e avancado, principalmente nos campos de computacao cientifica e multimidia (jogos, simuladores,etc). Trata-se de uma disciplina de nivelamento. Disciplinas mais avancadas sao tratadas em PP.
Informacoes Gerais
- Instrutor: prof. Ricardo Fabbri
- Periodo: 1o. Semestre de 2019, voltado ao 1o. periodo do Mestrado em Modelagem Computacional - Capes 6
- Horario: Tercas e Quintas, 9:40-11:30am, sala 206. Reposicao: 29Abr19, 6Mai19, 20Mai19, todos M3-M6 (8:50-12:20) sala 110
- Lista de emails: iprj-tc-2019@googlegroups.com
Pre-requisitos
- Teorico: Nenhum. Familiaridade com programacao sera assumida. Porem, trata-se de um curso intensivo.
- Pratico: Linux devera ser instalado no computador do aluno. Ajuda devera ser procurada com o professor.
Conteudo aproximado
Recursos Principais
Bibliografia
Livros Principais
- Parte 1: The ANSI-C programming language, de Kernighan & Ritchie
- Parte 2: "Algorithm Design" - Jon Kleinberg & Eva Tardos
- O Autor desenvolveu ideias das mais famosas relacionados ao PageRank do Google [1]
Outros Livros
Top Coder
- Inicie em http://community.topcoder.com/tc
- Clique em "Register Now" ou "Login"
- Clique em O(n) no canto superior esquerdo para iniciar a Arena
- No ubuntu linux, abra o nautilus (navegador de arquivo) no diretorio onde foi baixado o ContestAppletProd.jnlp
- Clique no ContestApplestProd.jnlp com o botao direito do mouse, e selecione "abrir com Java Webstart" ou "Iced Tea"
- Caso nao tenha essa opcao, instale os pacotes iced-tea* usando o synaptic ou outro gerenciador de pacotes
- Faca o Login
- Selecione Practice Rooms -> SRMs -> problemas Div 1. Os Div 2 sao mais dificeis e deixe-os para depois.
- Mais informacoes em Topcoder Quickstart Tutorial
- Meu template C++ para o topcoder: http://sourceforge.net/p/labmacambira/utils/ci/master/tree/templates/topcoder/a.cc
- Veja tambem os Editoriais, em que os melhores programadores explicam as solucoes de alguns SRM's e outras competicoes
Aulas
Os seguintes videos sao versoes resumidas do conteudo tratado em aula e nao substituem as aulas.
Provas
- P1: 23Mai19
- P2: 11Jul19
Recursos adicionais
Tarefas
Somente serao aceitos arquivos eletronicos no formato PDF
Todo material submetido eletronicamente deve ser enviado ao email do professor, com a string "[iprj-tc]" no subject do email. Voce devera receber uma confirmacao automatica.
A cada data de entrega (exceto a primeira tarefa) ate 3 alunos serao sorteados para apresentar.
Tarefa 1: Entrega dia 4/Abril/2019
- K&R 1-1, 1-4, 1-5 (se conseguir Tarefa 2 completa, ganha 10 nesta sem precisar fazer)
Tarefa 2: Entrega dia 9/Abril/2019
- K&R 1-13 (horizontal), 1-13 (vertical)
Tarefa 3: Entrega dia 11/Abril/2019
- K&R 1-17, 1-19
Tarefa 4: Entrega dia 16/Abril/2019
- K&R 1-20, 1-21, 1-23 (se fizer apenas 1-23 ja ganha 10).
Tarefa 5: Inversao de matrizes, Entrega dia 25/Abril/2019
- Dada uma matriz nxn, com n <= 4, calcule sua inversa de forma explicita
- Bonus: utilize uma biblioteca e compare a velocidade com seu proprio codigo
Simulado presencial: 30/Abril/2019
- Dois dos exercicios das tarefas 1-4
- Em laboratorio (nao usando computador do aluno)
Trabalho: Parte 1 valendo bonus, dia 2/Maio/2019, Parte2 completo 7/Maio/2019
- Dado um labirinto na forma de uma matriz, onde os caminhos sao formados por espaco ' ',
e as paredes do labirindo sao formadas pela letra 'a' ou '8' conforme abaixo, e dada uma entrada e uma saida marcadas por espaco ' ' ou na parede de cima do labirinto, ou na parede de baixo, resolva o labirinto ou retorne 0 caso nao exista um caminho. Note que tanto as paredes ou os caminhos podem ter largura maior que 1 caractere.
- A parte 2 do trabalho valera nota e devera ser entregue 1 semana apos a parte 1. A parte 1 eh apenas bonus para incentivar o aluno a resolver o problema com ideias proprias.
- Sera dado um grande bonus.
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a 8 8 8 8 8 8 8 8 8 aaaaaaaaa 8 aaaaa aaaa8aaaa aaaa8 aaaaa aaaaa 8 8 8 8 8 8 8 8 8 8 8 8 8aaaaaaaa a 8aaaaaaa8 8aaaaaaaa 8aaaa a 8 8 8aaaaaaa8 8 8 8 8 8 8 8 8 8 8 8 8 8 a 8aaa8aaaaaaaa a 8 aaaaaaaa8 8aaa8 8 8aaaaaaaa 8 8 8 8 8 8 8 8 8 8 8 8 8 8aaaaaaaaaaaa 8aaa8 8aaaa 8 aaaaa 8aaaaaaaa 8 aaaa8 8 8 8 8 8 8 8 8 8 8 8 8 aaaaa 8aaaa 8 8aaaa 8 8aaaaaaa8 a a 8 8aaaaaaaaaaa8 8 8 8 8 8 8 8 8 8 8 8 8 8aaaaaaa8aaaa 8 8 8 aaaa8aaaa 8 aaaa8 8 8aaaa 8aaaa 8 8 8 8 8 8 8 8 8 8 8 8 aaaaa 8 8aaaaaaaa 8aaaa 8 8aaaa 8aaa8 aaaa8aaaaaaaa 8 8 8 8 8 8 8 8 8 8 8 8 8 aaaa8aaaa a 8aaaa aaaa8aaaa 8 8 8aaaaaaaaaaaa 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8aaaaaaaa 8 8 8 8aaa8 8aaaaaaa8 aaaaaaaaa 8 8aaaaaaa8 8 8 8 8 8 8 8 8 8 8 8 8 aaaa8 8aaa8 aaaaa 8aaaaaaaa 8aaa8 a 8aaaaaaaa a 8 8 8 8 8 8 8 8 8 8aaaaaaaaaaaaaaaaaaa8aaaaaaaaaaa8aaaaaaaaaaaaaaa8aaaaaaaaaaaaaaa8aaa8
Outras tarefas (ainda nao agendadas)
Tarefa - Busca Binaria
- Implementar busca binaria de um vetor ordenado de floats
- Utilizar apenas linguagem C e sua propria implementacao
- Bonus: implementar em C++ usando a biblioteca padrao
Tarefa - Ordenacao
- Implementar o mergesort, o quicksort e o insertion sort
- Plotar grafico do tempo de execucao minimo, maximo, e medio para diferentes tamanhos de entradas aleatoreas
Bonus
Bonus FriScience
Bonus Vim/Emacs
- Aluno que aprender ou ja souber editores de programador Vim/Emacs
- Aluno que entregar tarefas em Latex.
Criterio de Avaliacao
M_p = (P1 + P2)/2 M = 0.7*M_p + 0.3*T
Palavras-Chave
Programacao, Computacao Cientifica, Linguagem C, Algoritmos e Estruturas de Dados para Pos Graduacao