Plano de Ensino da Disciplina Computaç˜ao Básica - Aprender

Propaganda
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
Download