Trabalho final para a disciplina de Engenharia de Computação
Trabalho final para a disciplina de Linguagem de Programação Problemática Realizando uma pesquisa interna em uma instituição de ensino foi percebido que o seguinte processo é realizado: • Ao final de cada semestre os coordenadores de cursos realizam o levantamento das turmas e disciplinas que serão ministradas no semestre vindouro. • Após, verificam a disponibilidade de cada professor: turno, horários preferencias e restrições. • Em seguida, são elaboradas planilhas no Excel ou no google docs com o horário de cada turma e o horário de cada professor. De maneira que, um professor não pode estar lecionando em mais de uma turma no mesmo horário, e nem uma turma pode ter aula de professores diferentes em um mesmo horário. Além disso, a carga horária deve ser distribuída de tal forma que: o Se a disciplina tiver 20h, ou seja, 1 hora/aula semanal, ela poderá ser encaixada em qualquer horário; o Se a disciplina tiver 40h, ou seja, 2 horas/aula semanais, as duas aulas deverão ser alocadas preferencialmente juntas; o Se a disciplina tiver 60h, ou seja, 3 horas/aula semanais, as três aulas deverão ser alocadas preferencialmente juntas, quando não possível, encaixar um bloco com duas e outro com uma, onde esta ultima deverá ficar preferencialmente no penúltimo horário do turno; o Se a disciplina tiver 80h, ou seja, 4 horas/aula semanais e a disciplina for teórica, as aulas deverão ser alocadas preferencialmente em blocos com duas disciplinas cada. Quando não for possível, encaixar todas em um bloco só, em último caso três e uma, onde esta ultima deverá ficar preferencialmente no penúltimo horário do turno; o Se a disciplina tiver 80h, ou seja, 4 horas/aula semanais e a disciplina for essencialmente prática, as aulas deverão ser alocadas juntas. Quando não for possível, encaixar duas e duas, em último caso três e uma, onde esta ultima deverá ficar preferencialmente no penúltimo horário do turno; o Se a disciplina tiver 100h, ou seja, 5 horas/aula semanais as aulas deverão ser alocadas na forma 3 e 2. o Se a disciplina tiver 120h, ou seja, 6 horas/aula semanais as aulas deverão ser alocadas na forma 3 e 3. Proposta de trabalho Percebendo o problema da empresa foi elaborada a seguinte proposta: • Aplicar algoritmos de otimização para alocar automaticamente a carga horária dos professores e permitir a flexibilização na montagem dos horários dos professores. A ferramenta deverá conter: • Interface gráfica para facilitar a operação do usuário; • Acesso a planilhas ou documentos de texto, ou banco de dados, para armazenar os dados dos professores; O programa deverá estar padronizado seguindo as boas práticas de programação, estar com seu código disponibilizado em uma ferramenta online, possuir ferramentas de teste para verificar o tempo de resposta do programa e se suas entradas e saídas estão consistentes. Além disso, deverão ser aplicados os conhecimentos de estrutura de dados tais como classe, herança, recursividade entre outros, de maneira que o código seja de fácil utilização e o programa de fácil instalação. Ao final do processo, uma documentação (em latex/pdf e html) de como utilizar a classe desenvolvida deverá ser criada, de maneira que outros desenvolvedores possam, a partir do código disponibilizado, contribuir com ele e utilizá-lo em aplicações particulares. Metodologia de Avaliação O trabalho poderá ser realizado por até 5 pessoas trabalhando em conjunto, porém a avaliação será realizada de maneira individual utilizando os seguintes requisitos:
- Quantidade de atualizações realizadas no github.com (no mínimo de 5 commits por semana onde 6 commits na semana posterior não compensarão uma falta , e a soma das linhas atualizadas com os 5 commits devem ser 20) por pessoa.
- Qualidade do código produzido (indentação, síntese das funções (uma função realizando bem uma única tarefa), conceitos trabalhados durante a programação(utilização de funções, classes, estruturas, tipos diversos, estrutura de testes, algoritmos, documentação) ). Lembrando que a avaliação é individual, portanto, todos devem ter em suas contas a utilização da maior quantidade de conceitos possível.
- Nível de usabilidade do programa, ou parte dele, produzida e boa estruturação (tornar a o programa produzido o mais fácil de utilizar e realizar a manutenção possível). Todos devem construir tudo juntos, mas em suas próprias ferramentas.
- Qualidade do produto final (se o programa final é intuitivo e supre a necessidade encontrada, se a interface é boa). Consistirá em 5% da nota final. Obs: O item 1 da metodologia de avaliação funcionará como um gatilho. Isto significa que caso o aluno não se dedique semanalmente a contribuir para o projeto juntamente com seus colegas, o seu trabalho não será corrigido. O objetivo da disciplina é criar esforços constantes e semanais, de maneira que o aluno se acostume a ter certo nível de produção e a receber boa quantidade de informação, processando-a de maneira adequada.