title |
---|
Visão Geral e Dicas |
Informações que irão auxiliá-lo a cursar bem a disciplina e a compreender sua importância para o curso.
- Paradigma Imperativo
- Sistemas de tipos
- Encapsulamento de dados
- Estruturas de controle
- Entrada e saída de dados
- Mecanismos de modularização
- Mecanismos de concorrência
- Controle de exceção
- Paradigma Funcional
- Paradigma Lógico/Declarativo
- Paradigma Orientação a objetos
- Classes e heranças
- Heranças simples e múltiplas
- Resolução de conflitos de heranças
- Paradigma Híbrido
- Funcional orientado a objetos
- Lógico orientado a objeto
A disciplina envolve tanto aspectos teóricos, quanto práticos. A teoria é ministrada em aulas expositivas e avaliada através de três provas escritas, uma para cada paradigma visto (imperativo, funcional e lógico). Essas provas envolvem não somente os conceitos teóricos, mas também escrita e correção de código. Já a parte prática é ministrada em aulas de laboratório e envolve dois tipos de atividades avaliativas: as práticas e o projeto.
As práticas são conjuntos de questões (semelhantes às encontradas no CodeForces ou URI) que os alunos devem resolver durante uma aula de laboratório utilizando a linguagem sendo estudada no estágio (C/C++, Haskell ou Prolog). Já o projeto é feito em grupo, com funcionalidades definidas pelo próprio grupo (em acordo com os professores), que deve ser implementado nas três linguagens vistas ao longo do período.
Além de introduzir novos conceitos e maneiras de programar, a disciplina contribui para que os alunos possam perceber, que mesmo que todas as linguagens de programação sejam capazes de resolver os mesmos problemas, sua escolha impacta profundamente o desenvolvimento. Vale salientar que o contato com esses novos paradigmas não são tão comuns durante a graduação e que contribuem para a formação do cientista da computação.
-
Durante a disciplina, você pode precisar aprender até 3 linguagens de programação novas, então evite pagar outras disciplinas no mesmo período que também precisem que você aprenda novas linguagens.
-
O cronograma para entrega dos projetos nunca é tão longo quanto parece. Faça o possível para iniciar a implementação seguinte o mais breve possível após cada entrega.
-
Não escolha projetos excessivamente complexos. Para mostrar que você compreende os novos paradigmas de programação a que foi inserido não basta fazer uma calculadora simples, mas também não é necessário lançar o próximo foguete à lua.