1 of 30

Plano de curso

Introdução à Computação

Em aula, acesse rede wi-fi CTEC, senha #arca&30# para acessar Discord

1

2 of 30

Profissões de mais rápido crescimento de 2025 a 2030

Importância de habilidades de 2025 a 2030

2

3 of 30

Trilha de formação em ciência de dados ambientais (que eu oferto)

3

Disciplinas relacionadas à trilha

1º Semestre

Introdução à Computacção

2º Semestre

Introdução à ciência de dados

3º Semestre

Inferência Bayesiana

4º Semestre

5º Semestre

6º Semestre

7º Semestre

8º Semestre

9º Semestre

Introdução às vazões ambientais

10º Semestre

4 of 30

Objetivo: Ser capaz de desenvolver soluções a problemas e de as aplicar via programação de computador

Ementa:

  1. Pensamento computacional (Reconhecimento de padrões, Decomposição, Abstração e Algoritmização);
  2. Tópicos preliminares (entrada e saída de dados, tipos e operações)
  3. Estruturas de controle de execução de código (funções, condicionais e iterações);
  4. Estruturas de dados (strings, listas, dicionários, tuplas e conjuntos)

Condições:

O estudante terá indicação de fonte de material para estudo, bem como, acompanhamento e orientação de melhores práticas em sala e oportunidade de usar o laboratório de informática em horários alternativos

4

5 of 30

Conteúdos

A jornada do programa; Variáveis, expressões e instruções

Funções; Estudo de caso: projeto de interface

Condicionais e recursividade; Funções com resultado

Iteração

Strings; Estudo de caso: jogos de palavras

Listas

Dicionários; Estudo de caso: seleção de estrutura de dados; Tuplas

Extra

Matrizes

5

6 of 30

Ensino Explícito

6

7 of 30

Gestão de aprendizado e comunicação

  • Necessidade de assumir sua parcela de responsabilidade ("Os professores abrem a porta, você entra sozinho." Provérbio chinês)
  • Revisão permanente de atitudes (A diferença entre a atenção dirigida e a roubada é a mesma diferença entre executar a ação e deixar as coisas tomarem o seu curso, ou entre "viver" e "ser vivido". E.F.Schumacher)
  • Desenvolver coragem (submeter-se a experiências) para debater e propor soluções com frequência, em momentos síncronos e assíncronos

Para professor

Para discente

  • Necessidade de permanente abertura à interação (com discentes, docentes, monitores e profissionais)
  • Necessidade de usar frequentemente a criatividade para reagir na aula às demandas por conhecimento
  • Garantir treinamento sobre atividades críticas (pensamento computacional) e ferramentas (técnicas) para programar

7

8 of 30

8

2024.2

2024.1

2023.2

2022.1

2020.1

2021.1

2021.2

2016.2

2014.2

IC é um jogo?

Objetivo: Promover projeto de ensino-aprendizagem para que estudantes (desenvolvam plenamente projeto interativo com base em dados) resolvam problemas com programação em quatro meses.

2009.2

2018.1

2018.2

2025.1

2022.2

9 of 30

9

2022.2

- Práticas�- Jogo (Ic A Game)

- Aulas-Resumo

+ Problemas De Engenharia

IC é um jogo?

Objetivo: Promover projeto de ensino-aprendizagem para que estudantes (desenvolvam plenamente projeto interativo com base em dados) resolvam problemas com programação em quatro meses.

2009.2

Provas + Listas + Mini-Testes

2016.2

+ Práticas

- Provas

- Mini-Testes

+ Projeto Em Time

2014.2

+ Huxley (Tarefas)

- Listas

2018.1

+ Projeto Individual

2018.2

+ Aulas - Resumo

2020.1

- Huxley (Tarefas)

+ Jogo (Ic A Game)

2021.1

- Práticas

- Jogo (Ic A Game)

- Projeto Individual

- Aulas-Resumo

+ Scratch

2023.2

+ Listas Habilitadoras

+ Reavaliação Prévia

2024.2

- Problemas De Engenharia *1/10

- Jogo (Ic A Game)

- Listas Habilitadoras

+ Huxley (Tarefas)

+ Prova Estendida

2024.1

+ Práticas�+ Jogo (Ic A Game)

+ Aulas-Resumo

- Problemas De Engenharia *9/10

2025.1

- Aulas - Resumo

2022.1

+ Práticas/2

+ Jogo (Ic A Game)

+ Aulas-Resumo

- Projeto Em Time/2

- Scratch

2021.2

- Projeto Em Time/2

+ Práticas/2

10 of 30

2009.2

10

Legenda

P

Provas

L

Listas

t

Mini-testes

P

P

P

P

L

L

L

L

L

L

L

L

L

t?

Relógio exemplificando o decorrer da carga horária da disciplina.

11 of 30

2014.2

11

Legenda

P

Provas

T

Tarefas (via The Huxley)

t

Mini-testes

P

P

P

P

T

T

T

T

T

T

T

T

T

t?

12 of 30

2025.1

12

Legenda

P

Provas

T

Tarefas (via The Huxley)

P

Práticas

(via The Huxley)

P

P

P

P

T

T

T

T

T

T

T

T

T

P?

P?

13 of 30

Instrumentos de avaliação: práticas + tarefas + provas

Bimestre 1:

  • 35%: n (questões) Práticas síncronas em qualquer tempo em sala
  • 15%: 4 tarefas assíncronas datadas no Huxley. Tarefas têm metade da avaliação a partir das questões escolhidas por cada estudante
  • 50%: 2 provas mensais seguidas (25% cada). Se houver questões não resolvidas no tempo de prova, poderão ser entregues valendo metade da pontuação, se entregue até o prazo indicado pelo professor

Bimestre 2:

  • 2 provas mensais seguidas (50% cada).

Não envie solução de questão que não seja sua. Você garantirá zero no bimestre se o fizer. Não aceitaremos uma segunda submissão de solução de questão que não seja sua. Se o fizer uma segunda vez, você garantirá zero na média final

13

14 of 30

Exemplo de Tarefa no Huxley, para resolução em dias.

Prática no Huxley é a definição de uma questão para resolução em sala no momento

14

15 of 30

Instrutor Master

15

16 of 30

Materiais de apoio

16

17 of 30

Recomendação para cada desafio de programação

Aplique Pensamento computacional:

  • Decomposição (ao nível de entender todo o procedimento e o que cada dado representa),
  • Reconhecimento de padrões (identificação de repetições, condicionais e séries que seguem mesma lógica),
  • Abstração (do que é irrelevante dentre os dados e informações disponibilizados) e
  • Algoritmização (com descrição inicialmente em português, em nível de detalhe dos comandos do Python).

Para melhor entender os procedimentos, utilize um conjunto menor de dados e desenvolva as contas à mão. Por exemplo, na primeira tarefa, em vez de pegar todos os dados de todas as linhas, utilize apenas os cinco últimos dos dois primeiros meses (linhas) e verifique com o professor/monitor/colega se conseguiu resolver a questão devidamente.

Não se limite por paralisação (comece por alguma parte), por distração (identifique o propósito / valor da tarefa em relação às suas aspirações profissionais) ou por vitimização (sê grato/a em vez de se perceber limitado).

17

18 of 30

Pensamento computacional

Elementos: Decomposição, Reconhecimento de padrões, Abstração (do que é irrelevante) e Algoritmização.

Exemplo: estratégia para somar 200 primeiros inteiros positivos (1, 2, 3, …, 198, 199, 200).

“Computational thinking is the thought processes involved in formulating a problem and expressing its solution(s) in such a way that a computer -human or machine - can effectively carry out.” (Wing, J. 2014)

18

19 of 30

19

Comando de atribuição (“=”) à variável “resultado” do resultado da expressão anterior não salva, acessível a partir de “_”

Comando para resolver expressão. Atente à similaridade de prioridade de operação à matemática

Linha de definição da função “estudo”

Janela do editor de scripts

Janela com variáveis e seus dados atuais

Janela de comandos para o computador, repasse de dados e obtenção de mensagens do computador

Botões facilitadores da depuração de código

Recuos denotam bloco de comandos, os quais foram iniciados por “:”

Iniciação da estrutura de repetição indefinida do bloco de comandos

Chamada da função “menu”, criada anteriormente neste script, para imprimir mensagens na Janela de comandos

Chamada da função “input”, para receber dado do usuário na Janela de comandos

Comando para sair da estrutura de repetição

Comando para não imprimir nada (não houve repasse de argumento ao”print”) e pular linha (comando padrão do “print”)

1

4

2

3

Iniciação da estrutura de condição, para limitar quando executar o bloco de comandos

20 of 30

20

21 of 30

21

Variável que carrega dado é como um copo

Variável que carrega uma função é como um garçom

Estrutura de dados [string, list, dict, tuple] é como uma mesa, onde se consegue depositar / pegar produtos. Cheque métodos disponíveis por tipo de estrutura de dados

Dados básicos de um programa são como produtos. Opções de dado são texto [string], número [integer ou float] e lógicos [True ou False]

Variável é como uma entidade com nome que pode receber / carregar conteúdo

22 of 30

22

Parêntese seguindo uma variável é como um pedido do cliente

O rascunho do programa é como a anotação do pedido

Repetição definida [for] de um bloco de comandos é como separar a quantidade de um ingrediente (ex. 2 ovos)

Variável que carrega dados de acesso ao arquivo são como uma comanda

Valor de retorno [return] é como a descrição do que será entregue

Script / algoritmo é como a informação para lançamento do pedido

[print] serve ao desenvolvimento de código como a checagem do pedido pela garçonete

Pensamento Computacional resulta em algoritmo/script que é como o modo de preparo

Argumentos de função são como ingredientes em uso numa receita (exemplo, aveia da marca xyz).

Parâmetros da função são como estes estão descritos na receita (aveia)

Condicional [if] é como um inibidor de criação de múltiplas receitas para bolos parecidos, permitindo acessar apenas o bloco de comandos pertinente à receita de interesse especificada

Repetição indefinida (repetição de condicional; [while]) de um bloco de comandos é como em “até obter uma massa homogênea”. Tem como parar [break] a execução repetitiva de um bloco de comandos

23 of 30

Pensamento Computacional a partir da contagem regressiva

Decomposição, identificação de padrões, abstração e algoritmização

Considere que precisamos comunicar à máquina na linguagem que ela acessa

23

3

2

1

Acabou

5

4

3

2

1

Acabou

início

-1

-1

-1

-1

-1

-1

-1

-1

Conseguimos quebrar o procedimento em componentes?

Sim. Geração de novo número a cada vez.

Há um padrão em repetição? Algo a fazer antes de começar a repetir?

Conhecer o número de partida e o definir como atual

Quais operações são repetidas?

informar número

subtrair 1 de atual

Qual o limite para repetições?

atual alcançar 0

Algo a fazer quando terminar de repetir?

informar que acabou

Exemplos de contagem:

atual

atual

24 of 30

O que mudaria na contagem progressiva?

24

0

1

2

3

Acabou

0

1

2

3

4

5

Acabou

início

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

Exemplos de contagem:

Conseguimos quebrar o procedimento em componentes?

Sim. Geração de novo número a cada vez.

Há um padrão em repetição? Algo a fazer antes de começar a repetir?

Conhecer o número de fim, definir número atual = 0

Quais operações são repetidas?

informar número

acrescentar 1 a atual

Qual o limite para repetições?

variável atual alcançar número de fim

Algo a fazer quando terminar de repetir?

informar que acabou

atual

atual

25 of 30

25

Nova chamada (abre novo escopo de variáveis) à função recursiva “repete”

Condição para executar bloco que inicia na linha 3.

Reatribuição à variável “atual”, incrementando-a por “1”

Se a avaliação da condição (i < n) resultar “True”, executa bloco que inicia na linha 12

Senão, pula para a linha 13

Se “i” estiver no intervalo definido com “n” como limite (por padrão, início é “0” e atualização por incremento de “1”), executa bloco que inicia na linha 15

Senão, pula para a linha 16

Incremento do valor de “i” em 1, para garantir que em algum momento a condição (i < n) dê “False”

1

2

3

26 of 30

Pensamento computacional a partir da multiplicação

26

r 0 2 4 6 8 10

5 x 2 = 0 + 2 + 2 + 2 + 2 + 2

i 0 1 2 3 4 5

r 0 4 8 12

3 x 4 = 0 + 4 + 4 + 4

i 0 1 2 3

r = ∑i=0:n 2

r = ∑i=0:n 4

r = ∑i=0:n x

i: variável que conta (controla) as repetições

r: variável que acumula a soma

ambas iniciam do elemento-neutro e se atualizam por termos diferentes

27 of 30

The Huxley

O assistente virtual de aprendizagem adotado é o theHuxley (www.thehuxley.com), concebido no Instituto de Computação da Ufal, sob orientação do professor Rodrigo Paes. O assistente tem uma base de mais de 3000 questões. Permite programar diretamente nele, tirar-dúvidas e trocar mensagens, aplicar exercícios e gerenciar listas e turmas, identificar similaridades de resoluções de questões, rankings e estatísticas.

- Instruções para vinculação à turma no Huxley (realizada apenas no primeiro acesso): Acesse thehuxley.com, Realize o cadastro e anote suas definições de acesso (login) para uso futuro, Clique na aba "Turmas", Clique no ícone com imagem de chaves (fundo azul, cor branca no canto superior direito) e Insira a chave disponibilizada no Discord da turma.

- Há, no youtube, tutoriais para aprender a usar o theHuxley, por exemplo, como ele funciona (https://www.youtube.com/watch?v=vHVngNKTR80), como submeter um código para uma questão (https://www.youtube.com/watch?v=VWZjD_OekzE) dentre as mais de 3000 (https://www.youtube.com/watch?v=3DAVPyIauvA).

- Atenção à linguagem! Usaremos Python 3.

- Vou ajudar um pouquinho, passando uma dica de site que interpreta mensagens de erro que o Huxley pode devolver (https://www.thehuxley.com/help/doubt-of-students).

- Utilize sempre que possível a função de tirar dúvidas disponível na própria plataforma.

- Não copie questões da internet nem dos colegas de turma. O theHuxley acusa similaridades a serem verificadas pelo professor.

27

28 of 30

Os tópicos do Huxley específicos de cada capítulo do Pense em Python estão disponibilizados na tabela. À medida que os capítulos são lecionados, alguns tópicos do Huxley são liberados. Por exemplo, no assunto “Variáveis, expressões e instruções”, questões do Huxley sobre o tópico `formatação` podem ser selecionadas, contato que não tenham tópico de capítulo posterior do livro, como `decisão`. Evite a questão que tiver qualquer tópico fora os da tabela.

28

Capítulo

Pense em Python

The Huxley

2

Variáveis, expressões e instruções

formatação, lógica matemática, ponto flutuante, entrada formatada

3

Funções

caractere, função

4

Estudo de caso: projeto de interface

5

Condicionais e recursividade

árvore, decisão, recursão, acumulador

6

Funções com resultado

números primos

7

Iteração

ordenação, repetição, múltiplas entradas, eof

8

Strings

string, substring, palíndromos

9

Estudo de caso: jogos de palavras

10

Listas

alocação dinâmica, array, busca, programação dinâmica

Matrizes

array bidimensional

11

Dicionários

dicionário, simulação de jogos, estruturas, estrutura de dados, números romanos

12

Tuplas

dicionário com ordenação com 2 ou mais fatores, intercalação

29 of 30

A dedicação a aprender a programar tem como benefício a auto-transformação.

29

30 of 30

Habilidades e competências elevam a auto-estima

Auto-conhecimento pode direcionar ao esforço ou à fuga (desvio ético ou moral)

Compensações por esforço são duradouros (em detrimento a soluções fáceis por IA ou por outros) e múltiplos

Para desenvolver habilidades (do TEDx do Ernesto Burden):

  1. Acreditar que é possível aprender a habilidade
  2. Aprender bom método de aprender
  3. Gostar do processo (uma consequência da garra)
  4. Gostar de ser avaliado
  5. Re-enquadrar avaliações para dar foco ao que se pode melhorar

O processo de estudo e de se submeter a avaliações demanda organização e ação com foco no agora

Avaliações por humanos são mais ricas, eficientes e geram mais habilidades e benefícios

Agir sobre a vulnerabilidade (fora da zona de conforto) transforma e cativa

Auto-conhecimento quanto ao que emociona e a condução da aprendizagem no sentido do que emociona (auto-formação) geram a auto-realização

30