Teaching Computer Science by using Google Colab
Abstract
This theoretical-practical mini-course aims to introduce the use of Google Colab as a distance learning tool and/or synchronous or asynchronous practical activities in both in-person and remote computer science education. Traditionally, Google Colab has been used for teaching artificial intelligence and machine learning. The mini-course will present several examples, ideas, and methodologies for using Colab in any discipline, demonstrating how to use languages other than Python, insert additional teaching tools, create magic commands to simplify usage, interactive interfaces, interaction with smartphones using the Gradio library. The examples used in the mini-course will illustrate the teaching of computer architecture, high-performance programming with GPUs, formal languages and automata, graphs, programming languages, and computer programming.
References
Jeronimo C. Penha, Lucas B. Silva, Jansen M. Silva, Kristtopher K Coelho, Hector P. Baranda, José Augusto M. Nacif, and Ricardo S. Ferreira. (2019). ADD: Accelerator Design and Deploy-A tool for FPGA high-performance dataflow computing. Concurrency and Computation: Practice and Experience 31, 18, e5096.
Michael Canesche, Lucas Bragança, Omar Paranaiba Vilela Neto, Jose A Nacif, and Ricardo Ferreira. (2021). Google colab cad4u: Hands-on cloud laboratories for digital design. International Symposium on Circuits and Systems (ISCAS).
Alan Davies, Frances Hooley, Peter Causey-Freeman, Iliada Eleftheriou, and Georgina Moulton. (2020). Using interactive digital notebooks for bioscience and informatics education. PLOS Computational Biology 16, 11, e1008326.
Ricardo Ferreira, Salles Viana Gomes de Magalhães, and José AM Nacif. (2019). Métricas e Números: Desmistificando a Programação de Alto Desempenho em GPU. Minicurso WSCAD. Sociedade Brasileira de Computação.
Ricardo Ferreira, Jose Nacif, Salles Magalhaes, Thales de Almeida, and Racyus Pacifico. (2015). Be a simulator developer and go beyond in computing engineering. IEEE Frontiers in Education Conference (FIE). IEEE, 1-8.
Ricardo S Ferreira, Antonio Carlos S Beck, Luigi Carro, Andre Toledo, and Aroldo Silva. (2005). A java framework to teach computer architecture. In IFIP International Working Conference on Computer-Aided Learning. Springer, 25–35.
Fernando Passe, Lucas Bragança, Michael Canesche, Felippe Cathoud, José Nacif, and Ricardo Ferreira. (2020). Plain: Ferramenta para Desenvolvimento de Aceleradores para Overlays em FPGA na Nuvem em Tempo de Execução. XXI Simpósio em Sistemas Computacionais de Alto Desempenho.
Fernando Passe, Michael Canesche, Omar Paranaiba Vilela Neto, Jose A Nacif, and Ricardo Ferreira. (2020). Mind the gap: Bridging verilog and computer architecture. In International Symposium on Circuits and Systems (ISCAS).
Fernando Ferreira Passe, Vanessa Cristiny Rodrigues Vasconcelos, Michael Canesche, and Ricardo Ferreira. (2017). Perspectivas para o uso do Node-Red no Ensino de IoT. International Journal of Computer Architecture Education.
Jerônimo Penha, Geraldo Fontes, and Ricardo Ferreira. (2016). MIPSFPGA-Um simulador mips incremental com validaçao em fpga. International Journal of Computer Architecture Education.
Cyrille Rossant. (2013). Learning IPython for interactive computing and data visualization. Packt Publishing Ltd.
Adam Rule, Aurélien Tabard, and James D Hollan. (2018). Exploration and explanation in computational notebooks. In Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems. 1–12.
