Experiência Pessoal

Desafios e frustrações encontrados

            Estava em dúvida o que fazer como trabalho de formatura. Estava em dúvida entre fazer estágio ou iniciação. Queria fazer estágio, pois queria conhecer o "mundo real". Queria aplicar na prática o que aprendi nesses anos de BCC. Por outro lado, na iniciação eu queria fazer algum assunto relacionado com uma disciplina do BCC (MAC300) que gostei. Falei com o Ernesto e ele me apresentou alguns assuntos que eu poderia fazer como iniciação. Um deles, que me interessou, foi o empacotamento de retângulos. Foi quando decidi que iria fazer iniciação.
            Empacotar retâgulos é um problema onde estão sendo desenvolvidos diversos algoritmos. No primeiro semestre, implementei o algoritmo L. A maior deficiência do algoritmo é o tempo de execução. Um desafio, foi tentar diminuir esse tempo de execução. Foi um desafio, pois eu teria que adotar uma estrutura de dados, que eu não sabia, a priori, se iria melhorar o tempo de execução.
            Encontrei algumas dificuldades para entender o algoritmo, pois o artigo que li, continha alguns erros e não estava muito claro. Para tentar diminuir o tempo de execução, pensei numa estrutura de dados que iria usar mais memória do que o proposto pelo artigo. No final, depois de ter resolvido e comparado os tempos de execução dos principais problemas de empacotamento, vimos que o tempo ganho, usando mais memória, foi muito significativo.
            No segundo semestre, estudei uma outra abordagem. Nessa abordagem, surgiu um novo desafio, pois agora não sabia se ele iria resolver o problema de empacotamento. No final, consegui empacotar retângulos em qualquer figura convexa, não apenas em retângulos. Também consegui empacotar mais retângulos que uma outra abordagem, onde os retângulos podem ser rotacionados. Na minha abordagem os retângulos são empacotados ortogonalmente. Uma frustração, usando esse método, foi que não foi consegui resolver alguns problemas que eram resolvidos pelo outro algoritmo.

Lista das disciplinas cursadas no BCC mais relevantes

            As disciplinas mais relevantes durante o curso foram:
* MAC110 - Introdução à Computação
* MAC122 - Princípios de Desenvolvimento de Algoritmos
* MAC323 - Estrutura de Dados
* MAC300 - Métodos Numéricos da Álgebra Linear
* MAC211 - Laboratório de Programação I
* MAC242 - Laboratório de Programação II
* MAC441 - Programação Orientada a Objetos
* MAC413 - Tópicos de Programação Orientada a Objetos
* MAC426 - Sistema de Banco de Dados
* MAC332 - Engenharia de Software
* MAC448 - Redes de Computadores
            Introdução à Computação, Princípios de Desenvolvimento de Algoritmos e Estrutura de Dados são a base para o curso todo. Nessas disciplinas temos o primeiro contato com programação. Aprendemos a desenvolver algoritmos e criar estruturas que nos auxiliam no desenvolvimento. Também conhecemos algoritmos e estruturas de dados importantes.
            Métodos Numéricos da Álgebra Linear foi muito importante na hora da escolha da área que iria fazer na iniciação científica.
            Em Laboratório de Programação I e em Engenharia de Software desenvolvemos um longo trabalho, divididos em várias fases
            Em Laboratório de Programação II tive o primeiro contato com Java e orientação à objetos e em Programação Orientada a Objetos e em Tópicos de Programação Orietada a Objetos tive um maior aprofundamento sobre o assunto.
            Sistemas de Banco de Dados forneceu uma base e um conhecimento para trabalhar com banco de dados. Redes de computadores forneceu uma boa base e um bom conhecimento sobre redes.

Interação com o orientador

            O professor Ernesto G. Birgin foi muito importante na minha iniciação científica. Antes de decidir fazer iniciação científica, procurei-o e ele me apresentou algumas propostas sobre o que poderia ser feito, falando as vantagens e desvantagens de cada uma. Acabei escolhendo o problema do empacotamento de retângulos.
            Durante o desenvolvimento do projeto, não tinha um dia específico para falar com ele sobre o projeto. Sempre que surgia alguma dúvida ou alguma idéia para resolver o problema ou algum resultado, eu ia falar com ele. Ele sempre estava disposto a me explicar ou me ouvir falar sobre alguma idéia ou algum resultado obtido. Tinha vezes que ia na sala dele 5 vezes ao dia, outras vezes ia 1 vez durante 2 semanas.

Passos que tomaria se eu fosse continuar atuando na área.

            Se eu fosse continuar na área, eu iria tentar misturar os dois algoritmos para ver se consigo achar uma solução do problema mais rapidamente e tentar deixar o algoritmo mais eficiente. Poderia propor outros algoritmos para o problema ou estender o problema para retângulos de tamanhos diferentes e com rotações (não apenas com 2 posições, como está agora).