Estou interessado em iniciar um curso de mestrado em 2012. Eu sei, ainda está longe, mas me adiantando, já que não sei como funciona um curso de mestrado.
Queria saber para quem já fez um curso de mestrado, o que é necessário, e como funciona a escolha do tema. Tenho diversos interesses dentro da área de TI, porem venho lendo alguma coisa sobre compiladores. Tive essa matéria em em 2005 quando me formei, mas nunca mais tive contato. Será que existe alguma coisa voltado para essa área ?
Mestrado em Compiladores
28 Respostas
Estou interessado em iniciar um curso de mestrado em 2012. Eu sei, ainda está longe, mas me adiantando, já que não sei como funciona um curso de mestrado.
Queria saber para quem já fez um curso de mestrado, o que é necessário, e como funciona a escolha do tema. Tenho diversos interesses dentro da área de TI, porem venho lendo alguma coisa sobre compiladores. Tive essa matéria em em 2005 quando me formei, mas nunca mais tive contato. Será que existe alguma coisa voltado para essa área ?
Pelos áreas que vi de mestrado nenhuma contemplava algo assim “compiladores” … talvez um compilador com IA, com JIT … tem que haver um motivo, só compiladores não sei se tem. Seria tipo um mestrado de BD, geralmente é mais especifico, uma sub-área com trabalho a ser explorado.
Dá para ir para isso sim, mas um programa focado nisso dificilmente você vai achar. Normalmente você vai pegar algo mais abrangente ou relacionado também com alguma outra área relacionada e focar nisso para fazer a sua a dissertação, artigos, etc.
Entendi Victorwss;
Por um acaso você conhece alguma universidade que possui um programa onde eu possa aplicar o tema ? Eu moro aqui em São Paulo, mais precisamente em São Bernardo do Campo.
Meu mestrado foi na área de compiladores. Desenvolvi um compilador funcional específico pra se programar hardware e que trabalhava com FPGAs. O código da minha linguagem era 20 vezes menor que um código em VHDL, linguagem comum pra essa tarefa.
Um amigo que formou comigo, desenvolveu um módulo do meu compilador pra programar barramentos no hardware. Outro amigo desenvolveu um escalonador de processos pro Java que era mais eficiente que o da Sun. E no final ele foi contratado pela IBM pra trabalhar na JVM dela.
Eu faço mestrado, mas não na área de compiladores. Normalmente se escolhe uma área do mestrado, e a partir daí se escolhem os prováveis orientadores. Acredito que a maioria das universidades deve ter algum professor/pesquisador que pesquisa e/ou aceitaria um aluno de mestrado na área de compiladores. Vai depender do que você vai querer fazer também.
Um compilador abrange diversas áreas da computação. Tem ideia do quê você quer?
Poxa marcosalex, que bacana.
Me passa um pouco dessa experiência. Onde você fez esse mestrado, quais foram as dificuldades e experiências adquiridas tanto pessoal quanto profissional. Alem disse se puder enviar seu trabalho para o e-mail [email removido], eu agradeceria. Apesar de não entender o que seria um “compilador funcional específico pra se programar hardware e que trabalhava com FPGAs” e “código em VHDL”. rs!
mestrado em compiladores? desculpe mais nunca ouvi falar.
abraços
mestrado em compiladores? desculpe mais nunca ouvi falar.
abraços
Nem eu Elizeu. Por isso perguntei aqui no forum. E para minha surpresa encontrei o marcosalex.
mestrado em compiladores? desculpe mais nunca ouvi falar.
abraçosNem eu Elizeu. Por isso perguntei aqui no forum. E para minha surpresa encontrei o marcosalex.
Essa é uma área de pesquisa da computação, então mestrados em computação abrangem compiladores. Por isso não se ouve falar em “mestrado em compiladores”, e sim “mestrado em computação”, a não ser que a pessoa adpte o nome, mas a universidade provavelmente não dará o título “em compiladores”, talvez “- Ênfase em compiladores”.
Um excelente modo de encontrar professores/pesquisadores em compiladores no Brasil, ou em São Paulo, seria procurar por testes ou por artigos publicados, ou pegar referências diretamente com quem já fez, como o marcosalex. Provavelmente a dissertação dele tem referências às publicações da área.
Ta certo dionat4n!
É isso mesmo que irei fazer. Só espero que o marcosalex, responda. Estou aguardando
O mestrado sempre diz respeito a um tema científico. Compiladores é um ótimo tema e abrange uma área que cabe vários outros relacionados. Linguagem xy por exemplo é um bom tema para um mestrado visando compiladores.
Olá, gostei da sua pergunta. A resposta é você conseguirá sim fazer sobre o assunto, pode ser que você tenha dificuldade de achar um professor “ferradão/muito bom” no assunto ou até mesmo um programa focado neste tema, no entanto, se é o quer faça!
Aproveitando o ensejo, se me permite gostaria de fazer/levantar uma questão para a galera, até por que
eu me deparei com isso:
Será que vale a pena fazer um mestrado “razoavelmente bom”, como na PUC, pagar 1.300 reais por mês (perto da Av. Paulista) para fazer um tema que você “curte”, meu caso “Arquitetura de Projetos Web” porém/contudo/todavia o programa/grade do curso é algo pouco atraente, conforme a perspectiva gostaria que fosse -> http://www.pucsp.br/pos/programas/tec_digital/apresentacao.htm.
Você faria sim ou não (claro, se você tivesse o mesmo perfil) e por quê?
Esse curso da PUC é interessante, mas é um mestrado interdisciplinar. Pelo que eu entendi ele está mais relacionado com a questão da aplicação de sistema digitais em ambientes de aprendizado, e como a tecnologia influencia no aprendizado. Pra quem gosta de ciência da computação, pura e simplesmente, acho que é furada.
A maioria das pessoas tem uma visão errada do que é um mestrado. Muita gente procura algo como “Mestrado em Java” ou “Mestrado em .NET”, coisas do tipo. Mestrado é um curso puramente acadêmico, que visa a formação de professores e pesquisadores. Portanto, o embasamento teórico é maior além de que há necessidade de se fazer algo inédito. Não é qualquer sistema CRUD que vai ser contado como dissertação não.
Esse curso da PUC é interessante, mas é um mestrado interdisciplinar. Pelo que eu entendi ele está mais relacionado com a questão da aplicação de sistema digitais em ambientes de aprendizado, e como a tecnologia influencia no aprendizado. Pra quem gosta de ciência da computação, pura e simplesmente, acho que é furada.A maioria das pessoas tem uma visão errada do que é um mestrado. Muita gente procura algo como “Mestrado em Java” ou “Mestrado em .NET”, coisas do tipo. Mestrado é um curso puramente acadêmico, que visa a formação de professores e pesquisadores. Portanto, o embasamento teórico é maior além de que há necessidade de se fazer algo inédito. Não é qualquer sistema CRUD que vai ser contado como dissertação não.
justamente, você precisa criar e defender uma tese.
Tive um colega que fez o mestrado dele em compiladores.
Se não me engano foi na UFSC (Universidade Federal de Santa Catarina).
justamente, você precisa criar e defender uma tese.
Cuidado com as nomenclaturas…
Para a graduação é necessária a monografia, o trabalho de conclusão de curso.
Para o mestrado acadêmico é necessária a dissertação, que é um estudo profundo em uma área, não necessariamente algo novo.
Para o doutorado é necessária a tese, que é algo novo a pesquisar, gerar e defender (por isso a expressão “defesa de tese”).
Antigamente eu me confundia achando que tese era no mestrado também, até me corrigirem.
justamente, você precisa criar e defender uma tese.Cuidado com as nomenclaturas…
Para a graduação é necessária a monografia, o trabalho de conclusão de curso.
Para o mestrado acadêmico é necessária a dissertação, que é um estudo profundo em uma área, não necessariamente algo novo.
Para o doutorado é necessária a tese, que é algo novo a pesquisar, gerar e defender (por isso a expressão “defesa de tese”).
Antigamente eu me confundia achando que tese era no mestrado também, até me corrigirem.
Não sabia disso… então doutorado.

Já trabalhei em uma empresa que usava muito copiladores
Tinha um sistema que fazia a conversão de sistema legado para Java
É um assunto muito interessante
Esse curso da PUC é interessante, mas é um mestrado interdisciplinar. Pelo que eu entendi ele está mais relacionado com a questão da aplicação de sistema digitais em ambientes de aprendizado, e como a tecnologia influencia no aprendizado. Pra quem gosta de ciência da computação, pura e simplesmente, acho que é furada.A maioria das pessoas tem uma visão errada do que é um mestrado. Muita gente procura algo como “Mestrado em Java” ou “Mestrado em .NET”, coisas do tipo. Mestrado é um curso puramente acadêmico, que visa a formação de professores e pesquisadores. Portanto, o embasamento teórico é maior além de que há necessidade de se fazer algo inédito. Não é qualquer sistema CRUD que vai ser contado como dissertação não.
É. Acredito que inédito seja só para o doutorado, mas você está complementamente certo quanto à exigência é outra não simplesmente um sistema CRUD. Pois é, pensei a mesma coisa qto à proposta do curso por isso desistí…
Até onde eu sei existem dois grupos do Brasil que trabalham diretamente com linguagens. Um é na PUC-Rio e o outro é na UFMG se não me engano. Quando eu for fazer meu doutorado, daqui há alguns anos, eu quero fazer algo relacionado a compiladores tbm, mas ainda preciso estudar bastante coisa… Pretendo reiniciar meus estudos na área em junho/julho.
Aqui tem umas aulas da Unicamp (um curso completo). Vou assistir elas assim q eu tiver um tempinho.
[]'s
Ia responder em private, mas como mais de uma pessoa pareceu interessar, vou tentar passar um pouco da experiência que tive, mas depois mande um email pra [email removido], pra não ficar muito off-topic:
O meu título de Mestrado chama "Mestrado em Ciência da Computação, com ênfase em engenharia de software". Não sei se existe um mestrado com o título específico de compiladores.
http://www.facom.ufu.br/posgrad/
Existem áreas de mestrado voltadas pro ambiente profissional e nem tanto pro ambiente acadêmico. E já existem empresas que valorizam o curso de mestrado. E se um dia você quiser trabalhar ou estudar em outro país, um mestrado geralmente é reconhecido lá, enquanto um curso superior, somente se uma universidade de fora covalidar seu diploma, o que depende de um entendimento e acordo entre as duas. No caso do curso de graduação da UFU, a univerdade de Lion, na França faz isso, por exemplo.
A área de compiladores é meio raro encontrar cursos de mestrado e professores nessa área porque é uma área considerada pequena e já saturada, com os compiladores hoje em dia bastante complexos e avançados. E criar uma nova linguagem raramente é aceita como tese, a não ser que tenha um propósito mais original, nem pra mestrado eles costumam aceitar, porque é relativamente muito fácil e qualquer aluno de graduação que fez matéria de compiladores consegue criar uma linguagem nova e até com alguma sofisticação.
Sempre fui apaixonado em compiladores, acho fantástico ele interpretar a linguagem que eu defino. Adoro quando passo um problema pro compilador responder, ele me dá um erro e depois de horas tentando descobrir o erro no compilador, vejo que o erro é no meu programa. "Poxa, o compilador tá mais inteligente que eu, viu o erro primeiro". hehehe
Desenvolvi um compilador utilizando a linguagem Haskell, uma das linguagens que achei mais fácil e simples de construir compiladores. Aliás, linguagens funcionais são muito boas pra essa tarefa. Linguagens pra um domínio específico é uma área interessante pra compiladores, a que eu escolhi é para descrever cirtuitos eletrônicos. Então no lugar de funções if, while, for, minha linguagem tinha funções and, or, not, add, sub, ffjk, etc. E no lugar de números e strings, minhas variáveis só podiam assumir 2 valores: 0 e 1.
Um exemplo de uma função and de três portas:
and3function :: Bool -> Bool -> Bool -> Bool
and3function a b c = a & b & c
Fiz a linguagem e apliquei em um circuito FPGA, que é um hardware programável. Aliás, minha maior dificuldade nessa área que escolhi é que não dominava de hardware de baixo nível e quando ia pra um congresso internacional, muitas vezes recebi críticas dos meus exemplos serem simples. Inclusive recusaram muitos artigos porque chamavam de "toy problems". hehehe
Minha ideia não foi original (o colega acima já explicou que mestrado não precisa ser), me inspirei e tentei aperfeiçoar as linguagens Lava Lava e Hydra e implementei alguns recursos que as duas não tinham. Mas é óbvio que elas tinham muito mais coisas, são projetos mais avançados.
Um grupo avançado em FPGAs que encontrei foi na UFSC em São Carlos. E um grupo avançado em compiladores funcionais foi na UFPE, em Recife. E de Haskell, na Universidade do Minho, em Portugal. www.uminho.pt/
Quanto a fazer mestrado, algumas coisas que gostaria de ter ouvido antes de começar:
-
o conteúdo costuma ser mais fácil do que da graduação, mas o volume de coisas pra estudar, é muito, muito, muito maior. Você vai ter de escolher e trabalhar em uma linha de pesquisa e estudar o que os profissionais estão trabalhando nela hoje em dia. Só que pra chegar lá, eles caminharam anos, e você vai entender tudo em meses. Cada artigo que você ler, pra cada 3 linhas vai precisar pesquisar 50 páginas pra entender bem o que aquelas linhas significavam. Mas quando você mesmo escrever seus artigos vai se vingar, vão fazer o mesmo com você. hehehe
-
junte uma grana, vai precisar viajar pra congressos e apresentar trabalhos. Em algumas universidades os professores oferecem pra ir no seu lugar, já que geralmente vão ser co-autores. Sempre prefira ir, ou ir junto, porque são nos congressos que você vai fazer um bom network e vai encontrar autores de artigos e livros que você estudou. E se forem estrangeiros, provavelmente vai ser uma oportunidade única de ter contato com eles, e eles vão tentar se aproximar de você porque estão em uma cidade estranha. Teve um professor da Universidade do Minho que convidou meu colega de pesquisa pra fazer doutorado por lá, com bolsa de estudo. Infelizmente as notas dele eram melhores que as minhas.

-
Mestrado tem tempo mínimo e máximo pra ser concluído, mas não conheço ninguém que conseguiu terminar no tempo mínimo se trabalhasse.
-
se possível, fique dedicado ao mestrado sem revezar seu tempo com serviço. Algumas universidades dão bolsa de estudos, mas daí você precisa ter notas maiores, não pode trabalhar e precisa terminar no tempo mínimo. A bolsa fica próximo aos 1000 reais, pouco. Mas é uma boa ajuda se você mora na cidade, tem uma reserva e está disposto a passar 2 anos apertado e sair com o título. E o governo está te pagando pra estudar, não deixa de ser justo.
-
tente se informar sobre as linhas de pesquisa da instituição e tente informações sobre os professores e coordenadores. Tem muito professor bom, mas tem muitos mercenários que vão querer mamar no seu trabalho pra ganharem dinheiro do governo.
Bom, já extendi muito, por email a gente troca mais ideia.
Lembro que na disciplina de compiladores na graduação, desenvolvi um compilador em ANTLR, ele gera o compilador em classes Java a partir da gramática especificada da linguagem criada. Recomendo dar uma olhada, ainda mais que é em Java. Talvez se possa fazer algum trabalho baseado e/ou em cima dele, já que ele é resultado de (pelo que lembro) uma tese de doutorado. É muito interessante.
Esse curso da PUC é interessante, mas é um mestrado interdisciplinar. Pelo que eu entendi ele está mais relacionado com a questão da aplicação de sistema digitais em ambientes de aprendizado, e como a tecnologia influencia no aprendizado. Pra quem gosta de ciência da computação, pura e simplesmente, acho que é furada.A maioria das pessoas tem uma visão errada do que é um mestrado. Muita gente procura algo como “Mestrado em Java” ou “Mestrado em .NET”, coisas do tipo. Mestrado é um curso puramente acadêmico, que visa a formação de professores e pesquisadores. Portanto, o embasamento teórico é maior além de que há necessidade de se fazer algo inédito. Não é qualquer sistema CRUD que vai ser contado como dissertação não.
justamente, você precisa criar e defender uma tese.
Não necessariamente, no mestrado vc pode pegar um assunto em pauta e abordar ele com maior profundidade. Algumas universidades (USP, UNICAMP, etc.) não aceitam isso.
Dicas (o que eu estou fazendo pra conseguir o meu)
1- Procure saber o que vc deseja fazer com compiladores. “Compiladores” é um assunto mto vago. Certamente o pessoal pedirá uma profundidade do assunto.
2- Tente procurar as disciplinas em que vc precisa se aprofundar e dê uma olhada no assunto. Se vc chega crû vc tem mais dificuldade do que se chega tendo uma noção do assunto.
3- Compiladores basicamente é lê um código e transforma ele em liguagem de execuçao para algum dispositivo. De acordo com um código ele faz a parte de “tradução”. Tente pesquisar os termos científicos envolvidos nisso para ter uma profundidade maior do assunto.
Se vc ainda está na faculdade converse com os professores. Eles podem te ajudar a ter uma maior profundidade nisso.
[]s
Marcos
Uma área de compiladores que está em alta hoje em dia é Just-in-time. Pesquise as técnicas hoje e encontre alguma que você pode melhorar. Ou algum tipo de técnica usado em outra área que pode ser usada pra aperfeiçoar o compilador JIT.
Em relação ao objetivo do mestrado, eu tenho consciência de qual é, e sempre tive a idéia de que mestrado é voltado para área acadêmica e o MBA para área executiva. Porem se eu fizer um mestrado, terei que seguir a carreira de professor ou pesquisador? Pelo menos a meu ver, pretendo de com os conhecimentos adquiridos no mestrado, levar para o trabalho.
Alem disso concordo com o rmendes08, “… Não é qualquer sistema CRUD que vai ser contado como dissertação não.”. Mestrado é mais que isso e por isso tenho interesse na área de compiladores ou algo relacionado.
Nossa, como é gratificante receber tantas opniões!
Vou avaliar algumas coisas e ver se realmente vale a pena o mestrado. Vou seguir os conselhos dado pelo mlimacarlos. Dar uma pesquisada sobre o assunto e para isso tenho dois livros relacionado ao assunto. O “Compiladores Princípios Técnicas E Ferramentas” e “Como Construir Um Compilador - Utilizando Ferramentas Java”.
Infelizmente mlimacarlos já sou formado e pós-graduado e infelizmente não tenho ajuda mais de professores, o jeito e se virar sozinho.
Mudando de assunto um pouco
Sobre o post do marcosalex , comprei o livro Haskel - Uma abordagem prática. É meu primeiro contato com uma linguagem funcional. Me pareceu interessante, mas achei estranho a sintexe. Mas vamos ver no que dá.
Em relação ao objetivo do mestrado, eu tenho consciência de qual é, e sempre tive a idéia de que mestrado é voltado para área acadêmica e o MBA para área executiva. Porem se eu fizer um mestrado, terei que seguir a carreira de professor ou pesquisador? Pelo menos a meu ver, pretendo de com os conhecimentos adquiridos no mestrado, levar para o trabalho.Alem disso concordo com o rmendes08, “… Não é qualquer sistema CRUD que vai ser contado como dissertação não.”. Mestrado é mais que isso e por isso tenho interesse na área de compiladores ou algo relacionado.
Isso, mestrado acadêmico é stricto senso e MBA é lato sensu.
Não precisa seguir essas carreiras, algumas empresas valorizam o mestrado ou o doutorado, outras já não dão tanta importância. Normalmente (normalmente!) as áreas de mestrado ou doutorado dificilmente são aplicadas efetivamente no mercado de trabalho pelo mestre ou doutor, o que vale muito (e acredito nisso) é a experiência e maturidade obtida.
Para mim, qualquer estudo é válido, então força nos objectivos! 