Mestrado

O mestrado em Ciência da Computação do Campus de Sorocaba da UFSCar irá se iniciar em agosto de 2012. Veja a página da pós para mais detalhes. Como membro da pós-graduação, aceitarei alunos para orientação em orientação a objetos, sendo que o foco principal da pesquisa será em linguagens de programação. A maioria dos temas de pesquisa serão relacionados à linguagem de programação Cyan, que é uma linguagem orientada a objetos baseada em protótipos sendo desenvolvida na UFSCar/Sorocaba.

Esta linguagem apresenta várias inovações importantes, muitas das quais poderão ser implementadas ou utilizadas em dissertações de mestrado. Veja a lista destas inovações nas primeiras páginas do manual de Cyan. A página da linguagem ainda está sendo construída.

Note que, apesar de Cyan ser o principal foco de interesse, a área mais geral de pesquisa é linguagens de programação orientada a objetos. Alguns tópicos possíveis de dissertações de mestrado são citados abaixo. Esta lista não é exclusiva: outros temas relacionados ou não a Cyan poderão resultar em dissertações.

  1. Construção de ferramentas de teste para compiladores.
  2. Suporte a linguagens específicas de domínio (domain specific languages, DSL´s) em Cyan. Várias dissertações podem ser sobre este tópico. Cyan possui inúmeras construções que facilitam a construção de DSL´s; a saber: métodos de gramática (Grammar methods), objetos literais (literal objects) e blocos de contexto (context blocks). Confira estas inovações no manual de Cyan. Poderiam ser feitas algumas DSL´s para campos específicos (interface gráfica, internet, computação gráfica etc), ferramentas que auxiliam a construção de DSL´s e mesmo a implementação de algumas construções de Cyan que suportam DSL´s.
  3. Suporte a padrões de projeto (Design Patterns) em Cyan.
  4. Implementação do suporte à mistura entre tipagem estática e dinâmica. Este tópico deve resultar em mais de uma dissertação. Veja o Capítulo Dynamic Typing no manual de Cyan.
  5. Definição e implementação de codeg´s (leia a seção “5.4 Codegs” no manual de Cyan). Provavelmente isto resultará em mais de uma dissertação de mestrado.
  6. Implementação de multi-métodos e métodos de gramática (Grammar methods) --- a ideia seria usar um autômato finito para isto. Este tópico também englobaria a implementação eficiente de busca por métodos em Cyan.
  7. Construção de uma biblioteca de reflexão computacional --- Veja Capítulo Metaobjects do manual.
  8. Estudo ao suporte a Language Oriented Programming em Cyan e outras linguagens (veja Ward, M. P. Language Oriented Programming. Software --- Concepts and Tools, pages 147-161, 1994).
  9. Proposta de uma pequena linguagem funcional com alguns dos conceitos de Cyan.
  10. Proposta de uma IDE para Cyan que tornaria a linguagem muito amigável. Em resumo, como planejar os menus, mensagens de erro do compilador, janelas de ajuda de tal forma que seja fácil utilizar o compilador e o editor de Cyan. Muitos detalhes sobre este tópico já foram pensados mas não escritos em um artigo ou relatório.
  11. Definição precisa e definição formal de blocos estaticamente tipados de Cyan. Blocos em Cyan são chamados de closures em outras linguagens. E blocos em Smalltalk.