Departamento de Ciência da Computação - IME - USP

MAC0110 Introdução à Computação

edição online

“Your life as it has been is over.
We will add your biological and technological distinctiveness to our own.
For this time forward you will serve us.
You will be assimilated.
Resistence is futile.”

Fonte: Discurso de recepção aos calouros
ou “The Borg – Star Trek, The Next Generation”.

Bem-vindos

Fonte: Mafalda de Quino

Bem-vindas e bem-vindos à MAC0110 Introdução à Computação! A disciplina MAC0110 é de responsabilidade do Departamento de Ciência da Computação (DCC) do Instituto de Matemática e Estatística (IME) da Universidade de São Paulo (USP) e é oferecida a centenas de alunas de vários cursos da USP. Esta edição de MAC0110 é de responsabilidade de

Diana T'Challa Hitoshi Coelho
Diana T’Challa Hitoshi Coelho

A seguir está uma descrição de alguns dos ingredientes principais de MAC0110.

MAC0110

O objetivo principal de MAC0110 é desenvolver um raciocínio aplicado na formulação e resolução de problemas computacionais, Frequentemente é possível identificar nesse raciocínio ou pensamento alguns dos seguintes componentes:

  • decomposição: quebrar um problema complexo em subproblemas que sejam idealmente mais simples;
  • reconhecimento de padrões: buscar similaridades entre os subproblemas que permitam que estes sejam resolvidos de formas semelhantes;
  • representação dos dados: determinar as características do problema necessárias para sua solução; e
  • algoritmos: sequência de passos para resolver o problema.

Computational Thinking

Fonte: How to Teach Students Computational Thinking Skills

MAC0110 pode ser vista então como um treinamento no raciocínio para resolver problemas. Em MAC0110 praticaremos decomposição e reconhecimento de padrões dos problemas e exercitaremos um pouco de representação dos dados e algoritmos. MAC0110 tem como continuação natural a disciplina MAC0122 Princípios de Desenvolvimento de Algoritmos onde representação dos dados e algoritmos são tópicos centrais.

Em MAC0110 você escreverá programas de computador. O ato de programar é uma ferramenta útil para trabalhar o raciocínio mencionado acima, bem como tornar mais concretos outros conceitos comuns em ciência da computação.

Ao longo dos anos, MAC0110 utilizou diversas linguagens de programação: Fortran, Pascal, C Java e Python. Nesse edição utilizaremos a linguagem Python. O ensino de uma linguagem de programação é uma ferramenta didática, e um bônus concreto de aprendizagem, subordinado ao objetivo principal de nos tornarmos melhores pensadores.

Em geral, uma vez adquirida familiaridade com uma linguagem de programação, não é difícil utilizar outra. Muitas vezes, basta apenas ler o manual. Desta forma, gostaríamos que no futuro você não se lembrasse de MAC0110 como um “Curso de Pythontriste, pois não é um curso de Python. Em MAC0110, de fato, você aprenderá um pouco da linguagem Python e será cobrado pela aplicação apropriada dos conceitos vistos nas aulas (assim como seus colegas de anos anteriores aprenderam um pouco de Fortran, Pascal, C, Java ou Python). No entanto, o verdadeiro aprendizado será a familiaridade com os conceitos e princípios envolvidos na resolução de problemas computacionais.

Ferramentas tais como funções nativas e módulos existentes no Python evitam que reinventemos soluções disponíveis e façamos tarefas presumidamente desnecessárias. O domínio dessas ferramentas é fundamental para um programador efetivo. Apesar disso, esta disciplina utiliza um subconjunto bem limitado dos recursos de Python. Não por essas ferramentas não serem importantes, mas simplesmente porque elas não são o foco dessa disciplina, cujo objetivo, novamente, é desenvolver um raciocínio aplicado na formulação e resolução de problemas computacionais.

A estratégia que usaremos para desenvolver esse raciocínio será através da resolução de problemas. Cada problema introduz novos desafios que, para serem transpostos, nos levam a novas ideias, conceitos e práticas de programação. Esses problemas serão resolvidos utilizando-se apenas os recursos elementares apresentados.

Dessa forma, ao final de MAC0110, você terá treinado a resolução de problemas computacionais utilizando recursos simples, disponíveis na maioria das linguagens de programação, como Python, C, C++, Java, etc. Com essa bagagem formada por raciocínio e sólidos conceitos de programação, acreditamos que aprender outras linguagens será uma tarefa mais simples e que você terá mais ferramentas para explorar soluções antes de implementá-las em alguma linguagem.

Mas por que em Python? Por ser uma linguagem interpretada, Python possui um console interativo, o chamado Python Shell. Esse ambiente é extremamente conveniente e útil para o aprendizado de programação. Nele é possível executar trechos pequenos de código para testarmos ideias e sanarmos dúvidas sobre o comportamento de algum comando ou de alguma ideia. Python tem uma sintaxe simples e força a escrita de programas tabulados de forma a facilitar a visualização da estrutura da decomposição da solução, de padrões de repetição, identificação de problemas e sua depuração. Como outras linguagens, Python é ser portável e fácil de instalar.

Nota: MAC0110 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.

Principais tópicos

O principal tópico de MAC0110 é o raciocínio aplicado na formulação e resolução de problemas computacionais.

No que diz respeito apenas à programação em Python, veremos, entre possivelmente outros, um número pequenos de elementos que nos permita o treinamento do raciocínio:

  • funções de entrada e saída: input() e print();
  • tipos nativos: int, float, str, bool, NoneType, list,… ;
  • funções de conversão de tipos: int(), str(), float(),…;
  • operadores aritméticos: +, -, *, /, //, %,…;
  • operadores relacionais: <, >, <=, >=, == e !=;
  • operadores lógicos ou booleanos: and, or e not;
  • expressões aritméticas, relacionais e lógicas;
  • execução condicional, alternativa e em cadeia: if, if-else, if-elif-else;
  • comando de repetição: while;
  • indicadores de passagem (flags);
  • funções;
  • listas;
  • strings;
  • dicionários; e

Praticaremos noções de representação de dados e algoritmos, para aquelas e aqueles que quiserem se aprofundar em seus estudos.

A bibliografia básica desta disciplina são as notas de aula, além do livro Como Pensar como um Cientista da Computação - Aprendendo com Python: Edição interativa que é uma tradução do livro How to Think Like a Computer Scientist - Learning with Python: Interactive Edition.

Pré-requisitos

MAC0110 não possui pré-requisito algum. Não é esperado que você tenha qualquer experiência prévia em programação.

Matrícula

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

Programmers Life

Fonte: https://www.hongkiat.com/blog/programming-jokes/

Última atualização: quinta-feira, 12 mai. 2022, 12:55