segunda-feira, 15 de outubro de 2012

Pesquisa salarial de professores de Computação

Olá, pessoal.

A pedidos de alguns amigos, o blog "Estudar Computação" está lançando uma pesquisa sobre a média salarial dos professores de Computação no Brasil. Se você é professor em algum curso de graduação ou pós, seja em Computação ou áreas afins (como Sistemas de Informação, Análise de Sistemas, Engenharia da Computação, etc.), por favor responda nossa pesquisa. E divulgue! ;-)

Em breve colocaremos os resultados parciais aqui no blog.





terça-feira, 2 de outubro de 2012

Poscomp 2012 - Prova e gabarito




No último domingo, dia 30 de setembro, ocorreu em todo o Brasil mais um Poscomp.


O que vocês acharam?

* Se souberem de mais discussões, por favor coloquem aqui.

quinta-feira, 19 de julho de 2012

Plotando gráficos na web com rApache

Oi pessoal!

Hoje vou dar uma dica de como usar a linguagem R para criar uma aplicação web simples, com upload e um plot de um gráfico. Com essa aplicação, o usuário pode enviar um arquivo texto comum, selecionar o separador dos campos do arquivo, digitar os rótulos dos eixos e depois criar o gráfico, que é então mostrado na página.

Primeiramente, você deve instalar e configurar o rApache na sua máquina.




Agora, segue o nosso programa:
# simples_rApache.R
# script para criar gráficos simples usando rApache
# 19/07/2012
# Leandro Lima - @lelimat

setContentType("text/html")

cat('<html><head><title>Simple plot</title></head>\n')
cat('<body><H1>Simple plot</H1>\n')
cat('<form enctype=multipart/form-data method=POST action="">\n')

cat('Arquivo: <input type=file name=arquivo><br />\n')
cat('<select name=separador>\n')
cat('<option value=" ">Separador</option>\n')
cat('<option value=",">v&iacute;rgula (,)</option>\n')
cat('<option value=";">ponto-e-v&iacute;rgula (;)</option>\n')
cat('<option value=" ">espa&ccedil;o ( )</option>\n')
cat('</select><br />')
cat('Rotulo eixo x: <input type=text name=rotulo_eixo_x value="">')
cat('Rotulo eixo y: <input type=text name=rotulo_eixo_y value="">')
cat('<input type=submit name=Plotar>')
cat("<hr>\n")

# Verificando se algum arquivo foi enviado
if (!is.null(FILES)){

    separador <- POST$separador
    # Lendo o arquivo temporário criado durante o upload
    arquivo <- read.table(FILES$arquivo$tmp_name, sep=separador)

    # Rótulos dos eixos x e y
    rotulo_eixo_x <- try(as.character(POST$rotulo_eixo_x))
    rotulo_eixo_y <- try(as.character(POST$rotulo_eixo_y))

    # Criação do plot, na mesma pasta do script
    png("/var/www/tmp/plot.png")
    plot(arquivo, xlab=rotulo_eixo_x, ylab=rotulo_eixo_y)
    dev.off();

    # Mostrando imagem
    cat(paste("<img src=\"/tmp/plot.png\">\n",sep=''))

}

cat("</body></html>\n")
DONE


A página vai ser mostrada assim.


E esse é um exemplo de gráfico gerado para o
arquivo de entrada abaixo (separado por espaços).






































Arquivo plot.txt
1 1
2 4
3 9
4 16
5 25

terça-feira, 3 de julho de 2012

Criando arquivo do Excel (xls) com Python

Oi pessoal!

Hoje venho com uma dica legal para criar arquivos do Excel (extensão xls) a partir do Python. De forma parecida, você poderia criar arquivos do LibreOffice (extensão odt) ou mesmo tabelas em html.

Um dia desses me pediram para gerar um arquivo Excel com cores a partir de um arquivo de texto com sequências de DNA (um monte de bases A, T, C e G). Uma das alternativas é usar uma biblioteca do Python que permite fazer isso facilmente. Então hoje apresento a vocês a xlwt.

xlwthttp://pypi.python.org/pypi/xlwt/ | http://www.python-excel.org/

A partir de um conjunto de sequência (que podem vir de um arquivo texto), criei um arquivo Excel em que, dependendo da base (A, C, T ou G) a célula estaria em uma cor diferente. A biblioteca permite definir várias coisas como: número de planilhas, cor do texto e do fundo de células específicas, largura, altura, fórmulas matemáticas, entre outras coisas.

Veja o código abaixo para resolver o meu problema.


# -*- encoding: utf-8 -*-
# seq2xls.py - script para transformar sequências de nucleotídeos
#              (DNA) em arquivos de Excel (xls) com cores
# Criado em: 15/05/2012
# Última modificação: 03/07/2012
# Leandro Lima 

# Essa é a biblioteca a ser importada
import xlwt

# Aqui você define um estilo a ser usado
# (em quantas células você desejar).

# Iremos definir as seguintes cores (para o fundo da célula):
# A -> vermelho
styleA = xlwt.easyxf('pattern: pattern solid, fore_colour red;')

# C -> verde
styleC = xlwt.easyxf('pattern: pattern solid, fore_colour green;')

# G -> amarelo
styleG = xlwt.easyxf('pattern: pattern solid, fore_colour yellow;')

# T -> azul
styleT = xlwt.easyxf('pattern: pattern solid, fore_colour blue;')


# Definindo as sequências
sequencias = {'sequencia 1':'ACTGATCATGACATAGTAACCATGACATAGAA',
              'sequencia 2':'CTAGCATGCATGACTAGCATGACTGACTGACT',
              'sequencia 3':'CATCGACTCGACTCGACATCAGCAGCAGCATG',
              'sequencia 4':'CTGACTAGCAGATCAGCATACGACTAGCCACA',
              'sequencia 5':'CTAGCAGGACGACAGATTGACAGCAGAGCACA',
              'sequencia 6':'AATCACATCACGGCATACGACGACTAGCAGTA',
}

# Definindo planilha
wb = xlwt.Workbook()
ws = wb.add_sheet('Sequencias')

# Títulos das colunas
titles = ['identificador','sequencia']

# Escrevendo títulos na primeira linha do arquivo
for i in range(len(titles)):
    ws.write(0, i, titles[i])

# Definindo largura das células das sequência
for i in range(1,50):
    ws.col(i).width = 512

i = 1

for id_sequencia in sequencias.keys():

    # Obtendo a sequência do dicionário
    sequencia = sequencias[id_sequencia]

    # Escrevendo o identificar na 1ª coluna da linha i
    ws.write(i, 0, id_sequencia)

    for j in range(len(sequencia)):
        if j < len(sequencia):
            if sequencia[j]=='A':
                ws.write(i, 1+j, sequencia[j], styleA)
            elif sequencia[j]=='C':
                ws.write(i, 1+j, sequencia[j], styleC)
            elif sequencia[j]=='G':
                ws.write(i, 1+j, sequencia[j], styleG)
            elif sequencia[j]=='T':
                ws.write(i, 1+j, sequencia[j], styleT)
            else:
                ws.write(i, 1+j, sequencia[j])
        else:
            ws.write(i, 1+j, '')
    i += 1

# Salvando
wb.save('sequencias.xls')



O arquivo final vai sair com essa cara. Assim fica mais fácil saber se as sequências estão alinhadas em algum ponto.

Clique na imagem para ampliar

sexta-feira, 20 de abril de 2012

Systems Biology Lectures

Systems Biology (Biologia de Sistemas, ou Biologia Sistêmica) é o nome que se dá à maneira de estudar e compreender os fenômenos biológicos não como fatos isolados, mas como a interação de vários fatores. Apesar de parecer um curso puramente biológico, a disciplina envolve muito de estatística e computação.



Aqui estão os links dos videos de um curso de Systems Biology, pelo Prof. Uri Alon, do Weizmann Institute of Science. Clique no video abaixo para ver a aula 1.




Aula 2: http://www.youtube.com/watch?v=w7oaCxaKfcA
Aula 3: http://www.youtube.com/watch?v=7AS4mW4Qwl0
Aula 4: http://www.youtube.com/watch?v=3pPgPyS5ceQ
Aula 5: http://www.youtube.com/watch?v=YGB0OblGQ00
Aula 6: http://www.youtube.com/watch?v=GoE-k3-8W1E
Aula 7: http://www.youtube.com/watch?v=nJLu6GuCE0Q
Aula 8: http://www.youtube.com/watch?v=PxjibEIs3MY
Aula 9: http://www.youtube.com/watch?v=yzQdxNSJXik

sexta-feira, 13 de abril de 2012

Aulas de Computação na Udacity

PETER NORVIG
A partir de 16 de abril, a Udacity vai oferecer quatro novos cursos, e oferecer novamente CS101: Building a Search Engine e CS373: Programming a Robotic Car. Todos que quiserem podem acompanhar as aulas.

Inscrições para todas as turmas estão disponíveis em 
http://www.udacity.com



Disciplinas novas


CS212: The Design of Computer Programs
Peter Norvig vai ajudar os alunos a desenvolver um bom gosto como programadores aprendendo como identificar soluções elegantes para os problemas.



STEVE HUFFMAN
CS253: Web Application Engineering
Ministrado por Steve Huffman, co-fundador do Reddit.com e Hipmunk.com, este curso irá abranger as coisas que ele gostaria de ter aprendido ao iniciar seus sites, enquanto ele ensina os alunos a construir um blog.

CS262: Programming Languages
Wes Weimer, professor da Universidade de Virgínia, vai ensinar os alunos sobre linguagens de programação no contexto da construção de um navegador web. Os alunos vão aprender a entender de HTML e javascript de dentro para fora, escrevendo um programa que os compreenda.

CS387: Applied Cryptography

O professor da Udacity David Evans vai ensinar aos alunos os fundamentos matemáticos por trás da criptografia e ver como ela é usado para resolver problemas de computação. É tudo sobre como fazer e quebrar quebra-cabeças!

Udacity








quarta-feira, 4 de abril de 2012

ENADE Computação 2011 (prova, gabarito e padrão de respostas)

Olá pessoal!

É possível baixar a prova do ENADE (Exame Nacional de Desempenho dos Estudantes) 2011 junto com o gabarito e os padrões de respostas.



Basta clicar nos links abaixo.

Prova: http://download.inep.gov.br/educacao_superior/enade/provas/2011/COMPUTACAO.pdf
Gabarito: http://download.inep.gov.br/educacao_superior/enade/gabaritos/2011/Enade2011_Gab_Def_Computacao.pdf
Padrões de respostas: http://download.inep.gov.br/educacao_superior/enade/padrao_resposta/2011/COMPUTACAO.pdf

O ENADE é uma prova elaborada pelo Ministério da Educação para avaliar as Instituições de Ensino Superior no Brasil. Para saber mais sobre o ENADE, clique aqui.

É possível baixar provas de outras áreas aqui: http://portal.inep.gov.br/provas-e-gabaritos