MAC0122
Princípios de Desenvolvimento de
Algoritmos

Veja Projeto de Algoritmos

Professores devem ajudar alunos a transformar
informação em conhecimento
.
—Anônimo

Ao verificar que um dado programa está muito lento,
uma pessoa prática pede uma máquina mais rápida
ao seu chefe.
Mas o ganho potencial
que uma máquina mais rápida pode proporcionar
é tipicamente limitado por um fator de 10,
por razões técnicas ou econômicas.
Para obter um ganho maior,
é preciso buscar melhores algoritmos.
Um bom algoritmo,
mesmo rodando em uma máquina lenta,
sempre acaba derrotando
(para instâncias grandes do problema)
um algoritmo pior rodando em uma máquina rápida.
Sempre.

—S. S. Skiena, The Algorithm Design Manual

MAC0122 é a segunda disciplina de computação no currículo do BCC.  Ela pressupõe uma boa prática de programação, particularmente em linguagem C;  o aluno deve ter adquirido essa prática em MAC0110 (Introdução à Computação).

MAC0122 estuda algoritmos para alguns problemas computacionais básicos. Isso serve de motivação para introduzir vários conceitos e ideias importantes:

Principais tópicos de MAC0122:

MAC0122 não é um curso de linguagem C.  A linguagem  C é apenas uma ferramenta: ela será usada para representar e testar algoritmos, que são o verdadeiro assunto da disciplina. (Apesar disso, eu sei que muitos alunos vão aprender muito C, por conta própria, no decorrer de MAC0122.)

Notas de aulas

Estas notas de aula são baseadas no livro de R. Sedgewick e no livro de E. Roberts.

Apêndices:

 


URL: https://www.ime.usp.br/~pf/mac0122-2002/
Atualizado em 2017-11-01
Paulo Feofiloff
DCC  |  IME  |  USP

 

Busca no sítio mac0122-2002

Outros assuntos:   Projeto de Algoritmos em C  |  Livro Algoritmos em C  |  Estruturas de Dados  |  Literate Programming & CWEB  |  O que é uma prova?  |  Uma Introdução Sucinta à Teoria dos Grafos  |  Exercícios de Teoria dos Grafos  |  Graph Theory Exercises  |  Digrafos  |  Algoritmos em Grafos com Stanford GraphBase  |  Algoritmos para Grafos via Sedgewick  |  Teoria dos Grafos via Diestel  |  Análise de Algoritmos  |  Minicurso de Análise de Algoritmos  |  Algoritmos de Programação Linear  |  Otimização Combinatória  |  Algoritmos de Aproximação