Programas de computador armazenam, acessam e manipulam informações, isto é, dados. Programas são uma formulação concreta de algoritmos abstratos baseados em uma representação particular dos dados. Muito do que é feito em várias áreas da Ciência da Computação (tais como compiladores, computação gráfica ou sistemas operacionais) é buscar maneiras de representar os dados para que o armazenamento, acesso e manipulação destes seja feito de maneira eficiente (ou seja, rápida e gastando pouco espaço).
Sempre que representamos dados em um computador consideramos cada um dos seguintes aspectos:
Os itens (1) e (2) acima dizem respeito ao tipo abstrato de dados, ou seja, ao modelo matemático junto com uma coleção de operações definidas sobre este modelo. (Um exemplo de tipo abstrado de dados é o conjunto dos números inteiros com as operações de soma, subtração, multiplicação e divisão sobre inteiros.) Já os itens (3) e (4) estão relacionados aos aspectos de implementação. Para representar um tipo abstrato de dados em um computador usamos uma estrutura de dados, que é uma coleção de variáveis, possivelmente de diferentes tipos, relacionadas de diversas maneiras.
Uma boa escolha das estruturas de dados usadas na resolução de um problema é essencial para se obter um algoritmo eficiente para o problema.
Nesta disciplina consideraremos vários tipos abstratos de dados e estudaremos diferentes estruturas de dados para armazenar (representar) estes tipos, juntamente com os algoritmos para manipular estas estruturas. Existem várias estruturas de dados para um mesmo tipo abstrato de dados e em geral não existe uma estrutura de dados que é a melhor para todas as circunstâncias.
As estruturas de dados que veremos nasceram de aplicações cotidianas de Ciência da Computação. Novas aplicações irão requerer a criação de novas estruturas de dados. Esperamos que esta disciplina forneça elementos e técnicas que possam ajudá-los a projetar/escolher boas estruturas de dados.
Nas aulas, serão apresentadas várias estruturas de dados para diferentes tipos abstratos de dados. Após cada aula, será recomendada a leitura de trechos do livro texto relacionados ou que complementem o conteúdo da aula. Serão dados quatro exercícios-programa e algumas listas de exercícios. É essencial que os alunos resolvam estes exercícios e as listas para garantir a assimilação gradativa do material apresentado. As provas complementarão a avaliação e darão uma noção mais concreta ao professor do grau de aprendizado dos alunos.
Espera-se que os alunos resolvam os exercícios-programa de maneira clara e bem documentada. Aprenda a programar bem!! Existem livros muito bons [7,8], com dicas que podem fazer muita diferença tanto na qualidade dos programas que você escreve quanto no tempo que você gasta na depuração e teste dos seus programas.
Haverá três provas, quatro exercícios-programa (EPs) e algumas listas de exercícios.
Data das provas:
Note que não há prova substitutiva.
Além das provas, apenas a entrega dos EPs é obrigatória. Se for detectada cola nos EPs, todos os alunos envolvidos serão reprovados na disciplina sem mais, com nota inferior a 3,0.
Denotando por MP a média aritmética das notas nas três provas e por MEP a média aritmética das notas nos EPs, a média final do aluno (a menos do caso acima), denotada por MF, será calculada da seguinte maneira:
Se MP >= 5,0 e MEP >= 5,0onde alfa é um número entre 0,9 e 1,1 atribuído a cada aluno pelo professor, pela participação geral do aluno na disciplina. Tal número levará em conta a participação do aluno nas aulas, no fórum da disciplina, a sua participação e desempenho em eventuais exercícios dados em aula e quaisquer outras demonstrações de interesse na disciplina demonstrado pelo aluno.
então MF = alfa*max{MP,(2*MP+MEP)/3}
senão MF = min{4,0,MP,MEP}
O livro texto é o seguinte
Além deste, o aluno interessado pode consultar também os seguintes textos
Aqui estão duas sugestões de livros que podem ajudá-lo a se tornar um programador melhor. Pegue um deles agora no início do semestre na biblioteca e dê uma olhada!
Várias informações sobre a disciplina estarão disponíveis aqui. e no sistema Panda você encontra o fórum da disciplina. No Panda ficarão disponíveis também durante o semestre as suas notas. Assumirei que os alunos estão cientes de todos os avisos postados no fórum e na página da disciplina.
Vocês podem me encontrar na sala 107-C do IME-USP e o meu e-mail cris at ime.usp.br.