Departamento de Ciência da Computação - IME - USP
MAC0122 dará continuidade ao treinamento iniciado em MAC0110/MAC0115/MAC2166. Será desenvolvido ainda mais o raciocínio aplicado na formulação e resolução de problemas computacionais. Frequentemente é possível identificar nesse raciocínio ou pensamento alguns dos seguintes princípios::

Em MAC0110 foi praticada a decomposição e o reconhecimento de padrões dos problemas e exercitado apenas um pouco de representação dos dados e menos ainda de algoritmos. Do ponto de vista de programação a decomposição são os trechos de códigos para resolver subproblemas, o reconhecimento de padrões é materializado através de repetições e funções, um pouco de representação de dados foi praticado com listas e dicionários.
MAC0122 pressupõe uma certa habilidade em decomposição e reconhecimento de padrões e tem o papel de completar o treinamento do raciocínio. Praticaremos de maneira mais acentuada a representação de dados e os algoritmos.
O objetivo principal de MAC0122 é fornecer experiência e ferramentas básicas que capacitem as alunas e os alunos a desenvolverem soluções efetivas para problemas computacionais. Essa capacitação se dará progressivamente através da abordagem de resolução de problemas. Trabalharemos conceitos essenciais através de aplicações clássicas da matemática, ciências e engenharia em situações cotidianas. Esperamos fornecer oportunidades para que todas e todos escrevam programas para resolver problemas envolventes. Essa abordagem enfatiza a ideia essencial de que matemática, ciências, engenharia e computação estão interligadas no mundo moderno com vários outros campos.
Em MAC0122 estudaremos, através de exemplos, a correção, a análise de eficiência e projeto de algoritmos muito bacanas e que são amplamente utilizados por profissionais de várias áreas.
Veremos alguns tipos abstratos de dados básicos ou classes e algumas estruturas de dados elementares para armazenar estes dados 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 apropriada para todas as circunstâncias.
Os algoritmos e estruturas de dados que veremos em MAC0122 nasceram de aplicações cotidianas. Novas aplicações irão requerer a criação de novos algoritmos e estruturas de dados. É pretensão de MAC0122 fornecer ideias, elementos e técnicas que possam auxiliá-las a escrever bons programas.
Nota: MAC0122 não trata dos tão importantes aspectos sociais, éticos e ambientais das tecnologias que computação ajuda a criar. Há outras disciplinas do DCC-IME-USP que tratam exclusivamente desses aspectos.
Programas de computador armazenam, acessam e manipulam dados. Programas são uma formulação concreta de algoritmos 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, sistemas operacionais, ciência de dados, . . ., é buscar maneiras de representar os dados para que o armazenamento, acesso e manipulação destes seja feito de maneira eficiente, consumindo pouco tempo ou espaço ou energia elétrica ou … Sempre que representamos dados no computador consideramos cada um dos seguintes aspectos:
bool pode representar os valores True
ou False.Os itens 1 e 2 acima dizem respeito ao tipo abstrato de dados (TAD), ao modelo junto com uma coleção de operações definidas sobre os dados. Um exemplo de tipo abstrato de dados é o conjunto dos números racionais com as operações de soma, subtração, multiplicação e divisão. No contexto de orientação a objetos os tipos abstratos de dados são chamados de classes e as operações sobre os dados ou objetos são chamadas de métodos.
Já os itens 3 e 4 estão relacionados a 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. Em programação orientada a objetos essa coleção de variáveis recebe o nome de atributos de estado.
MAC0122 estuda algoritmos para alguns problemas computacionais básicos. Isso serve de motivação para introduzir vários conceitos e idéias importantes. Alguns dos principais pontos turísticos na nossa exercusão por MAC0122 são:
A bibliografia básica desta disciplina são os roteiros das visitas e o livro Resolução de Problemas com Algoritmos e Estruturas de Dados usando Python. Também é utilizado o livro Introduction to Programming in Python.
Para esta disciplina o pré-requisito é o conhecimento de técnicas básicas de raciocínio e programação que são tipicamente treinadas em disciplinas de Introdução à Computação como MAC0110, MAC0115 ou MAC2166. Alguns dos pré-requisitos estão no livro Como Pensar como um Cientista da Computação - Aprendendo com Python: Edição interativa e nas notas de aula de Introdução à Computação
Verifique seu status no sistema Júpiter depois do período de retificação de matrículas. Seu status deve ser “MATRICULADO”. Se for “PENDENTE” ou “INSCRITO”, procure imediatamente o Serviço de Alunos de Graduação.
Programmers Life