Plano de Ensino da Disciplina Computação Básica Rodrigo Bonifácio 11 de março de 2015 1 Apresentação da Disciplina A organização da disciplina utiliza como fonte de inspiração a experiência de outros professores da UnB A disciplina de Computação Básica oferece aos alu- que ministraram essa disciplina; bem como o material nos uma introdução sobre a computação como um disponı́vel em cursos equivalentes ofertados em outras ramo da ciência, construido a partir das contribuições universidades, tais como: de cientistas de diferentes áreas, como matemática, • Principles of Computing, CMU [5] lógica e filosofia. No contexto cientı́fico da Ciência da Computação, os alunos devem ser introduzidos • Fundamentals of Programming, CMU [6] ao pensamento computacional, onde técnicas de re• Introduction to CS and Programming, MIT [3] solução de problemas usando algoritmos e estruturas de dados são elementos essenciais. Com resultado, o domı́nio dessas técnicas se torna imprescindı́vel para Metodologia a atuação de um cientista da computação (tanto na 3 indústria quanto na academia) nas diferentes linhas A metodologia envolve aulas expositivas nas terças e de pesquisa, tais como Engenharia de Software, Inquintas; com aulas de resolução de listas de exercı́cios teligência Artifical, Sistemas Distribuı́dos e Redes de nas quartas (conduzidas pelos monitores das disciComputadores e Computação de Alto Desempenho. plinas). Serão sugeridas leituras de artigos (publicados na ACM, na IEEE Computer Society ou na SBC) relacionados à Ciência da Computação e ao 2 Objetivos Pensamento Computacional. Adicionalmente, cursos disponı́veis on-line também podem ser sugeridos de Esta disciplina oferece uma introdução ao pensaforma complementar às aulas expositivas. mento computacional: como podemos descrever e resolver problemas usando um computador. Em particular, os estudantes devem se familiarizar com a im- 4 Planejamento plementação (de forma elegante e eficiente) de algoritmos utilizando linguagens de programação de alto A Tabela 1 apresenta o plano de aulas provisório nivel. da disciplina; ou seja, ajustes podem ser realizaNeste curso usaremos Python, mas note que o im- dos para atender às necessidades de aprendizagem portante é aprender o processo de resolução de pro- da turma. Como o foco é na resolução de probleblemas de forma computacional, processo este que mas usando algoritmos— que precisam ser descritos deve ser independente da linguagem usada. Em al- usando uma linguagem de programação, inciaremos gumas situações serão feitas analogias com outras lin- uma introdução à programação ainda na primeira semana. guagens, em particular a linguagem C. 1 Semana 1 2 3 4 5 6 7 8e9 10 11, 12 e 13 14 e 15 Tópicos Visão geral do curso Is Computer Science Science? [2] Introdução a Python Tipos básicos, expressões e estruturas condicionais Estruturas de repetição Algoritmos numéricos básicos Tuplas e Listas em Python, Arrays e Ponteiros na linguagem C Strings Funções, funções recursivas e funções de alta ordem Padrões recursivos (map, fold) e compreensão de listas Testes unitários Técnicas de depuração Técnicas de resolução de algoritmos Busca e Ordenação Primeira avaliação Intermezzo 1 Histórico da Computação Leitura e escrita em arquivos Intermezzo 2 Representação de dados Técnicas avançadas de algoritmos Intermezzo 3 Introdução à complexidade de algoritmos Segunda avaliação Tabela 1: Plano provisório de aulas P1 + P2 Note que teremos três intermezzos ao longo do MA = (2) 2 curso, um para discutir o histórico da computação; um para explorar a representação interna de dados Sempre que possı́vel, usaremos um mecanismo de (como representação binária, hexadecimal, e pontocorreção automática para os componentes da avaflutuante); e um para fazer uma breve introdução à liação. Importante que os alunos se familiarizem complexidade de algoritmos (esse é um tópico opcioo mais breve possı́vel com o ambiente URI Online nal, que poderá ser excluı́do). Judge.1 5 Avaliação Referências A avaliação da disciplina será constituı́da por duas [1] Selecão de artigos publicados em bibliotecas digitais (como as da ACM e IEEE). Sempre que neavaliações (P1 e P2), a média alcançada pelos alunos cessário para enriquecer as discussões, serão sugenas listas de exercı́cios (P3) e a nota do projeto da ridas leituras de artigos relacionados. Links para disciplina (P4). A média final será computada como: esses artigos serão disponibilizados no site da disciplina. 4M A + 3P 3 + 3P 4 1 https://www.urionlinejudge.com.br/judge/login MF = , onde (1) 10 2 [2] Peter J. Denning. Is computer science science? Commun. ACM, 48(4):27–31, April 2005. [3] Eric Grimson and John Guttag. OCW / MIT: Introduction to computer science and programming. Open CourseWare (MIT). on-line: http://goo.gl/dk7CV7, 2011. [4] J. Guttag. Introduction to Computation and Programming Using Python. MIT Press, 2013. [5] Dilsun Kaynar and Ananda Gunawardena. CMU Course: Principles of computing. on-line: http://goo.gl/XXoyaH, 2013. [6] David Kosbie and Dave Andersen. CMU Course: Fundamentals of programming and computer science. Computer Science Department, Carnegie Mellon University. on-line: http://goo.gl/63uZnU, 2015. [7] J.M. Zelle. Python Programming: An Introduction to Computer Science. Franklin, Beedle, 2004. Livro base da disciplina, disponı́vel on-line: http://goo.gl/5SdEdy. 3