Python 3: Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados utilizando a linguagem Python 3
4.4 (161 ratings)
Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
759 students enrolled
Instructed by Marcos Castro IT & Software / Other
$19
$50
62% off
Take This Course
  • Lectures 150
  • Length 23 hours
  • Skill Level All Levels
  • Languages Portuguese
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

Learn and practice real-world skills and achieve your goals.

About This Course

Published 1/2016 Portuguese

Course Description

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.

What are the requirements?

  • É aconselhável (não obrigatório) ter uma noção de lógica de programação.

What am I going to get from this course?

  • Conhecer as mais variadas estruturas de dados.
  • Criar suas próprias estruturas de dados.
  • Ter uma boa noção de armazenamento e organização de dados.
  • Entendimento e implementação de vários algoritmos importantes.

What is the target audience?

  • Devem fazer esse curso todas as pessoas que queiram aprender mais sobre algoritmos e estruturas de dados utilizando a linguagem Python.

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.

Curriculum

Section 1: Começando a programar em Python
06:49

Nessa aula será instalado o Python 3.

11:04

Nessa aula será apresentada o básico da sintaxe da linguagem Python.

5 questions

Esse teste tem como objetivo testar seus conhecimentos em relação à sintaxe da linguagem Python.

08:28

Essa aula dará continuidade à apresentação da sintaxe básica da linguagem Python.

3 questions

Esse teste tem como objetivo testar seus conhecimentos em relação à sintaxe da linguagem Python.

14:16

Essa aula dará continuidade à apresentação da sintaxe básica da linguagem Python.

2 questions

Esse teste tem como objetivo testar seus conhecimentos em relação à sintaxe da linguagem Python.

10:43

Essa aula tem como objetivo apresentar o paradigma de programação funcional utilizando a linguagem Python.

3 questions

Teste sobre programação funcional.

12:17

Aula sobre recursividade.

2 questions

Teste sobre recursividade.

11:37

Nessa aula iremos aprender a manipular listas.

2 questions

Testes sobre listas.

05:02

Nessa aula iremos aprender sobre desempacotar (unpack) sequências.

04:29

Nessa aula iremos aprender a gerar números pseudo-aleatórios.

1 question

Testes sobre o módulo random.

03:12

Nessa aula iremos conhecer o módulo math que é um módulo padrão do Python que implementa várias funções matemáticas.

02:43

Nessa aula iremos aprender a criar nossos próprios módulos.

06:50

Nessa aula iremos aprender a criar testes com o módulo unittest.

1 question

Testes sobre o módulo unittest.

10:38

Nessa aula iremos aprender a criar testes com pytest.

09:01

Nessa aula iremos aprender um pouco sobre uma característica muito importante em orientação a objetos: herança.

2 questions

Exercícios sobre herança.

06:35

Nessa aula iremos aprender sobre como encapsular dados.

06:05

Nessa aula iremos aprender sobre threads.

1 question

Exercícios sobre threads.

05:52

Nessa aula iremos conhecer um módulo padrão do python para desenvolver programas com interface gráfica.

2 questions

Testes sobre o módulo tkinter.

07:31

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.

1 question

Exercícios sobre o framework Bottle.

15:32

Nessa aula iremos criar e rodar jogos direto do browser com o CodeSkulptor.

Section 2: Algoritmos e Estruturas de Dados
14:11

Nessa aula será implementada a estrutura de dados pilha.

1 question

08:44

Nessa aula iremos otimizar o código da aula anterior: implementação da pilha.

10:27

Nessa aula iremos aprender uma estrutura de dados bastante útil: matrizes.

1 question

Exercícios sobre matrizes.

11:26

Nessa aula iremos aprender a implementar a estrutura de dados fila.

2 questions

Exercícios sobre fila.

03:12

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.

11:48

Implementação da estrutura de dados deque.

04:01

Criando um deque com o módulo collections.deque.

05:27

Nessa aula iremos conhecer a estrutura de dados lista ligada ou lista encadeada.

13:54

Início da implementação da lista ligada.

15:30

Implementação da lista ligada.

1 question

Exercícios sobre lista ligada.

08:04

Simulação da árvore binária de busca.

14:16

Nessa aula iremos aprender a inserir e percorrer uma árvore binária de busca.

16:26

Implementação da função de remoção numa árvore binária de busca.

18:21

Continuação da remoção na árvore binária de busca.

08:45

Continuação da remoção na árvore binária de busca.

06:41

Testando a remoção na árvore binária de busca.

2 questions

Exercícios sobre árvore binária de busca.

09:35

Explicação da fila de prioridades (priority queue).

15:08

Implementação da fila de prioridades utilizando lista ordenada.

12:55

Nessa aula iremos conhecer a estrutura de dados heap binária (binary heap). Essa estrutura pode ser utilizada para implementar uma fila de prioridades.

09:04

Nessa aula iremos implementar uma fila de prioridades utilizando o módulo heapq.

1 question

Exercícios sobre fila de prioridades.

08:43

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.

08:47

Nessa aula será implementada uma tabela hash utilizando encadeamento externo.

04:40

Nessa aula iremos aprender sobre dicionários.

2 questions

Exercícios sobre tabelas hash.

06:20

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.

1 question

Exercícios sobre conjuntos.

08:13

Revisão dos tipos de dados listas, tuplas, conjuntos e dicionários bem como análise da complexidade das operações dessas estruturas.

3 questions

Esses exercícios irão testar seus conhecimentos sobre as estruturas listas, tuplas, conjuntos e dicionários.

07:12

Nessa aula iremos estudar sobre análise assintótica. Análise assintótica serve para estimarmos a complexidade de tempo dos algoritmos.

3 questions

Exercícios sobre análise assintótica.

18:13

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.

1 question

Exercícios sobre grafos.

10:12

Nessa aula será implementado um grafo utilizando matriz de adjacência.

06:54

Implementação de grafos utilizando lista de adjacência.

18:36

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.

05:15

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.

08:07

Nessa aula iremos implementar a busca em largura.

1 question

Exercícios sobre busca em grafos.

11:48

Nessa aula iremos implementar grafos com o módulo defaultdict.

07:21

Nessa aula iremos aprender um método para resolver problemas: programação dinâmica.

1 question

Exercícios sobre programação dinâmica.

08:20

Nessa aula iremos aprender sobre algoritmos gulosos.

19:18

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.

12:01

Implementação do algoritmo de Dijkstra.

1 question

Exercícios sobre o algoritmo de Dijkstra.

14:18

Detectando ciclos em grafos direcionados.

07:45

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.

06:15

Nessa aula iremos resolver o problema de gerar todos os subconjuntos utilizando backtracking.

05:02

Nessa aula iremos conhecer o algoritmo de ordenação Bubble sort.

07:30

Nessa aula iremos implementar o Bubble sort.

05:44

Nessa aula iremos conhecer o algoritmo de ordenação Selection Sort.

03:14

Implementação do algoritmo de ordenação Selection Sort.

03:52

Nessa aula iremos conhecer o algoritmo de ordenação Insertion sort.

03:14

Nessa aula iremos implementar o algoritmo de ordenação Insertion sort.

07:36

Nessa aula iremos conhecer o algoritmo de ordenação Quick sort.

04:22

Nessa aula iremos implementar o algoritmo de ordenação Quick sort.

2 questions

Exercícios sobre algoritmos de ordenação.

05:56

Nessa aula iremos ordenar coisas com a função sort.

16:04

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.

11:49

Nessa aula iremos resolver um problema utilizando a metaheurística Simulated Annealing.

09:52

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.

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Olá, meu nome é Marcos Castro e eu amo compartilhar conhecimento!

A minha formação é em Ciência da Computação. Além da computação, me interesso por educação a distância, empreendedorismo, marketing digital, inteligência artificial, ciência de dados e muito mais.

Elaborei mais de 30 cursos, tenho mais de 10 mil alunos espalhados por mais de 70 países. Acredito que a educação pode transformar as pessoas contribuindo para um mundo melhor!

Ready to start learning?
Take This Course