
Nessa aula será instalado o Python 3.
Nessa aula será apresentada o básico da sintaxe da linguagem Python.
Essa aula dará continuidade à apresentação da sintaxe básica da linguagem Python.
Essa aula dará continuidade à apresentação da sintaxe básica da linguagem Python.
Essa aula tem como objetivo apresentar o paradigma de programação funcional utilizando a linguagem Python.
Aula sobre recursividade.
Nessa aula iremos aprender a manipular listas.
Nessa aula iremos aprender sobre desempacotar (unpack) sequências.
Nessa aula iremos aprender a gerar números pseudo-aleatórios.
Nessa aula iremos conhecer o módulo math que é um módulo padrão do Python que implementa várias funções matemáticas.
Nessa aula iremos aprender a criar nossos próprios módulos.
Nessa aula iremos aprender a criar testes com o módulo unittest.
Nessa aula iremos aprender a criar testes com pytest.
Nessa aula iremos aprender um pouco sobre uma característica muito importante em orientação a objetos: herança.
Nessa aula iremos aprender sobre como encapsular dados.
Nessa aula iremos aprender sobre threads.
Nessa aula iremos conhecer um módulo padrão do python para desenvolver programas com interface gráfica.
Bottle é um micro web-framework escrito em Python. É rápido, simples e leve, baseado apenas em um arquivo, tornando o desenvolvimento de aplicações web bastante simples.
Nessa aula iremos criar e rodar jogos direto do browser com o CodeSkulptor.
Nessa aula será implementada a estrutura de dados pilha.
Nessa aula iremos otimizar o código da aula anterior: implementação da pilha.
Nessa aula iremos aprender uma estrutura de dados bastante útil: matrizes.
Nessa aula iremos aprender a implementar a estrutura de dados fila.
Explicação da estrutura de dados deque (pronuncia-se "deck"). Deque é um acrônimo de double-ended queue. Trata-se de uma fila onde você pode inserir e remover das duas pontas.
Implementação da estrutura de dados deque.
Criando um deque com o módulo collections.deque.
Nessa aula iremos conhecer a estrutura de dados lista ligada ou lista encadeada.
Início da implementação da lista ligada.
Implementação da lista ligada.
Simulação da árvore binária de busca.
Nessa aula iremos aprender a inserir e percorrer uma árvore binária de busca.
Implementação da função de remoção numa árvore binária de busca.
Continuação da remoção na árvore binária de busca.
Continuação da remoção na árvore binária de busca.
Testando a remoção na árvore binária de busca.
Explicação da fila de prioridades (priority queue).
Implementação da fila de prioridades utilizando lista ordenada.
Nessa aula iremos conhecer a estrutura de dados heap binária (binary heap). Essa estrutura pode ser utilizada para implementar uma fila de prioridades.
Nessa aula iremos implementar uma fila de prioridades utilizando o módulo heapq.
Nessa aula iremos conhecer a estrutura de dados chamada tabela hash (tabela de dispersão). Trata-se de uma estrutura que associa chaves de pesquisa a valores.
Nessa aula será implementada uma tabela hash utilizando encadeamento externo.
Nessa aula iremos aprender sobre dicionários.
Nessa aula conheceremos um tipo de dados para manipulação de conjuntos (sets). Um conjunto é uma coleção não ordenada que não possui elementos duplicados.
Revisão dos tipos de dados listas, tuplas, conjuntos e dicionários bem como análise da complexidade das operações dessas estruturas.
Nessa aula iremos estudar sobre análise assintótica. Análise assintótica serve para estimarmos a complexidade de tempo dos algoritmos.
Essa aula tem como propósito explicar a estrutura grafos. Grafo é uma estrutura matemática usada para representar as relações entre as coisas. O desenvolvimento de algoritmos para manipular grafos é muito importante em ciência da computação.
Nessa aula será implementado um grafo utilizando matriz de adjacência.
Implementação de grafos utilizando lista de adjacência.
Nessa aula iremos conhecer e implementar a busca em profundidade (depth-first search ou DFS). A busca em profundidade parte de um vértice inicial e explora tanto quanto possível cada um dos seus ramos antes de retroceder (backtracking). Ela pode ser usada em várias aplicações tais como encontrar componentes conectados, resolver quebra-cabeças (labirinto), ordenação topológica de um grafo dentre outras aplicações.
Nessa aula iremos conhecer a busca em largura (breadth-first search ou BFS). A busca em largura começa de um vértice e explora todos os vértices vizinhos. Então para cada um desses vértices vizinhos, explora os seus vértices vizinhos ainda não visitados e assim por diante.
Nessa aula iremos implementar a busca em largura.
Nessa aula iremos implementar grafos com o módulo defaultdict.
Nessa aula iremos aprender um método para resolver problemas: programação dinâmica.
Nessa aula iremos aprender sobre algoritmos gulosos.
Nessa aula iremos conhecer o algoritmo de Dijkstra que resolve o problema do caminho mais curto em um grafo dirigido ou não dirigido com arestas de peso não negativo.
Implementação do algoritmo de Dijkstra.
Detectando ciclos em grafos direcionados.
Nessa aula iremos falar sobre backtracking. Backtracking é um tipo de algoritmo que representa um refinamento da busca por força bruta. Com o backtracking, várias soluções podem ser eliminadas sem serem explicitamente examinadas.
Nessa aula iremos resolver o problema de gerar todos os subconjuntos utilizando backtracking.
Nessa aula iremos conhecer o algoritmo de ordenação Bubble sort.
Nessa aula iremos implementar o Bubble sort.
Nessa aula iremos conhecer o algoritmo de ordenação Selection Sort.
Implementação do algoritmo de ordenação Selection Sort.
Nessa aula iremos conhecer o algoritmo de ordenação Insertion sort.
Nessa aula iremos implementar o algoritmo de ordenação Insertion sort.
Nessa aula iremos conhecer o algoritmo de ordenação Quick sort.
Nessa aula iremos implementar o algoritmo de ordenação Quick sort.
Nessa aula iremos ordenar coisas com a função sort.
Nessa aula iremos conhecer a metaheurística Simulated Annealing.
Uma metaheurística visa a produzir um resultado satisfatório para um problema, porém sem qualquer garantia de otimalidade. Metaheurísticas são aplicadas para encontrar respostas a problemas sobre os quais há poucas informações: não se sabe como é a aparência de uma solução ótima, há pouca informação heurística disponível e força-bruta é desconsiderada devido ao espaço de solução ser muito grande.
Simulated Annealing é um algoritmo de busca local baseado no conceito de recozimento, um processo que consiste em aquecer um metal até o ponto de fusão e então resfriá-lo, lentamente, permitindo que as moléculas alcancem uma configuração de baixa energia e formem uma estrutura cristalina, livre de defeitos.
Nessa aula iremos resolver um problema utilizando a metaheurística Simulated Annealing.
Nessa aula iremos discutir um problema clássico em Ciência da Computação: o Problema do Caixeiro Viajante (PCV). Trata-se de um problema que tenta determinar a menor rota (de menor custo) para percorrer uma série de cidades (vértices) visitando uma única vez cada uma delas e retornando à cidade de origem. Esse é um problema de otimização NP-difícil.
Nessa aula iremos criar um gerador de grafos completo. Um grafo completo é um grafo simples em que qualquer vértice é adjacente a todos os outros vértices.
Gerador de grafos completos incrementado.
Resolvendo o problema do caixeiro viajante aleatoriamente.
Resolvendo o problema do caixeiro viajante aleatoriamente.
Algoritmos Genéticos - Definição - Parte 1.
Algoritmos Genéticos - Definição - Parte 2
Algoritmos Genéticos - Definição - Parte 3
Nessa aula iremos utilizar algoritmos genéticos para resolver o problema do caixeiro viajante.
Algoritmos Genéticos para o PCV - Parte 2
Algoritmos Genéticos para o PCV - Parte 3
Algoritmos Genéticos para o PCV - Parte 4
Redes Neurais Artificiais (RNAs) são modelos computacionais inspirados no sistema nervoso central que são capazes de realizar o aprendizado de máquina bem como o reconhecimento de padrões. Aprendizado de máquina é uma subárea da Inteligência Artificial dedicado ao desenvolvimento de algoritmos e técnicas que permitam o computador aprender algo.
Redes Neurais Artificiais (RNAs) são modelos computacionais inspirados no sistema nervoso central que são capazes de realizar o aprendizado de máquina bem como o reconhecimento de padrões. Aprendizado de máquina é uma subárea da Inteligência Artificial dedicado ao desenvolvimento de algoritmos e técnicas que permitam o computador aprender algo.
Redes Neurais Artificiais (RNAs) são modelos computacionais inspirados no sistema nervoso central que são capazes de realizar o aprendizado de máquina bem como o reconhecimento de padrões. Aprendizado de máquina é uma subárea da Inteligência Artificial dedicado ao desenvolvimento de algoritmos e técnicas que permitam o computador aprender algo.
Redes Neurais Artificiais (RNAs) são modelos computacionais inspirados no sistema nervoso central que são capazes de realizar o aprendizado de máquina bem como o reconhecimento de padrões. Aprendizado de máquina é uma subárea da Inteligência Artificial dedicado ao desenvolvimento de algoritmos e técnicas que permitam o computador aprender algo.
Nessa aula iremos implementar uma rede neural perceptron.
Nessa aula daremos continuidade à implementação da rede neural perceptron.
Nessa aula daremos continuidade à implementação da rede neural perceptron.
PyBrain é uma biblioteca de machine learning para Python. Nessa aula iremos construir redes neurais com PyBrain.
A Busca Tabu é uma metaheurística e um procedimento adaptativo auxiliar, que guia um algoritmo de busca local na exploração contínua dentro de um espaço de busca.
Nessa aula daremos continuidade à explicação da busca tabu.
Nessa aula daremos continuidade à explicação da busca tabu.
Nessa aula iremos implementar a busca tabu para resolver o problema da mochila.
Nessa aula iremos implementar a busca tabu para resolver o problema da mochila.
Nessa aula iremos implementar a busca tabu para resolver o problema da mochila.
Nessa aula iremos ver como fazer uma busca binária em uma lista.
Nessa aula iremos conhecer e implementar a distância Hamming.
Nessa aula iremos conhecer a distância de edição (edit distance) que é uma métrica para mensurar a diferença entre duas strings.
Nessa aula iremos conhecer um algoritmo de força bruta (brute-force) para pattern-matching (correspondência de padrão).
Nessa aula iremos conhecer o algoritmo de Needleman-Wunsch que realiza o alinhamento global de duas sequências. Trata-se de um algoritmo bastante utilizado em Bioinformática para alinhar sequências de nucleotídeos ou proteínas. Esse algoritmo é um exemplo de aplicação de programação dinâmica.
Nessa aula iremos implementar o algoritmo de Needleman-Wunsch.
Nessa aula daremos continuidade à implementação do algoritmo de Needleman-Wunsch.
Agrupamento (clustering) é uma técnica de mineração de dados (data mining) que realiza agrupamentos automáticos de dados segundo um determinado grau de semelhança.
Nessa aula iremos implementar o algoritmo K-Means.
Implementação do algoritmo K-Means.
Implementação do algoritmo K-Means.
Implementação do algoritmo K-Means.
Implementação do algoritmo K-Means.
Implementação do algoritmo K-Means.
Nessa aula iremos conhecer um dos métodos mais simples de criptografia: Cifra de César.
Nessa aula iremos implementar a Cifra de César.
Nessa aula iremos conhecer a PyGame. Pygame é uma biblioteca de jogos multiplataforma feita para ser utilizada em conjunto com a linguagem de programação Python.
Nessa aula iremos iniciar a construção do nosso joguinho chamado "Rocket Game". Iremos utilizar a biblioteca PyGame.
Nessa aula finalizaremos a construção do Rocket Game.
Nessa aula iremos construir um programa com interface gráfica chamado "Facebook profile photo". Iremos utilizar o móduko tkinter onde o usuário passará o ID e será exibida a foto do perfil do Facebook.
Nessa aula iremos conhecer o módulo sqlite3 que já vem por padrão com Python 3. SQLite é um banco de dados que pode ser disponibilizado junto com a aplicação. É muito prático e fácil de usar.
Nessa aula iremos desenvolver um programa com interface gráfica para fazer o download de vídeos do YouTube. O programa se chamará "YouTube Downloader" e será desenvolvido utilizando o módulo para interface gráfica tkinter e o módulo pytube para fazer o download dos vídeos.
Nessa aula iremos aprender a programar (agendar) tarefas utilizando o módulo schedule.
Nessa aula iremos ver como é fácil manipular arquivos em Python.
Nessa aula iremos utilizar um módulo para tradução online utilizando Python.
Nessa aula iremos fazer um programinha básico para que o usuário tente adivinhar um número. Iremos utilizar entrada de dados input.
Nessa aula iremos gerar todas as permutações com o módulo itertools.
Nessa aula iremos ter uma noção básica de decorators que é um recurso muito poderoso da linguagem Python.
Construção do game Space Invaders utilizando PyGame.
Construção do game Space Invaders utilizando PyGame.
Construção do game Space Invaders utilizando PyGame.
Construção do game Space Invaders utilizando PyGame.
Construção do game Space Invaders utilizando PyGame.
Construção do game Space Invaders utilizando PyGame.
Construção do game Space Invaders utilizando PyGame.
Nessa aula iremos aprender um pouco sobre expressões regulares.
Nessa aula iremos conhecer o módulo urllib.
Manipulando arquivos ZIP com o módulo zipfile
Essa aula tem como objetivo incentivar o uso de Python em Bioinformática.
Nessa aula iremos conhecer um conjunto de ferramentas para Bioinformática: Biopython.
Nessa aula iremos falar um pouco mais sobre strings.
Nessa aula iremos medir a similaridade entre strings utilizando utilizando a classe SequenceMatcher do módulo difflib.
Nessa aula iremos gerar QR Codes utilizando a linguagem Python. QR Code (Quick Response code) é um código de barras em 2D que pode ser facilmente escaneado usando smartphones. Iremos utilizar o módulo de terceiros qrcode.
Nessa aula iremos conhecer o módulo NumPy. Trata-se de um módulo de alto nível para trabalhar com vetores e matrizes.
Nessa aula iremos conhecer a biblioteca matplotlib que serve para plotar gráficos.
Nessa aula iremos estender código Python com código em C.
Nessa aula iremos estender código Python com código em C.
Nessa aula iremos utilizar módulos de terceiros para manipular arquivos no formato PDF.
Nessa aula iremos falar sobre escopos e namespaces.
Nessa aula iremos construir o nosso próprio editor de texto utilizando o módulo padrão Tkinter.
Nessa aula iremos conhecer a OpenCV e desenvolver um pequeno aplicativo.
PySide é um wrapper do Python para a biblioteca Qt. Trata-se de uma alternativa ao Tkinter.
Nessa aula irei indicar alguns livros excelentes para aprender e praticar a linguagem Python.
Considerações finais sobre o curso, muito obrigado :)
A escolha de uma determinada estrutura de dados influencia bastante na eficiência de um software, ou seja, a organização dos dados durante o processamento tem um efeito crucial na velocidade do software.
Esse curso tem como objetivo apresentar as mais variadas estruturas de dados de modo que elas possam ser utilizadas eficientemente. Os estudantes irão aprender a implementar várias estruturas de dados através do estudo de algoritmos para a criação e manipulação dessas estruturas.
Será utilizada a linguagem Python 3 para facilitar a compreensão e implementação das estruturas. A linguagem Python é uma linguagem fácil de aprender que permite um desenvolvimento ágil mesmo para quem não tem tanta intimidade com a linguagem.