INTRODUZINDO PROGRAMAÇÃO DE COMPUTADORES E PBL COM PYTHON E APP INVENTOR João Pedro Pereira de Cerqueira Cardoso – [email protected] Lucas Conceição Morais – [email protected] Carlos Alberto Rodrigues – [email protected] Roberto Almeida Bittencourt – [email protected] Universidade Estadual de Feira de Santana, DEXA Avenida Transnordestina, S/N , Novo Horizonte 44-036-900 – Feira de Santana – BA Resumo: A transição do ensino médio para a educação superior é repleta de expectativas e ansiedade para os recém-chegados. Experiências de recepção de estudantes calouros são uma alternativa comum para reduzir problemas nesta transição, assim como para facilitar a inserção dos recém-chegados ao mundo universitário. No curso de Engenharia de Computação da Universidade Estadual de Feira de Santana, as primeiras dificuldades estão normalmente ligadas à aprendizagem de programação de computadores e à adaptação à metodologia de aprendizagem baseada em problemas (PBL). Este trabalho relata duas oficinas de aprendizagem de programação e PBL oferecidas para estudantes deste curso durante uma Semana de Integração de Engenharia de Computação. Nestas oficinas, utilizamos a linguagem de programação Python e a ferramenta App Inventor para facilitar o processo de aprendizagem. As principais lições aprendidas foram: o valor do aprendizado por meio de problemas, a necessidade de propor bons problemas, o feedback rápido oferecido pelas ferramentas utilizadas e os benefícios de uma linguagem casual e descontraída. As oficinas foram bem recebidas pelos estudantes e pretendemos aperfeiçoá-las e continuar oferecendo-as nas próximas semanas de integração do curso. Palavras-chave: aprendizagem, programação, ambientes lúdicos, Greenfoot, App Inventor. 1. INTRODUÇÃO A transição do ensino médio para o ensino superior pode ser um desafio para muitos estudantes, especialmente ao sair de um ambiente escolar baseado em aulas expositivas onde costumam se comportar passivamente. Chegando à universidade, muitas vezes os estudantes precisam se comportar mais ativamente, às vezes lidando com metodologias inteiramente novas para eles. Muitas vezes, isto leva a desestímulo, o que, por sua vez, leva a um aumento nos índices de evasão e reprovação no início dos cursos de graduação. Dentre os problemas enfrentados pelos calouros de Engenharia de Computação na Universidade Estadual de Feira de Santana (UEFS), estão a grande quantidade de conteúdos e habilidades que os estudantes devem aprender nos primeiros períodos de curso. Nos dois primeiros semestres, o aluno deve passar por matérias como Algoritmos e Programação, Programação Orientada a Objetos, Estruturas de Dados, além de disciplinas outras de matemática e física. O curso utiliza ainda a metodologia de aprendizagem baseada em problemas (PBL) (BARROWS & TAMBLYN, 1980) nas disciplinas de programação do primeiro e segundo semestres, o que ocorre na forma de componentes curriculares especiais chamados de módulos integradores (BITTENCOURT & FIGUEIREDO, 2003). Experiências de recepção de estudantes calouros são uma alternativa usual para reduzir problemas nesta transição, assim como para facilitar a inserção dos recém-chegados ao mundo universitário. Em nosso caso, os próprios estudantes do curso de Engenharia de Computação da Universidade Estadual de Feira de Santana (UEFS) realizam, com o apoio do colegiado do curso e sua coordenação, uma semana de integração para os calouros do curso na primeira semana de aula. A Semana de Integração de Engenharia de Computação (SIECOMP) é realizada para facilitar a inserção dos calouros no meio universitário e ocorre há quase dez anos. São ofertadas algumas palestras com temas relevantes e necessários para o início de suas jornadas. Por exemplo, discutem-se temas como Maratona de Programação, Empresa Junior, Diretório Acadêmico, Intercâmbio Estudantil, dentre outros. Além disso, são oferecidos minicursos e oficinas em temas de interesse dos calouros, como escrita de relatórios técnicos em LaTeX, iniciação científica, e oficinas de programação e PBL. As duas últimas são tema deste artigo. Qual seria o diferencial desta semana de integração para outros eventos de recebimento de calouros em nosso país? Acreditamos que os focos principais desta semana são a aprendizagem de programação e a aprendizagem da metodologia PBL. Além disso, vale ressaltar que esta semana é organizada exclusivamente por alunos veteranos do curso. Este artigo relata a experiência da última semana de integração realizada em março de 2015, detendo-se especificamente sobre duas oficinas: uma oficina de aprendizagem de programação com a linguagem Python, e outra oficina de aprendizagem da metodologia PBL facilitada pelo uso do ambiente lúdico App Inventor. Este artigo é organizado da seguinte maneira. A Seção 2 revisa fundamentos teóricos, seguida pela apresentação da metodologia do trabalho na Seção 3. A Seção 4 descreve os resultados das oficinas, sendo complementada por lições aprendidas descritas na Seção 5. O artigo é encerrado com as conclusões e sugestões de trabalhos futuros na seção 6. 2. FUNDAMENTAÇÃO TEÓRICA Dificuldades na aprendizagem de conceitos e habilidades de programação são tema recorrente de pesquisa em educação em computação. Uma survey revisa várias experiências na área, realçando as dificuldades causadas por um modelo excessivamente formal de ensino (PEARS et al., 2007). Um outro trabalho revisa algumas das causas para as dificuldades de aprendizagem de programação, que variam de questões cognitivas de cada estudante, a questões mais sociais relacionadas a motivação e atitude (ROBINS, 2010). A questão da motivação é fundamental, pois reprovações em disciplinas introdutórias de programação trazem atraso para os alunos nos cursos e desestímulo para a conclusão dos cursos. Estas reprovações também podem ser causadas pelo choque que a maioria dos alunos enfrentam na transição do ensino médio para o ensino superior. Sabe-se que conceitos e habilidades requeridos para programar tem poucos paralelos com suas experiências prévias na educação básica (BITTENCOURT et al., 2013). Alguma das metodologias alternativas utilizadas na aprendizagem de programação, e que tentam reduzir os índices de evasão e de reprovação nas disciplinas de programação utilizam linguagens mais simples como Python (GRANDELL et al., 2006) ou ferramentas lúdicas para aprendizagem de iniciantes, como Scratch, Greenfoot e Alice (UTTING et al., 2010). Um destes trabalhos relata um curso de introdução à ciência da computação utilizando a ferramenta App Inventor para iniciantes sem experiência prévia com programação (WOLBER, 2011). O autor relata que o curso tem sido bem-sucedido por oferecer aos estudantes experiências reais, além de ajudá-los na conquista de trabalho e atividades acadêmicas extracurriculares. Um outro trabalho relata um curso de computação de nível superior para dispositivos móveis utilizando App Inventor, que demonstrou potencial para trazer estudantes de outras áreas para cursos de ciências da computação (ABELSON et al., 2012). O curso é um tutorial com três sessões, dividido da seguinte forma: 1) Introdução aos princípios de Ciência da Computação; 2) Demonstração do App Inventor; 3) Painel Virtual. Exemplos do uso de Python em cursos introdutórios de programação começam a surgir na literatura. Um caso de utilização de Python para alunos do ensino médio foi a oferta de um curso de programação baseado em jogos com Python (MARQUES et al., 2011). Os autores concluem que o curso serviu como um fator motivador para o aumento do interesse dos alunos pela área de computação. Alguns autores constatam que Python é uma boa linguagem para introduzir programação para iniciantes por sua simplicidade, sintaxe limpa, poder de expressão, reforço de estrutura, entre outros fatores (CEDER & YERGLER, 2003; GRANDELL et al., 2006). 3. METODOLOGIA Nesta seção, descrevemos os objetivos do trabalho, as ferramentas utilizadas, o planejamento das oficinas e os procedimentos de coleta e análise de dados. 3.1 Objetivos gerais e específicos O objetivo geral deste trabalho é permitir que os estudantes calouros tenham uma integração suave com a vida universitária em um curso de Engenharia de Computação, reduzindo dificuldades iniciais com programação de computadores e com a metodologia de aprendizagem baseada em problemas (PBL) utilizada neste curso. Além do objetivo geral, as oficinas tem os seguintes objetivos específicos: • Permitir, aos estudantes calouros de engenharia de computação, a aquisição precoce de conceitos e habilidades de programação de computadores através de atividades realizadas em ambientes de desenvolvimento de software lúdicos e adequados a iniciantes; • Reduzir a evasão nas disciplinas de programação do curso de Engenharia de Computação da Universidade Estadual de Feira de Santana; • Oferecer uma introdução à aprendizagem baseada em problemas (PBL) com o uso da própria metodologia, permitindo melhor adequação das atividades dos estudantes em componentes curriculares baseados em PBL. 3.2 Ferramentas utilizadas Python1 é uma linguagem de programação de scripts de alto nível desenvolvida inicialmente por Guido van Rossum com o objetivo de ter uma sintaxe simples e, ao mesmo tempo, permitir elevada produtividade. Com a adoção por uma comunidade de 1 http://www.python.org/ desenvolvedores mais ampla, Python tem crescido e se destacado no cenário mundial. Várias universidades em todo o mundo utilizam hoje a linguagem Python como primeira linguagem de programação, nos cursos de introdução à programação para calouros. Algumas características importantes contribuem para esta adoção pelas universidades como primeira linguagem: é uma linguagem multiparadigma; possui uma sintaxe pequena e limpa; é tipada dinamicamente, o que reduz sua notação; possui uma semântica expressiva através de seus tipos de dados básicos; provê feedback imediato por ser interpretada; reforça o design estrutural através de um modo de escrever programas indentado e estruturado; e é uma linguagem de código aberto (GRANDELL et al., 2006). Para facilitar ainda mais a introdução à programação, Python possui algumas bibliotecas voltadas para o desenvolvimento de jogos, como pyGame e pyglet. App Inventor2 é uma ferramenta web desenvolvida pelo Google, e hoje mantida pelo Massachusetts Institute of Technology (MIT). O objetivo dessa ferramenta é facilitar o desenvolvimento de aplicações móveis para o ambiente Android. O ambiente do App Inventor é dividido em duas seções: App Inventor Designer e App Inventor Blocks Editor. A seção Blocks Editor utiliza blocos que lembram brinquedo Lego, que podem ser encaixados, permitindo a criação de scripts de programação. Já a seção Designer permite projetar interfaces gráficas para dispositivos Android através de manipulação direta de widgets com o mouse, onde se pode definir, por exemplo, botões e caixas de texto, além de escolher cores e adicionar imagens. As aplicações podem ser executadas e testadas num emulador e também podem ser instaladas diretamente em dispositivos móveis Android. Esta funcionalidade torna o App Inventor atrativo para usuários de smartphones, o que é realidade comum entre estudantes de cursos universitários, em especial da área de tecnologia de informação. 3.3 Planejamento das Oficinas As oficinas de Python e App Inventor ocorreram na primeira semana do semestre letivo de 2015.1, durante a Semana de Integração de Engenharia de Computação (SIECOMP), com os alunos ingressantes no período 2015.1 do curso de Engenharia de Computação da Universidade Estadual de Feira de Santana (UEFS). Os participantes foram 22 alunos calouros que vieram à SIECOMP, dentre os 40 alunos matriculados. A oficina de Python, descrita na Tabela 1, objetivou introduzir elementos de programação com a linguagem Python, de modo que os estudantes tivessem um primeiro contato com programação antes de cursarem a disciplina de Algoritmos e Programação. Dois estudantes do curso de Engenharia de Computação, com experiência prévia em programação, conduziram a oficina através de tutoriais com apresentação de slides e exercícios práticos com a linguagem Python em um laboratório de computação. 2 http://appinventor.mit.edu/ Tabela 1. Visão geral da oficina de Python Objetivos Metodologia Conteúdo Tutores Local Participantes Período Carga horaria Turmas Oficina de Programação com Python Entender conceitos básicos de programação e aplicá-los na solução de problemas simples com a utilização da linguagem Python. Apresentações de conceitos através de um tutorial com slides e exercícios práticos no final. Scripts em Python. Características básicas da linguagem. Entrada, saída, variáveis, expressões aritméticas e lógicas, estruturas condicionais, estruturas de repetição, funções. Dois estudantes de Engenharia de Computação com experiência em programação. Laboratório de Programação, Campus da UEFS. 22 estudantes calouros de Engenharia da Computação do período 2015.1. 2 a 6 de março de 2015. 6 horas, divididas em três aulas de duas horas, em dias diferentes. Turma única com todos os participantes. A oficina de App Inventor, descrita na Tabela 2, objetivou introduzir a metodologia PBL pela prática, através de uma atividade de programação com a ferramenta App Inventor. Para tanto, a própria metodologia PBL foi usada como estratégia de aprendizagem. Os alunos foram divididos em quatro turmas, cada uma desenvolvendo uma solução para um problema simples de um sistema de informação. Os tutores desta oficina foram quatro alunos do curso de Engenharia de Computação com experiência prévia em uma ou duas disciplinas de programação. Tabela 2. Visão geral da oficina de App Inventor Objetivos Metodologia Conteúdo Tutores Local Participantes Período Carga horaria Turmas Oficina de Programação com AppInventor Compreender e aplicar a metodologia PBL na prática, através de uma atividade de programação com a ferramenta App Inventor. Utilizamos a metodologia Problem-Based Learning (PBL). Explicação do funcionamento da metodologia e desenvolvimento de um sistema simples para android utilizando o App Inventor. Quatro estudantes de Engenharia de Computação que já cursaram a disciplina de Introdução à Programação. Salas tutoriais, Campus da UEFS. 22 estudantes calouros de Engenharia da Computação do período 2015.1. 2 a 6 de março de 2015. 6 horas, divididas em três aulas de duas horas, em dias diferentes. Quatro turmas com 5 ou 6 alunos cada. A oficina de Python foi dividida em três aulas de duas horas, conforme a Tabela 3. Na primeira aula, os alunos se familiarizam com a linguagem e com scripts Python, resolvendo problemas aritméticos simples. Na segunda aula, aprenderam sobre estruturas de seleção e repetição. Finalmente, na terceira aula, utilizaram listas e funções para manipular tipos primitivos. Tabela 3. Planejamento da Oficina de Python Aula Conteúdo Atividades 1 Porque utilizar Python. Variáveis, strings, comentários, operações matemáticas, Entrada e saída. Calculadora. Problemas com porcentagem, Problemas com multiplicação. 2 Condicionais (if, else, elif), loops (while, for). Exemplos simples de condicionais e loops. Problemas com condicionais. Exercícios com Loops. 3 Listas (adicionar, remover, buscar) e funções (def). Problemas com listas, utilizando também o conceito de funções. A oficina de App Inventor ocorreu num período de três dias, dois deles para a discussão e resolução do problema e o último para a apresentação das soluções encontradas pelos estudantes, conforme o planejamento na Tabela 4. O problema PBL proposto foi um aplicativo para o sistema Android que pudesse guiar os estudantes pela universidade, mostrando os principais locais da instituição que eles achassem importantes, especialmente para os alunos do primeiro semestre. Tabela 4. Planejamento da Oficina de App Inventor Aula Objetivo Geral Conteúdo 1 Explicar a metodologia PBL e apresentar o problema. Metodologia, organização e funcionamento de uma sessão PBL. Discussão de requisitos do problema. 2 Discutir as soluções possíveis para o problema a partir do estudo realizado. Funcionamento do App Inventor: interface e scripts. Estrutura da apresentação final. 3 Apresentar os produtos e discutir o feedback dos tutores. Feedback dos tutores sobre os problemas e as apresentações 3.4 Procedimentos de coleta e análise de dados Nas oficinas de Python e de App Inventor, os dados foram coletados através de observações durante as oficinas e entrevistas realizadas após o final de cada oficina. Os dados foram analisados qualitativamente de maneira livre para este relato de experiência. 4. RESULTADOS A oficina de Python contou com uma boa participação de alunos calouros para uma atividade opcional (22 participantes em uma turma de 40 matriculados). Cada aluno usou um computador individualmente. O tutor usou um computador com acesso a um projetor multimídia para as apresentações de slides e de exemplos no interpretador Python. A oficina teve sua carga horária dividida em três dias, devido aos outros minicursos e palestras que estavam acontecendo durante a SIECOMP. Por esta divisão, o tempo acabou sendo muito curto para desenvolver algumas das atividades propostas. No primeiro dia, os alunos tiveram dificuldade em compreender a linguagem, e ainda estavam se ambientando com o IDE e também com o sistema operacional Ubuntu, usado nas máquinas do laboratório. Após cada explicação, o tutor pediu para que os alunos realizassem exercícios simples com a linguagem. Alguns dos participantes tiveram bastante dificuldade, mas os monitores auxiliaram para que todos conseguissem realizar esse pequenos desafios. Os alunos foram bastante participativos nas oficinas, sempre questionando o tutor em suas explicações, o que tornou a oficina dinâmica, especialmente a partir do segundo dia de oficina. No primeiro dia, os alunos ainda estavam se ambientando e ainda não tinham criado vínculos entre si, procurando mais o tutor ou os monitores para orientá-los em caso de dúvidas. Os exercícios foram de muita importância para o desenrolar da oficina, pois a mera explicação dos conceitos não dava certeza de compreensão. Com os exercícios, foram percebidas as dificuldades e dúvidas que os alunos tinham, o que funcionou como feedback para o tutor explicar melhor conceitos que eventualmente não estivessem claros. O fator tempo foi crucial nesta oficina. Foram planejados exercícios que exercitassem tanto a lógica de programação quanto a sintaxe da própria linguagem. Assim, algumas atividades eram mais simples, apenas para fixar a sintaxe, enquanto outras mais complexas permitiam o desenvolvimento da lógica de programação. Por isso, a segunda aula não terminou conforme planejado, deslocando alguns conceitos para a terceira aula. Isto levou a não serem trabalhados os conceitos de funções. Em suma, os alunos conseguiram entender os conceitos básicos da linguagem, apesar do curto tempo de oficina e puderam ter uma experiência inicial com uma linguagem de programação. Na oficina de App Inventor, o objetivo principal foi apresentar a metodologia PBL pela prática, com a utilização do App Inventor apenas como veículo de expressão de ideias. Um dos elementos importantes dessa oficina foi o problema proposto. Foi escolhido um problema relativamente aberto, para dar oportunidade aos estudantes de implementar a solução de maneira livre. Além disso, o problema deveria ser próximo da realidade dos alunos, para potencializar o aproveitamento de conhecimentos prévios. O problema proposto foi desenvolver um software para Android para ajudar os estudantes ingressantes do curso de Engenharia de Computação a conhecer a universidade onde estudavam. Na primeira sessão, a metodologia PBL foi explicada e foi apresentado o problema. Percebeu-se que os alunos mais desinibidos tentavam impor suas ideias, e os outros aceitavam sem questionar. Os tutores, de acordo com os preceitos de PBL, orientavam para que todos os alunos dessem suas opiniões sobre o desenvolvimento da aplicação. Os alunos não tinham tido contato anterior com a ferramenta, logo não sabiam das limitações e do que realmente poderia ser feito com ela. No segundo dia de oficina, os alunos pareciam mais à vontade, e já decidiram entre si sobre as funções de coordenação e secretariado da sessão tutorial. Algumas das ideias que surgiram ao longo da primeira sessão da oficina estavam, em alguns casos, fora da realidade, embora isso não tenha afetado a produtividade dos alunos. No segundo dia, eles já tinham testado a ferramenta e criado parte da solução. Com isso, levaram algumas dúvidas para a sessão, como se esperava para uma segunda sessão tutorial PBL. Neste dia, os alunos estavam bastante tensos com a ideia da apresentação da solução e foram tranquilizados por seus tutores e orientados sobre a organização desejada para as apresentações. No terceiro dia de oficina, o dia da apresentação, os alunos demonstraram suas soluções através de slides. Os tutores avaliaram as soluções e, ao final das apresentações, deram feedback de cada produto individualmente, realçando pontos positivos e negativos. Dos quatro produtos dos grupos tutoriais, um deles foi escolhido como o melhor e foi premiado simbolicamente. Sobre as oficinas, os participantes deram feedback, através de entrevistas. Um dos participantes, quando perguntado sobre a impressão que tinha sobre PBL após a oficina, respondeu: “Bem, eu acho que a impressão que se passa quando se faz o PBL é que é uma metodologia que faz do aluno ir além daquela coisa só de aprendizagem aluno-professor, direcionado para sua aprendizagem e o seu autodidatismo. Acho que ajuda a lidar com pessoas, que é uma questão que você vai ter que enfrentar no mercado de trabalho, que qualquer um vai ter que enfrentar. Então, isso já te prepara para enfrentar essa questão de lidar com o outro, de saber se comportar, de saber dar sua opinião, sugerir propostas para resolver um problema. Então, isso é bastante útil no PBL”. 5. LIÇÕES APRENDIDAS Podemos resumir as principais lições aprendidas com as oficinas realizadas: aprendizado por meio de problemas, utilização de uma linguagem mais casual e descontraída, feedback rápido das ferramentas e necessidade de elaboração de bons problemas. Estas lições são detalhadas a seguir. Aprender por meio de problemas foi uma das lições mais importantes. Ao utilizar desafios e problemas para incentivar e facilitar o aprendizado de programação, os alunos se sentiam motivados e desafiados para tentar resolver os problemas propostos. Por isso, havia, em ambas as oficinas, uma participação maior do alunos através de questionamentos frequentes em sala. Utilização de uma linguagem mais casual e descontraída foi importante para criar um ambiente propício à interação. Como os tutores e monitores tinham quase a mesma faixa etária dos participantes, a comunicação ficou muito mais fluida, os alunos compreendiam e se divertiam com a oficina. Ficou patente que os alunos se sentiam muito à vontade para questionar e para chamar os tutores em caso de dúvidas, especialmente em comparação a aulas com professores. Feedback rápido oferecido pelo interpretador Python e pela ferramenta App Inventor foi visto como muito positivo pelos participantes, pois eles podiam programar e ver imediatamente as mudanças aplicadas nos seus códigos-fonte. A necessidade de elaborar bons problemas ficou clara no problema da oficina de App Inventor. Sendo voltado para a realidade que os estudantes estavam vivendo, a solução oferecida seria avaliada por eles próprios. O fato de o problema ser relativamente aberto deu liberdade de ação e de discussão para os estudantes fazerem escolhas e tomarem decisões. Um dos problemas citados nas entrevistas realizadas após a oficina de App Inventor, foi o tempo curto para desenvolvimento do produto. Os alunos reclamaram do pouco tempo para desenvolver o código, já que eles estavam participando do evento, e só tinham tempo à noite para programar. Ainda não encontramos uma solução adequada para este problema, dada a grande demanda de atividades da SIECOMP, mas consideramos os resultados positivos, apesar do problema mencionado. Por outro lado, a oficina de Python teve tempo suficiente para explicar alguns conceitos. Entendemos ser necessário planejar melhor as atividades para esta oficina, de modo a não sobrecarregar cognitivamente os alunos. Para oficinas futuras, pretendemos aprimorar a oficina de Python, utilizando alguns jogos simples para fixar alguns conceitos. Pretendemos ainda analisar, ao final do semestre, se a evasão dos alunos e a quantidade de aprovações foram reduzidas, especialmente em relação aos participantes. 6. CONCLUSÃO Este trabalho apresentou um relato de experiência de duas oficinas de aprendizagem com auxilio de ambientes lúdicos: Uma voltada para um o primeiro contato de ingressantes de um curso de Engenharia de Computação com programação, e outra voltada para a familiarização dos estudantes calouros com a metodologia de ensino-aprendizagem PBL. Acreditamos que os elementos principais que levaram ao sucesso desta experiência foram: i) utilizar ferramentas voltadas para iniciantes, como Python e App Inventor, pois facilitam a participação ativa dos estudantes no processo de aprendizagem, e ii) utilizar problemas que os alunos tenham interesse incentiva a sua criatividade e motivação para resolvê-los. Pretendemos continuar a oferecer as oficinas aos ingressantes do curso de Engenharia de Computação nos próximos períodos. Pretendemos também fazer uma análise mais minuciosa dos dados, além de aperfeiçoar também as atividades a serem desenvolvidas nas oficinas, buscando oferecer atividades de aprendizagem cada vez mais práticas e motivadoras. Agradecimentos Agradecemos à Universidade Estadual de Feira de Santana (UEFS) e à Fundação de Amparo à Pesquisa do Estado da Bahia (FAPESB) pelo apoio financeiro na forma de bolsas de iniciação científica. 7. REFERÊNCIAS BIBLIOGRÁFICAS ABELSON, H.; MORELLI, R.; TURBAK, F. TEACHING CS0 WITH MOBILE APPS USING APP INVENTOR. Journal of Computing Sciences in Colleges, v. 27, n. 6, p. 16–18, 2012. BARROWS, H. S.; TAMBLYN, R. M. Problem based-learning: An approach to medical education. [s.l.] Springer Publishing Company, 1980. v. 1 BITTENCOURT, R. A.; RODRIGUES, C. A.; CRUZ, D. S. S. Uma Experiência Integrada de Programação Orientada a Objetos, Estruturas de Dados e Projeto de Sistemas com PBL. Anais do XXXIII Congresso da Sociedade Brasileira de Computação. Anais...Maceió: SBC, 2013 BITTENCOURT, R.; FIGUEIREDO, O. O Currículo do Curso de Engenharia de Computação da UEFS: Flexibilização e Integração Curricular. Anais do XXIII Congresso da Sociedade Brasileira de Computação. Anais...Campinas, São Paulo: SBC, 2003 CEDER, V.; YERGLER, N. Teaching Programming with Python and PyGame Python in our Introduction to Computer classPyCon 2003 - Python Conference. Anais...2003 GRANDELL, L. et al. Why Complicate Things? Introducing Programming in High School using Python. ACE ’06 Proceedings of the 8th Australasian Conference on Computing Education. Anais...2006 MARQUES, D. L. et al. Atraindo Alunos do Ensino Médio para a Computação: Uma Experiência Prática de Introdução a Programação utilizando Jogos e Python. Anais do XXII Simpósio Brasileiro de Informática na Educação. Anais...2011 PEARS, A. et al. A Survey of Literature on the Teaching of Introductory ProgrammingWorking Group Reports on ITiCSE on Innovation and Technology in Computer Science Education. Anais...: ITiCSE-WGR ’07.New York, NY, USA: ACM, 2007 ROBINS, A. Learning edge momentum: A new account of outcomes in CS1. Computer Science Education, v. 20, n. 1, p. 37–71, 2010. UTTING, I. et al. Alice, Greenfoot, and Scratch -- A Discussion. Trans. Comput. Educ., v. 10, n. 4, p. 17:1–17:11, nov. 2010. WOLBER, D. App Inventor and Real-world MotivationProceedings of the 42o ACM Technical Symposium on Computer Science Education. Anais...: SIGCSE ’11.New York, NY, USA: ACM, 2011 INTRODUCING COMPUTER PROGRAMMING AND PBL WITH PYTHON AND APP INVENTOR Abstract: Transition from high school to higher education is full of expectations and anxiety for the newcomers. Freshmen welcome events are a usual alternative to reduce problems in this transition as well as to facilitate the integration of newcomers to academia. In the Computer Engineering undergraduate program at the State University of Feira de Santana, the initial difficulties are usually related to learning computer programming and adapting to the problem-based learning (PBL) approach adopted in this program. This work reports two workshops of introductory programming and PBL to students of this program. The workshops happened during our integration week in March 2015. We used the Python programming language and the App Inventor tool to facilitate the learning process. Learned lessons included: the value of learning through problems, the need to design good problems, rapid feedback offered by the tools we used, and the benefits of a relaxed casual environment. The workshops were well received by students, and we intend to improve and continue to offer them in the coming weeks integration course. Key-words: learning, programming, playful environments, Greenfoot, App Inventor.