Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

1,876 views

Published on

Published in: Education
2 Comments
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,876
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
58
Comments
2
Likes
0
Embeds 0
No embeds

No notes for slide

Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×