O documento discute o uso da linguagem de programação Python em cursos de Ciência da Computação, destacando estruturas de dados, bibliotecas e ferramentas como NumPy, SciPy, Sage, PyODE, PyGame e Twisted que podem ser utilizadas nos cursos.
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Python na Ciência da Computação - FLISOL 2011
1. Uso de Python em cursos de Ciˆncia da
e
Computa¸˜o
ca
Estruturas, bibliotecas e ferramentas
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e
9 de abril de 2011
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
2. Apresenta¸˜o
ca
Quem ´ esse cara?
e
1 Mestre em Ciˆncia da Computa¸˜o pela UFSC
e ca
2 Professor desde 1995
1 Usu´rio Unix desde 1992 e Linux desde 1999
a
2 Entusiasta de software de c´digo aberto
o
1 Membro da comunidade Python desde 2004
2 Membro-fundador da Associa¸˜o Python Brasil (APyB)
ca
3 Membro da diretoria da APyB
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
3. Uma breve introdu¸˜o
ca
Sobre a linguagem
1 Criada por Guido van Rossum em 1991
2 Origem do nome: grupo de humoristas
Monty Python
3 Linguagem de alt´
ıssimo n´ (VHLL)
ıvel
4 Sintaxe de f´cil leitura
a
5 Orientada ` objetos, estruturada e funcional
a
6 Tipagem forte e dinˆmica
a
7 Multiplataforma
8 Interpretada
9 Ambiente interativo
10 Licen¸a compat´ com a GPL
c ıvel
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
4. Estruturas de dados nativas
1 Strings
2 Listas
3 Tuplas
4 Dicion´rios
a
5 Sets
6 Frozensets
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
5. NumPy
Matem´tica
a
1 Poderoso array N-dimensional de objetos
2 integra¸˜o com c´digo C/C++ e Fortran
ca o
3 fun¸˜es de ´lgebra linear, transformada de Fourier e n´meros
co a u
aleat´rios
o
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
6. SciPy
Matem´tica
a
1 Utiliza como base o NumPy para lidar eficientemente com
grandes quantidades de n´meros
u
2 Implementa: Estat´ ısticas, otimiza¸˜o, integra¸˜o num´rica,
ca ca e
processamento de sinais e imagens, solu¸˜o de equa¸˜es
ca co
diferenciais, fun¸˜es especiais (Bessel, etc.), polinˆmios, etc.
co o
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
7. Sage
Matem´tica
a
1 Aplicativo de matem´tica GPL
a
2 Combina o poder de muitos pacotes de c´digo aberto
o
existentes em uma interface Python comum
3 Miss˜o: Criar uma alternativa livre e de c´digo aberto para
a o
Magma, Maple, Mathematica e Matlab.
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
8. PyODE
Computa¸˜o Gr´fica
ca a
1 PyODE ´ um binding de ODE para Python
e
2 ODE: simula¸˜o de dinˆmica de objetos r´
ca a ıgidos
3 Jun¸˜es e detec¸˜o de colis˜o com fric¸˜o
co ca a ca
4 Simula¸˜o de ve´
ca ıculos, objetos e criaturas em ambientes
virtuais
5 Jogos de computador, ferramentas de autoria 3D e de
simula¸˜o
ca
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
9. PyOpenGL
Computa¸˜o Gr´fica
ca a
1 PyOpenGL: binding de OpenGL para Python
2 OpenGL: API livre utilizada na computa¸˜o gr´fica
ca a
3 Desenvolvimento de aplicativos gr´ficos, ambientes 3D, jogos,
a
entre outros
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
10. PIL - Python Image Library
Processamento de Imagens
1 suporte ` abertura e grava¸˜o de muitos formatos de imagem
a ca
diferentes
2 formatos suportados: PNG, TIFF, BMP, EPS e GIF
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
11. PyGlet
Computa¸˜o Gr´fica, anima¸˜o e jogos
ca a ca
1 Desenvolvimento de jogos e aplica¸˜es visualmente ricas
co
2 Suporte para eventos de mouse e teclado
3 Pode carregar diversos formatos de arquivos de multim´
ıdia
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
12. Cocos 2D
Anima¸˜o e jogos
ca
1 Framework para a constru¸˜o de jogos, demos e outras
ca
aplica¸˜es gr´ficas e interativas em 2D
co a
2 Utiliza PyGlet e OpenGL
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
13. PyGame
Anima¸˜o e jogos
ca
1 M´dulo multi-plataforma projetado para escrever jogos.
o
2 Inclui bibliotecas de computa¸˜o gr´fica de som.
ca a
3 ´ constru´ sobre a biblioteca SDL (Simple DirectMedia
E ıda
Layer)
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
14. Panda 3D
Anima¸˜o e jogos
ca
1 Motor de jogo 3D escrito em C++ para ser usado com Python
2 Desenvolvido pela Disney e Carnegie Mellon University’s
Entertainment Technology Center
3 Possui motor de f´
ısica, texturas animadas, suporte a shaders e
som 2D e 3D
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
15. AIMA
Inteligˆncia Artificial
e
1 C´digo em Python dos algoritmos do livro Artificial
o
Intelligence: a Modern Approach, de Peter Norvig
2 O livro-texto apresenta os algoritmos em pseudo-c´digo
o
3 Existem os c´digos em Lisp tamb´m, para compara¸˜o
o e ca
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
16. Peach
Inteligˆncia Artificial
e
1 M´dulo escrito puramente em Python, baseado nas bibliotecas
o
cient´
ıficas SciPy e NumPy
2 Implementa¸˜o de algoritmos de inteligˆncia computacional e
ca e
aprendizado de m´quina
a
3 Redes neurais artificiais, l´gica fuzzy, algoritmos gen´ticos,
o e
inteligˆncia de enxames e muito mais
e
4 Objetivo primariamente educacional
5 Cuidado com a eficiˆncia na implementa¸˜o
e ca
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
17. Compiladores
1 PLY: Python Lex-Yacc
2 PyParsing
3 Parsing: Python parser generator module
4 ANTLR: ANother Tool for Language Recognition
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
18. PyDot e Graphviz
Grafos
1 pydot ´ uma interface da linguagem de pontos Graphviz’s
e
para Python
2 Permite a cria¸˜o f´cil de grafos dirigidos e n˜o dirigidos
ca a a
3 Grafos abstratos e redes podem ser criados automaticamente
4 Desenvolvido pelos laborat´rios de pesquisa da AT&T
o
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
19. NetworkX
Grafos
1 Cria¸˜o, manipula¸˜o e estudo da estrutura, dinˆmica e
ca ca a
fun¸˜es das redes complexas
co
2 Adequado para opera¸˜o em grandes gr´ficos reais (p.e. mais
ca a
de 10 milh˜es de n´s e 100 milh˜es de bordas)
o o o
3 Utiliza dicion´rios de dicion´rios de Python como estrutura
a a
4 Pode ser usado para an´lises de redes e de redes sociais
a
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
20. PyMetric
Grafos
1 Simula¸˜o interativa de rede e ferramenta de
ca
visualiza¸˜o
ca
2 Tra¸a caminhos dado um conjunto de n´s e
c o
enlaces com m´tricas
e
3 Simula¸˜o de mudan¸as do sistema m´trico,
ca c e
falhas de roteador e interrup¸˜es de enlaces,
co
mudan¸as na topologia e roteamento
c
4 Considera cargas em enlaces e mudan¸as
c
que afetam a distribui¸˜o de carga
ca
5 Estat´
ısticas sobre a topologia: caminhos de
custo-igual, liga¸˜es com custos
co
assim´tricos, caminho mais longo
e
6 Sugere mudan¸as m´tricas em engenharia de
c e
tr´fego
a
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
21. PL/Python
Banco de Dados e SQL
1 ”O banco de dados livre mais avan¸ado do mundo”
c
2 Stored procedures (em PL/PgSQL), triggers, domains
3 Programa¸˜o de procedures: uso de outras linguagens de
ca
programa¸˜o
ca
4 Atualmente suportadas: python, ruby, tcl, perl, Java, PHP e C
5 Python: simples, poderosa e com muitas bibliotecas
dispon´
ıveis
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
22. ZODB - Zope Object Data Base
Banco de Dados Orientado a Objetos
1 Banco de dados transacional orientado a objetos livre utilizado
pelo servidor de aplica¸˜o Zope para armazenamento
ca
transparente de objetos Python
2 Pode ser usado independentemente
3 Caracter´
ısticas: transa¸˜es, hist´rico/cancelamento,
co o
armazenamento transparente conect´vel, cache embutido,
a
controle de concorrˆncia multivers˜o (MVCC) e escalabilidade
e a
atrav´s da rede (usando ZEO)
e
4 Reposit´rio de dados Python maduro que possui centenas de
o
milhares de sistemas rodando sobre ele atualmente
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
23. Twisted
Protocolos de redes
1 Framework de rede de c´digo aberto escrito inteiramente em
o
Python
2 Permite a cria¸˜o de proxies SMTP, HTTP e servidores SSH
ca
(e mais) em Python com o m´ ınimo esfor¸o
c
3 ´ ass´
E ıncrono e dirigido a eventos
4 N˜o exige o uso de modelos tradicionais de threading
a
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
24. Socket e Asyncore
Protocolos de redes
Socket
1 Interface de rede de baixo n´
ıvel
2 Fornece interface semelhante ` BSD
a
Asyncore
1 Infra-estrutura b´sica para escrever servi¸os de socket
a c
ass´
ıncrono para clientes e servidores
2 Meio termo entre socket e Twisted
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
25. PyRO - Python Remote Objects
Sistemas Distribu´
ıdos
1 Comunica¸˜o de objetos em rede de forma simples
ca
2 Acesso a objetos em diferentes m´quinas na rede como se
a
fossem locais
3 Lembra Java Remote Method Invocation (RMI).
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
26. Multithreading
Processamento distribu´
ıdo, paralelo e multiprocessamento
1 threading: primitivas de baixo n´ para trabalhar com
ıvel
m´ltiplos threads
u
2 Qeue: filas LIFO, FIFO e de prioridade com multi-produtores e
consumidores
3 multiprocessing: oferece concorrˆncia local e remoto, usando
e
subprocessos em vez de threads
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
27. Python Cryptography Toolkit
Criptografia
1 Algoritmos de criptografia: RC4, Blowfish, DES, Diamond,
IDEA, LOKI91, RC5, REDOC III, Sapphire.
2 Algoritmos de hash: MD2, MD4, MD5, Secure Hash
Algorithm
3 Algoritmos de chave p´blica: ElGamal, RSA
u
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
28. Lista de discuss˜o
a
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
29. Python Brasil[7]
Encontro brasileiro da comunidade Python
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
30. Comunidade Python Brasil
Acesse e assine nossa lista
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
31. Dorneles Trem´a: 1979 - 2011
e
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
32. 1 Estes slides: slideshare.com/marrcandre
2 google*: marcoandre@gmail.com
3 twitter: @marrcandre
4 blog: marrcandre.blogspot.com
random.choice([’pergunta’, ’d´vida’, ’discuss˜o’])
u a
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca