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).