1. O documento discute o uso da linguagem de programação Python em cursos de Ciência da Computação, apresentando diversas bibliotecas, estruturas de dados e ferramentas da linguagem úteis para esse fim.
2. São apresentadas estruturas de dados nativas da linguagem como strings, listas, tuplas, dicionários e conjuntos, além de bibliotecas para computação numérica (NumPy, SciPy), computação gráfica (PyOpenGL, PyGame), processamento de imagens (PIL) e inteligência artificial (AIMA, Peach).
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
24 de setembro de 2010
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 simples e f´cil de ser assimilada
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. Strings
Estruturas de dados nativas
1 Armazenam texto (conjuntos de caracteres)
2 Crescem at´ o limite da mem´ria
e o
3 Substituem char e vetor de char
4 Acesso sequencial, em fatias ou direto por ´
ındice
5 Implementadas com listas encadeadas
6 S˜o objetos com diversos m´todos: procurar, contar, mudar
a e
caixa, etc.
7 Podem ser utilizadas para implementar outras estruturas como
pilhas e filas
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
5. Listas e tuplas
Estruturas de dados nativas
1 Armazenam cole¸˜es de objetos heterogˆneos
co e
2 Crescem at´ o limite da mem´ria
e o
3 Substituem vetores, matrizes, registros e listas encadeadas
4 Acesso sequencial, em fatias ou direto por ´
ındice
5 Implementadas com listas encadeadas
6 S˜o objetos com diversos m´todos: adicionar, remover,
a e
ordenar, procurar, contar
7 Podem ser utilizadas para implementar outras estruturas como
pilhas e filas
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
6. Dicion´rios
a
Estruturas de dados nativas
1 Armazenam pares chave/valor de forma desordenada
2 Crescem at´ o limite da mem´ria
e o
3 Podem ser utilizados para persistir dados
4 Acesso sequencial ou direto pela chave
5 Implementados com tabelas hash
6 S˜o objetos com diversos m´todos: adicionar, remover,
a e
procurar, contar
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
7. Conjuntos (Sets, Frozensets)
Estruturas de dados nativas
1 Armazenam cole¸˜es de objetos unicos e desordenados
co ´
2 Crescem at´ o limite da mem´ria
e o
3 Acesso atrav´s de percurso
e
4 Implementados com tabelas hash
5 S˜o objetos com diversos m´todos: uni˜o, disjun¸˜o,
a e a ca
diferen¸a, etc.
c
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
8. 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
co a
capacidades de n´meros aleat´rios
u o
Marco Andr´ Lopes Mendes <marcoandre@gmail.com>
e Uso de Python em cursos de Ciˆncia da Computa¸˜o
e ca
9. 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,<marcoandre@gmail.com> (Bessel, etc.), polinˆncia da Computa¸˜o
Marco Andr´ Lopes Mendes
e fun¸˜es especiais Uso de Python em cursos de Ciˆ mios, etc. ca
co o
e
10. 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
11. 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
12. 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
13. 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
14. PyGlet
Computa¸˜o Gr´fica, anima¸˜o e jogos
ca a ca
1 Desenvolvimento de jogos e outras aplica¸˜es visualmente
co
ricas
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
15. 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
16. 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
17. 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
18. 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
19. 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
20. 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
21. 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
22. NetworkX
Grafos
1 Cria¸˜o, manipula¸˜o e estudo da estrutura, dinˆmica e
ca ca a
fun¸˜es das redes complexas
co
2 ´
E adequado para a opera¸˜o em grandes gr´ficos do mundo
ca a
real, p.e. com mais de 10 milh˜es de n´s e 100 milh˜es de
o o o
bordas
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
23. 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
24. 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
25. 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
26. 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
27. 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
28. 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
fosse local
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
29. 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
30. 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
31. 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
32. Pythn Brasil[6]
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
33. 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