Arquivo da Categoria ‘Acontece’

Fechamento do Segundo Semestre no Mestrado

sexta-feira, 22 de fevereiro de 2013

Olá meus dois leitores, conforme prometi estou aqui novamente para atualizá-los sobre o andamento do meu curso de mestrado. Terminei o segundo semestre do curso e com ele completei meus créditos com matérias. Somando a prova de fluência em inglês (escrito) que também já aprovei, falta agora a cereja do bolo: a defesa da tese.

As disciplinas que fiz no segundo semestre foram: Teste de Software e Processamento de Alto Desempenho. Vou dar um resumo aqui do que aprendi.

Teste de Software

Em Teste de Software aprofundamos o estudo em técnicas de seleção de casos de testes para abranger a maior parte dos erros possíveis.

O principal paradigma que foi quebrado em minha cabeça, é que testar o software não é provar que ele está livre de erros, o que parece intuitivo, mas testar o software é uma ferramenta para ativamente localizar a maior quantidade possível de erros em um programa. Parte do princípio válido, que todos os programas possuem erros, sempre. Localizar a maioria dos erros antes de colocar um programa em produção é obviamente evitar queimar o próprio filme, portanto altamente desejável. Agora considerar que um programa é livre de erros, mesmo após uma bateria de testes bem realizados, é falácia.

Os Testes que aprendemos se dividem em Testes Funcionais, Testes Estruturais, Testes de Mutação e Testes baseados em Modelos. Cada um deles utiliza uma abordagem diferente para encontrar um conjunto de casos de testes adequado para encontrar os erros. Utilizá-los de forma complementar é uma boa pedida.

Os trabalhos propostos pelo professor Otávio foram na medida para aplicarmos as técnicas estudadas, sem nos sobrecarregar.

Processamento de Alto Desempenho

Aqui o problema é executar códigos repetitivos em unidades de processamento paralelo de forma eficiente. Vários tipos de paralelismo foram aplicados e várias técnicas úteis para minimizar a lei de Amdahl. Esta lei indica que o limite do crescimento da performance ao acrescentarmos mais unidades de processamento em paralelo é limitada pela porção do código a ser executado que não permite paralelismo, o código chamado serial. Como exemplo, se a leitura dos dados de entradas de uma unidade de disco é realizado de forma serial, mesmo que o resto do processamento seja reduzido drasticamente, o tempo que leva esta leitura não seria reduzido. Neste exemplo mesmo se infinitos processadores fossem utilizados o tempo de execução seria igual ao tempo de leitura, portanto o tempo de processamento serial é o limitante da escalabilidade.

Os dispositivos paralelos estudados na disciplina foram: as unidades vetoriais (sse, avx) dos processadores modernos, os processadores multicore (memória compartilhada OpenMp, Pthread, JThread), os sistemas multiprocessados (memória distribuída MPI) e os novíssimos sistemas em Gpu (Cuda).

As atividades da disciplina foram pesadas mas interessantíssimas. Executar algorítimos com paralelismo agora é algo de meu domínio. As experiências da disciplina mostraram que o esforço necessário para isso valem a pena.

Sobre as minhas notas

As minhas notas continuaram no máximo, tirei A em tudo. E estou falando isso não pra me gabar (tá um pouco é pra isso também). Mas o principal motivo pra eu falar isso é também pra indicar algumas coisas do modo de estudo que deram resultado para mim.

Desde de minha experiência de doze anos como professor é a primeira vez que volto a sala de aula com professor e tarefa de casa para fazer. E me ajudou muito ter sido professor estes anos todos. Nunca ficou tão claro pra mim o quanto é importante entender aquilo que o professor espera de você em sala de aula. Este é o ponto central para eu conseguir a nota máxima em todas as disciplinas.

Meu método de estudo não é de outro mundo. Tem só algumas regras simples:

  • Nunca faltar. Tive 100% de presença, precisando inclusive ir a aula com febre.
  • Estar presente. 100% de atenção a tudo que ocorre em sala o tempo todo. Adianta ir fisicamente a aula e cabular no facebook ou sms?
  • Fazer todas as atividades. Assim que uma tarefa era passada, no mesmo dia dava uma olhada e se possível já fazia. Assim se não conseguisse de primeira sempre tinha tempo para discutir com o professor ou com os colegas.
  • Perguntar. Sempre que surgia uma dúvida, não hesitei em levantar a mão. Fiz perguntas bestas, mas aprendi na hora certa.

Isso é o que eu esperava de um aluno meu. Nos doze anos que fui professor, encontrei no máximo três alunos assim. Se eu sonhava com aluno assim, os meus professores não deveriam ser diferentes.

Minha experiência e facilidade de aprendizado na área ajudou muito, é lógico, mas a maior parte do conteúdo era novidade para mim.

Bom agora vem a parte mais interessante do mestrado, que é a tese. Eu estou com o estudo bibliográfico bem adiantado, com tema e mesmo com um problema a ser atacado bem definido. Volto mais vezes agora conforme o andamento do projeto de pesquisa. Até mais.

 

Segundo Semestre no Mestrado de Computação

quinta-feira, 4 de outubro de 2012

Olá sobreviventes,

Os meses passam e os cães ladram, e este blog está congelando. Como eu suspeitava com o mestrado que comecei em março foi absolutamente impossível sequer entrar no blog. Mas como prometido estou aqui de volta para atualizar meus dois leitores.

Terminei duas das três matérias do primeiro semestre do mestrado com notas máximas. Na terceira, o professor utilizou-se de seu legítimo direito de greve e estamos continuando agora. Então, Arquitetura de Computadores e Análise de Algoritmos e Estrutura de Dados estão concluídos.

Em Análise de Algoritmos tivemos uma porção de problemas difíceis para resolver e aplicar técnicas para diminuir a complexidade dos algoritmos. Foi bem interessante. Legal mudar um algoritmo que levaria mais de um século para rodar, tornando-o executável em milissegundos!

Minha disciplina preferida foi Arquitetura, onde, como trabalho final, projetamos um microprocessador de 16 bits com pipeline de dois estágios. Projetamos com o software Quartus e seria possível fazê-lo funcionar com um FPGA.

Na minha tese o trabalho está rendendo. Já consegui delimitar o escopo e estou lendo mais artigos do que Livros do George Martin. Se der, semana que vem eu publico aqui o esboço da proposta do trabalho.

Este segundo semestre estou com duas novas disciplinas:

Processamento de Alto Desempenho

Um estudo sobre técnicas para utilização de supercomputadores, multiprocessadores e multicores. A princípio pensei que seria sobre construir estes computadores, como um adendo a aula de Arquitetura, no entanto o foco é software: como escrever software que se aproveita melhor do paralelismo e dos hardwares especiais dos grandes computadores.

Teste de Software

Adianta escrever mil linhas de software por hora, se metade está com defeito? Testar software é essencial, mas nem preciso falar isso, não é? Esta é uma das matérias que mais desejava no Mestrado. Já fiz experiências com junit para realizar testes unitários em Java, porém nunca tinha segurança sobre o que testar exatamente. Esta matéria procura nos dar um embasamento sobre técnicas para escolha dos casos de teste mais eficientes para encontrar defeitos no software. Aliás, você sabe o que é testar software? Deixe suas sugestões nos comentários que depois te conto…

 

Segunda Semana do Mestrado

quarta-feira, 21 de março de 2012

Olá amigos, estou voltando para dar notícias. Vocês devem ter visto aqui que eu comecei meu mestrado na Unifesp. Como prometido este artigo vai ser para atualizá-los sobre o andamento dos estudos.

Em primeiro lugar, já tive a oportunidade de conhecer cada um dos meus 3 professores em sala de aula: Márcio Basgalupp de Estrutura de Dados e Análise de Algoritmos, Mariá Nascimento de Metodologia Científica para Computação e Fábio Cappabianco de Arquitetura e Organização de Computadores. E também tive oportunidade de entender o conteúdo programático e enfase de cada matéria.

Estrutura de Dados e Análise de Algoritmos

O Professor Márcio precisou de trinta segundos para me dar um banho de água fria: a matéria não irá rever Estruturas de Dados, então não teremos nada de filas, pilhas e outras estruturas. O foco é na Análise de Algoritmos. Portanto começamos com análise de complexidade de algoritmos, com definições de complexidade e dos conjuntos Teta, O, o, Omega e Omegazinho. Terei que rever limites para acertar esta matéria. Então, está na graduação e acha que limites são inúteis, pode parar, limites são utilizados em análise de algoritmos. Aprenda isso direito.

Márcio passou um problema bem interessante sobre mineiros e busca de alto lucro. Vou ver com ele se posso publicar aqui pra vocês.

Metodologia Científica para Computação

Esta matéria, como imaginei, é indispensável. Professora Mariá está dando o caminho das pedras para realizar uma pesquisa científica de sucesso. Começou orientando como classificar os periódicos por importância e relevância de modo que nossa pesquisa bibliográfica seja com as fontes mais confiáveis (Classificação Qualis e JCR). Indicou como localizar os papers (Google Scholar, ISiWeb). A última aula foi um apoio para selecionar a Área de Pesquisa, Tema de Pesquisa, para finalmente fechar o Objetivo da Pesquisa. Teremos ainda aulas sobre como escrever a tese, regras e formatações, etc. Ela está nos dando ferramental indispensável para a realização de pesquisa.

Arquitetura e Organização de Computadores

Professor Fábio Cappabianco apresentou a matéria e desta vez foi bem de encontro à minha expectativa. Estamos iniciando entendo os blocos básicos de um computador (CPU, Memória, I/O) e detalhando cada um deles cada vez mais, se preocupando com performance e técnicas de otimização. Será muito legal, pois meus últimos estudos em Estruturas de Computadores foi no tempo dos 386 que nem pipeline, nem estrutura superescalar estavam disponíveis. Agora temos isso e mais multi-core, hiperthread, etc. Será ótimo para me atualizar. Nestas primeiras aulas já fizemos coisas bem interessantes: programas para o IAS, o primeiro computador eletrônico com a arquitetura de Von Neumann. Ele passou a lista de instruções disponíveis e deu para brincar um tanto. Gostei muito da matéria, uma vez que o foco é Arquitetura e não Organização: Como o computador funciona do ponto de vista do programador, isto é os requisitos e características que influenciam a programação, e não como as coisas são implementadas.

Sobre a Tese

Nestas duas primeiras semanas tive ainda uma conversa rápida com meu orientador, e teremos uma reunião mais longa ainda esta semana. Comecei a aprofundar meus estudos em redes Wireless (redes sensor e mesh) para verificar se é destes temas que virão minha tese. Estou inclinado a estudar redes Mesh ou mesmo automotivas. Não está claro para mim. Li alguns artigos de revisão pois até duas semanas nunca tinha ouvido falar em redes sensor. Depois da reunião com o professor Valério, meu orientador, provavelmente terei mais para falar sobre a tese. Resumindo, preciso estudar muito ainda para achar a minha direção de pesquisa.

 

E então, estão gostando destes resumos de meus estudos? Veja, mesmo se eu não tiver agradando ninguém, irei continuar publicando isso. Afinal, meu objetivo aqui é registrar este meu período de estudo. Se não está gostando, pode se manifestar E pular os artigos que publicar sobre isso, ok?

 

Mestrado em Ciência da Computação na Unifesp

sábado, 25 de fevereiro de 2012

Para meus fiéis dois leitores, vai uma notícia boa para mim, mas nem tanto para quem me lê: estarei começando meu mestrado em Ciência da Computação na Unifesp agora em março. Isso com certeza vai consumir meu pouco tempo livre, e com certeza o novo ritmo que queria impor ao Tecnoclasta não vai ser factível.

Unifesp São José dos Campos

Unifesp São José dos Campos

Vou procurar mantê-los informados dos conteúdos que vou estudar, até para que algum curioso saiba como funciona um programa de mestrado em uma universidade pública.

Estou na primeira turma de Mestrado de Computação da Unifesp. A universidade tem um histórico de quase oitenta anos na área de medicina, sendo uma referência neste campo. Nos últimos anos uma grande expansão vem sendo realizado nas universidades federais por conta do programa REUNI. A Unifesp é uma das universidades que estão expandindo: abriram campus em Santos, Diadema, Guarulhos e São José dos Campos, com cada município adotando uma grande área de conhecimento. São José dos Campos, onde vivo, adotou Ciência e Tecnologia como visão, seguindo a vocação tecnológica da região. O Mestrado de Computação é o primeiro programa de mestrado da Unifesp em minha cidade.

A seleção

O processo de seleção da Unifesp foi através de análise de curriculum e cartas de recomendação, além das notas da graduação e pós-graduação. Os candidatos enviaram os documentos pela internet e ficaram torcendo pelo melhor.

Antes mesmo da inscrição os candidatos tiveram que entrar em contato com os professores para verificar os campos de pesquisa e possíveis orientadores. Acredito que esta conversa inicial também deve ter servido de filtro para os candidatos.

Entre 50 candidatos fui um dos 19 selecionados.

Os Objetivos

Propiciar aos seus alunos uma formação sólida dentro da área, qualificando-os à docência, à pesquisa e ao desenvolvimento tecnológico

  1. Promover o desenvolvimento de estudos sistemáticos e pesquisa avançada na computação, possivelmente aplicados a domínios específicos e com potencial de transferência tecnológica;
  2. Promover a formação científica aprofundada e diversificada de professores, pesquisadores e especialistas;
  3. Estimular a produção científica de trabalhos resultantes das dissertações.
Meu objetivo com o mestrado é me qualificar para lecionar em qualquer universidade, com uma formação adequada. Se seguir o curso com sucesso, e houver disponibilidade, pretendo emendar um doutorado, logo a seguir.

As Linhas de Pesquisa

  • Sistemas Inteligentes : desenvolvimento de sistemas computacionais para modelagem e solução de problemas de maneira análoga à utilizada pelo cérebro humano ou baseados em processos encontrados na natureza.
  • Sistemas Computacionais: envolve o estudo e a busca por inovações nas seguintes áreas: computação de alto desempenho, engenharia de software, redes de computadores e arquiteturas de computadores, entre outras, visando o desenvolvimento de sistemas de computação adequados em diversos domínios e diferentes plataformas.
  • Otimização: cobre os principais domínios de programação matemática teórica, computacional e importantes setores de aplicação.

A linha de pesquisa que pretendo seguir é Sistemas Computacionais com um estudo mais aprofundado em Rede de Computadores. Ainda não decidi exatamente o que aprofundar em redes, mas dois candidatos são rede Wireless ou segurança em redes. Ainda vou ter que aprofundar minhas conversas com meu orientador.

As Disciplinas

Neste primeiro período estarei cursando 3 disciplinas:

  • Análise de Algoritmos e Estruturas de Dados. Prof. Dr Márcio Porto Basgalupp. Pilhas, filas, buffers, árvores binárias, matrizes, etc. Espero que seja uma matéria mais prática, se for para codificar estas estruturas eu estou tranquilo. Matéria obrigatória para o mestrado.
  • Metodologia Científica para Computação. Prof. Dr. Fábio Fagundes Silveira e Profa. Dra. Mariá Cristina Vasconcelos Nascimento. Embora a matéria não seja obrigatória, é fortemente recomendada, o que faz muito sentido. Já tive metodologia científica na especialização, porém acredito que esta matéria vai permitir apresentar aos alunos o tipo de rigor que a universidade espera de nossas teses, estudo de modelos de teses, documentação, etc. É sempre bom rever os conteúdos de metodologia para facilitar depois a confecção da tese.
  • Arquitetura de Computadores. Prof. Dr. Fábio Augusto Menocci Cappabianco. Aprofundar o estudo de Arquitetura de computadores é ferramenta para o aprofundamento do estudo de redes. Vamos lá de novo estudar CPUs, ALU, Unidade de Controle, Barramentos, etc, etc.

Nas próximas semanas, conforme o curso estiver evoluindo, pretendo escrever alguns posts sobre o que vou estudar, com links e conteúdos para quem estiver estudando matérias similares. Vou usar o blog para registrar os estudos, se é que me entendem.

Quem tem graduação e acredita que é candidato viável para este curso de mestrado, fique atendo que as inscrições normalmente são entre dezembro e janeiro. No próximo ano com certeza teremos mais vagas.