Em alguns lugares do mundo, as pessoas geralmente não têm acesso (e, portanto, pouco conhecimento) a computadores e, mesmo que tenham, hardware e software estão desatualizados e o uso é afetado por quedas de energia e outras coisas. O acesso a (bons) livros também costuma faltar. Como posso ensinar ciência da computação em tais circunstâncias?
Estou preocupado que, sem poder fazer experimentos e aplicar o que aprendem, eles não aprenderão (bem) de maneira alguma, mesmo que sejam incrivelmente motivados e dediquem a maior parte do tempo a esse hobby. É possível ensinar CS apenas teoricamente?
Respostas:
Perguntar como você pode estudar ciência da computação sem computadores é como perguntar como você pode estudar cosmologia sem telescópios. Claro, é bom poder observar as coisas que você está estudando e muitas vezes é muito útil poder brincar com as coisas. Mas há muita coisa que você pode fazer sem acessar um computador: in extremis , você provavelmente poderia fazer quase todo o curso de graduação sem computadores.
Em termos práticos, o acesso a computadores ajuda a reforçar muito do que você aprende em um curso de ciência da computação. Os cursos de programação são, obviamente, muito mais naturais com o acesso a um computador. Por outro lado, ser forçado a escrever código no papel incentiva as pessoas a pensarem em seu código e garantir que ele realmente funcione, em vez de executá-lo repetidamente em um compilador até compilar e executar casos de teste triviais repetidamente até os erros óbvios desaparecerem.
Os tópicos que seriam mais naturais sem computadores seriam os mais matemáticos. Toda a matemática de base, como combinatória e probabilidade. Computabilidade, linguagens formais, lógica, teoria da complexidade, projeto e análise de algoritmos, teoria da informação e da codificação. Qualquer coisa a ver com computação quântica!
fonte
Existe o uso óbvio de papel e lápis. Quando me ensinaram o processamento de sinais, o processador de sinais especial não estava disponível diretamente para nós e acabamos de entregar relatórios em papel.
Observe que o grande cientista da computação Dijkstra aparentemente não usou muito os computadores:
Citado do Memorial de Disjkstra
Isso mostra que você pode fazer ótimas ciências da computação sem um computador!
Além do papel e do lápis, os problemas da ciência da computação também podem ser resolvidos "no mundo real", por exemplo, demonstração de algoritmos de classificação com cartões ou - mais incomum - com a dança, feita pela Universidade Sapientia .
fonte
Muitas teorias da ciência da computação são puramente teóricas e podem ser resolvidas usando caneta (cil) e papel. Obter informações sobre eles e comunicá-los ao mundo exterior requer um computador.
fonte
Veja http://csunplugged.org/ para algumas ótimas idéias. O Google é um dos patrocinadores.
Do site:
fonte
Você pode, é bastante óbvio como você faria isso. Não tenho certeza de quão útil seria para as pessoas, mas você pode.
Mas eu nem sei como seria um professor de ciência da computação, posso perguntar como você pode ensinar ciência da computação sem um computador.
Porque se você pode ensinar ciência da computação, saberá como.
Se você sabe disso ...
O estudo da normalização, a estrutura de tabelas de dados para bancos de dados, pode ser feito em papel e caneta. (Só fiz isso em papel e caneta quando estudei bancos de dados relacionais)
Os livros de ciência da computação não precisam de um computador.
Se você já pegou um livro de ciências da computação e o estudou em uma biblioteca, saberia que não precisava de um computador para entendê-lo.
Mas você deve estar ciente de que qualquer pessoa que tenha participado de uma aula de ciência da computação pode ver que a maioria das pessoas não pode programar, está além delas. Muito abstrato para as pessoas. Isso é verdade até no nível universitário.
http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf
Eu acrescentaria que chamá-lo de minoria substancial é um eufemismo. É uma pequena minoria que pode programar.
Eu observaria, porém, a causa do declínio que ele testemunhou. À medida que os computadores se tornaram mais populares, por exemplo, entre 2000 e 2010 (ele escreveu isso no meio da década), mais espertos estavam interessados em estudar 'ciência da computação'. Antes disso, apenas as pessoas mais fanáticas estavam interessadas. E antes, o uso de computadores era mais técnico, mas à medida que os computadores ficavam mais fáceis de usar e mais poderosos nos aplicativos que eles podiam executar, mais wollies os usavam e mais pessoas que estavam interessadas apenas no que podiam fazer. ao invés de como eles fazem e como fazê-lo.
fonte
Seria possível ensinar os conceitos de Ciência da Computação sem um computador. Obviamente, sem acesso a um computador, de que serve realmente a aprendizagem da Ciência da Computação?
Quando eu estava aprendendo Ciência da Computação no ensino médio, nossas primeiras aulas não envolviam computadores. Em vez disso, trabalhamos a partir de um livro chamado Karel ++ , que ensinava conceitos orientados a objetos. O idioma inventado pode ser "executado" em um quadro branco ou quadro-negro com muita facilidade, porque todo o código executa ações em um gráfico. Nossas primeiras tarefas foram todas manuscritas e o professor demonstraria a solução correta no quadro no início da próxima aula.
Quando começamos a discutir algoritmos, nosso professor nos chamou para a frente da sala e nos disse para ficar em uma fila. Ele começou a demonstrar alguns algoritmos de classificação diferentes - começando com algo tolo que ele chamou de "classificação de macacos", onde trocaria aleatoriamente dois de nós e depois verificaria se estávamos classificados em todas as iterações, mas depois executando a classificação por bolhas e a classificação por shell - por "executando" eles em nós.
Ele desenhou diagramas no quadro, explicando o básico de como a memória do computador e a pilha funcionam. Ele demonstrou variáveis e ponteiros (era uma classe C ++) e daí para listas e árvores vinculadas ...
Provavelmente eu poderia acrescentar isso se revisasse as anotações que mantinha naquela aula, mas é tudo o que me lembro agora. Se essas sugestões forem interessantes, posso expandir esta resposta.
fonte
Eu fiz um diploma em ciência da computação e pensei que aprendíamos muita programação (em várias línguas) e também muitos aspectos matemáticos (e também alguns hardwares).
As partes da matemática foram mais importantes para o primeiro ano - pense na matemática matricial, essencial para os gráficos 3D (como você calcula uma superfície normal para iluminar um vértice? ). Fizemos muitas estatísticas - pense na análise da taxa de transferência de trabalho, qual taxa de trabalho você pode passar para um sistema antes de entupir? Isso é muito importante para muitos sistemas centralizados e redes.
Você pode ensinar muitos algoritmos, um dos pôsteres aqui mencionado fornece aos alunos um número cada e, em seguida, faz com que eles se classifiquem usando vários algoritmos (ativo e informativo). De fato, qualquer algoritmo que possa ser descrito em uma imagem animada na internet pode ser ensinado dessa maneira. Da mesma forma, os fundamentos da computação - contador, acumulador e registrador de programaspode ser ensinado da mesma maneira ou no papel. Que tal multithreading baseado no aluno - defina um grupo de estudantes para um jogo de cartas com uma pilha entre cada um deles em um exercício clássico de multithreading (ou o problema de 1 colher compartilhada). Ou padrões de design, acho que a arquitetura do quadro-negro é perfeita para os alunos aprenderem como a comunicação de processos múltiplos pode ser implementada, ou uma arquitetura de n camadas descrita como uma espécie de jogo de sussurros chineses ou máquinas de estado finito serviriam para os alunos agindo como módulos em um 'computador vivo'. Você pode ensinar matemática binária ou execução baseada em pilha (ou seja, polimento reverso).
Obviamente, se você tiver acesso à eletrônica, poderá criar um computador analógico com amplificadores operacionais. Eles são legais.
Infelizmente, tudo isso parece mais matemática do que computação, mas grande parte disso permanecerá e um dia eles entenderão por que foram ensinados (assumindo que vão para o setor de computação). Lembre-se de que qualquer coisa que um computador possa fazer, uma pessoa pode fazer - levará muito mais tempo e tédio para alcançar o mesmo resultado. Você só precisa usar exemplos simples para demonstrar o que o computador faria e a imaginação para descrever os fundamentos da computação de uma maneira menos seca que eu fui ensinado, lá atrás :)
fonte
Estou respondendo principalmente apenas para reagir a essa afirmação e porque discordo totalmente de outras respostas. A comparação correta seria, na minha opinião,
Ciência da Computação é sobre computadores, não apenas usá-los. É verdade que muita Ciência da Computação é baseada em matemática, então as partes matemáticas podem ser estudadas sem computadores (portanto, você está ensinando matemática), assim como, em vez de cosmologia, você pode estudar física que será útil quando houver um cosmos (ou tenha acesso a telescópios), mas no final o que você está estudando ainda é física.
Agora, o que todo mundo está fazendo nas respostas aqui é observar como a ciência da computação em nível de bacharel é basicamente teórica e não requer computadores, o que essas pessoas estão esquecendo IMHO é que as mesmas pessoas usaram computadores extensivamente até esse ponto. Sem uma compreensão natural, investigar diretamente o material teórico apenas fará com que muitos estudantes desistam ou tenham uma visão terrivelmente incompatível da ciência da computação. Portanto, ensine alguma programação, entendendo o que os computadores são primeiro e somente depois entrem no material teórico.
Depende do orçamento:
Então, deixe-me esclarecer, não estou dizendo que a Ciência da Computação não pode ser ensinada sem computadores, apenas que você precisa se acostumar com os computadores e conhecê-los bastante bem antes de começar a considerar uma coisa dessas.
fonte
A Ciência da Computação trata de algoritmos e não (estritamente) de computadores (e eletrônicos).
Como tal, o estudo de algoritmos (mesmo da aritmética elementar) pode trazer entendimento da ciência da computação e da programação. Lembre-se de que mesmo o termo "algoritmo" é uma paráfrase do autor de um livro de aritmética ( al-Khwārizmī , por volta do nono século. CE).
O estudo de algoritmos pode ser feito usando meios elementares, mas deve fornecer uma cobertura do porquê o algoritmo funciona, como surgiu e como se pode realmente demonstrar que funciona corretamente.
A história por trás da evolução da ciência da computação, algoritmos e programação não deve ser subestimada. Por exemplo, a calculadora de Babbage / Ada, a máquina Enigma, a prancha de Konrad Zuse , a ENIAC etc.
Então, pode-se introduzir a programação (e linguagens de programação) como uma maneira de formalizar algoritmos. Isso também pode ser feito (em grande parte) usando meios elementares.
Observe que alguns estudos mostraram que a programação de aprendizagem de pessoas tem duas principais dificuldades de entendimento (relacionadas à sobrecarga de símbolos, por exemplo, teste de atribuição versus igualdade e operação de uma máquina de RAM).
Assim, pode-se garantir que estas sejam claramente compreendidas e compreendidas pelas pessoas.
Além disso, se qualquer computador puder ser acessado (mesmo uma calculadora que possa ser programada), isso poderá ser usado para fornecer exemplos de aplicativos e experiência prática. Caso contrário, pode-se usar um computador simulado. Isso pode ser feito de várias maneiras, por exemplo, um grupo de pessoas pode simular partes de um computador e a classe pode projetar algoritmos para resolver vários problemas desse computador simulado e ver como ele funciona. Isso também pode ser visto como um jogo, seja criativo e faça as pazes.
Em seguida, alguns modelos de computação (abstratos) (por exemplo, Máquinas de Turing ) podem ser introduzidos e relacionados ao material anterior sobre algoritmos e formalização em uma linguagem (de programação).
Se alguém quiser introduzir a eletrônica de um computador real, isso também pode ser feito em duas partes.
Lembre-se de que, mesmo nas universidades, alguns cursos de eletrônica e arquitetura de computadores são teóricos (na verdade, não se entra em contato com uma CPU ou uma de design).
Portanto, alguns princípios de operação da eletrônica (e a física subjacente) relacionados à arquitetura de computadores podem ser introduzidos ( semicondutores , zonas de energia de estado sólido, portas p-np, etc.).
Em seguida, pode-se aproveitar o material anterior sobre programação e algoritmos e introduzir técnicas (modernas) de design (e descrição) de CPU que são usadas na indústria ( portas lógicas , flip-flops , FPGA , VHDL , circuitos CMOS etc.).
Isso pode ser levado em consideração em questões de arquitetura de design da CPU, como paralelismo, pipelining, memória cache, endereçamento vetorial, microprogramação, DMA, etc.
Bem, ok, talvez isso possa ser demais, mas foi adicionado para tornar a resposta independente.
fonte
Você quer ensinar programação?
Quando eu era criança, íamos de férias no acampamento e levei o manual do computador comigo. Consegui escrever um jogo simples usando caneta e papel.
Acho que esse foi o meu primeiro programa real, então muito aprendizado foi envolvido. Eu sabia o que queria fazer, mas houve muitas tentativas falsas enquanto eu descobria. Mas, eventualmente, consegui escrever todo o código.
Acho que o que estou dizendo é começar com pseudo-código e \ ou fluxogramas para planejar o projeto e depois traduzir em código. Consegui depurar muito do meu código apenas lendo-o. Você também pode usar avaliações de colegas aqui.
fonte
Para ecoar nas respostas anteriores: há muito a ser aprendido apenas com a leitura e a realização de exercícios com caneta e papel. Se você puder resolver o problema no papel, terá a parte mais difícil. No entanto, também quero mencionar a existência de maneiras razoavelmente baratas de expor os alunos ao CS. Você está familiarizado com o Raspberry Pi Project ? Mesmo que várias pessoas tenham que compartilhar ou você só possa adquirir 1 ou 2 unidades, pode valer a pena considerar como uma maneira de expor seus alunos à tecnologia.
fonte
vou tentar mexer um pouco nisso e "pensar fora da caixa". computadores completos são realmente caros, às vezes exigem recursos e são difíceis de manter. mas existem muitos sistemas eletrônicos baratos que imitam computadores completos, por exemplo, com telas de LCD etc. e que muitos princípios básicos de programação podem ser aplicados, muitos alimentados por bateria. existe também uma estreita conexão dos princípios de EE com a computação, como a construção de circuitos lógicos binários etc .; Hoje em dia, alguns brinquedos também têm capacidade de programação.
calculadoras programáveis . alguns têm linguagens de programação inteiras (não de nível tão alto, mas mais como linguagens de montagem) incorporadas a elas. alguns suportariam programas avançados.
O minicomputador / microcontrolador Raspberry pi foi desenvolvido para esse fim e executa o linux. menos de US $ 40 em muitos casos.
O microcontrolador do kit STAMP paralaxax requer uma conexão USB, mas talvez um Raspberry pi seja suficiente. veja também microcontrolador PIC
sistemas de robótica. existem muitos baratos que possuem alguma lógica programável. Lego robotics mindstorms / nxt é um dos melhores e existem modelos mais baratos.
alguns jogos de console têm princípios de programação embutidos. por exemplo, Little Big Planet possui incríveis recursos de programação embutidos. existem algumas versões portáteis de jogos programáveis. existem muitos vídeos do youtube de construções complexas para inspiração.
smartphones são o novo mundo da programação. eles têm navegadores que executam javascript e existem muitos aplicativos relacionados à programação, e pode-se até navegar em sites de programação com conexão à Internet (incluindo wifi).
sugerir também, como nos comentários, a criação de programas de TM, por exemplo, para adição, etc., e a tentativa de segui-los manualmente.
fonte