Publications

Permanent URI for this collectionhttps://repositorio.grial.eu/handle/123456789/34

Browse

Search Results

Now showing 1 - 7 of 7
  • Thumbnail Image
    Item
    Teaching and Learning Tools for Introductory Programming in University Courses
    (IEEE, 2021-09-23) Figueiredo, J.; García-Peñalvo, F. J.
    Difficulties in teaching and learning introductory programming have been studied over the years. The students' difficulties lead to failure, lack of motivation, and abandonment of courses. The problem is more significant in computer courses, where learning programming is essential. Programming is difficult and requires a lot of work from teachers and students. Programming is a process of transforming a mental plan into a computer program. The main goal of teaching programming is for students to develop their skills to create computer programs that solve real problems. There are several factors that can be at the origin of the problem, such as the abstract concepts that programming implies; the skills needed to solve problems; the mental skills needed to decompose problems; many of the students never had the opportunity to practice computational thinking or programming; students must know the syntax, semantics, and structure of a new unnatural language in a short period of time. In this work, we present a set of strategies, included in an application, with the objective of helping teachers and students. Early identification of potential problems and prompt response is critical to preventing student failure and reducing dropout rates. This work also describes a predictive machine learning (neural network) model of student failure based on the student profile, which is built over the course of programming lessons by continuously monitoring and evaluating student activities.
  • Thumbnail Image
    Item
    Help To Programming: uma Ferramenta para o Ensino e Aprendizagem da Programação
    (Grupo GRIAL, 2021-02-11) Figueiredo, J.; García-Peñalvo, F. J.
    Existe a ideia generalizada de que o ensino e aprendizagem da pro-gramação é difícil. Desde que surgiram as linguagens de programação que este tema é estudado e investigado por todos os que se dedicam a esta área das ciên-cias da computação. Os conceitos básicos da programação fazem parte de mui-tos cursos de ensino superior nas mais diversas áreas do conhecimento. As difi-culdades no ensino e aprendizagem da programação refletem-se não só nas altas taxas de reprovação, mas também, e talvez a mais preocupante, nas altas per-centagens de abandono, na falta de motivação e de interesse dos alunos. Neste trabalho apresentamos algumas das razões nas dificuldades do ensino e na aprendizagem da programação. Descrevemos um conjunto de estratégias de en-sino e aprendizagem de introdução à programação de modo a reduzir este pro-blema. Este conjunto de estratégias é auxiliado por uma aplicação HTPro-gramming que nos permitirá acompanhar em pormenor o desenvolvimento de cada aluno, nas diferentes fases do processo de aprendizagem. À medida que o aluno constrói o seu perfil de aprendizagem será possível aplicar um modelo preditivo de sucesso ou insucesso. É possível ao aluno melhorar aspetos especí-ficos do seu perfil de aprendizagem e ao professor ter um conhecimento preciso do nível de conhecimento de cada aluno, e intervir rapidamente se necessário. Os resultados obtidos são encorajadores. Os alunos estão mais interessados, motivados e envolvidos no processo de ensino e aprendizagem e sentem-se mais confiantes com a possibilidade de aprender e praticar ao seu próprio ritmo, sem o receio de errar.
  • Thumbnail Image
    Item
    Teaching and learning strategies of programming for university courses
    (ACM, 2019-10-16) Figueiredo, J.; García-Peñalvo, F. J.
    It is consensual to consider teaching and learning programming difficult. A lot of work, dedication, and motivation are required for teachers and students. Since the first programming languages have emerged, the problem of teaching and learning programming is studied and investigated. The theme is very serious, not only for the important concepts underlying the course but also for the lack of motivation, failure, and abandonment that such frustration may imply in the student. Immediate response and constant monitoring of students' activities and problems are important. With this work, it is our goal to improve student achievement in courses where programming is essential. We want each student to be able to improve and deepen their programming skills, performing a set of exercises appropriate and worked for each student and situation. We intend to build a dynamic learning model of constant evaluation, build the profile of the student. The student profile will be analyzed by our predictive model, which in case of prediction of failure, the student will have more careful attention. Predict the student's failure with anticipation and act with specific activities, giving the student the possibility of training and practicing the activities with difficulties. With this model, we try to improve the skills of each student in programming.
  • Thumbnail Image
    Item
    Predicting Student Failure in an Introductory Programming Course with Multiple Back-Propagation
    (ACM, 2019-10-16) Figueiredo, J.; Lopes, N.; García-Peñalvo, F. J.
    One of the most challenging tasks in computer science and similar courses consists of both teaching and learning computer programming. Usually this requires a great deal of work, dedication, and motivation from both teachers and students. Accordingly, ever since the first programming languages emerged, the problems inherent to programming teaching and learning have been studied and investigated. The theme is very serious, not only for the important concepts underlying computer science courses but also for reducing the lack of motivation, failure, and abandonment that result from students frustration. Therefore, early identification of potential problems and immediate response is a fundamental aspect to avoid student’s failure and reduce dropout rates. In this paper, we propose a machine-learning (neural network) predictive model of student failure based on the student profile, which is built throughout programming classes by continuously monitoring and evaluating student activities. The resulting model allows teachers to early identify students that are more likely to fail, allowing them to devote more time to those students and try novel strategies to improve their programming skills.
  • Thumbnail Image
    Item
    Estrategias de enseñanza y aprendizaje de la programación en cursos universitarios
    (Grupo GRIAL, 2018-06-08) Figueiredo, F.; García-Peñalvo, F. J.
    Las dificultades de la enseñanza y del aprendizaje de la programación son un tema preocupante para los alumnos y los profesores. Este tema ha sido objeto de numerosos trabajos de investigación a lo largo de los años, desde la aparición de los primeros lenguajes de programación. El fracaso en el aprendizaje de la programación es tema de preocupación en cualquier área y nivel de ense-ñanza, pero especialmente preocupante en la enseñanza superior y en los cursos en el área de Computer Science (CS). Las unidades curriculares de introducción a la programación son normalmente en el primer año de los cursos y, paralela-mente, a las dificultades de ser una nueva fase en la vida del alumno, las dificul-tades en el aprendizaje de la programación pueden convertirse en un factor de desmotivación y de desinterés por el curso. Varios factores pueden estar en el origen de este problema, tales como: la capacidad de abstracción, la construcción mental del raciocinio necesario para la resolución de los problemas, Computa-tional Thinking, o la utilización de métodos de enseñanza inadecuados. Nuestra principal motivación para el desarrollo de este trabajo consiste en com-prender dónde están las dificultades reales, qué factores más influyen en su pro-ceso de aprendizaje, sus razones, cómo podemos ayudar a superarlas, qué herra-mientas, qué métodos o tecnologías podemos utilizar para reducir los problemas en la enseñanza y el aprendizaje inicial de la programación.
  • Thumbnail Image
    Item
    A (Relatively) Unsatisfactory Experience of Use of Scratch in CS1
    (ACM, 2017-10-18) Martínez-Valdés, J .A.; Velázquez-Iturbide, J. Á.; Hijón-Neira, R.
    Scratch is a “rich-media programming language” that has become very popular at high school because students may learn it very quickly and produce surprisingly animated programs. Consequently, some instructors have proposed using Scratch at the university in introductory programming courses. Their experiences report on students’ high motivation and sometimes also on higher performance. We adopted Scratch as the introductory programming language for a CS1 course in a videogames major. It was used for two weeks and then the course switched to using Java. The results we obtained for both the Scratch language and the Dr. Scratch tool were less satisfactory than expected and, in some regards, disappointing. We describe our experience, analyze students’ acceptance and discuss some consequences and lessons learnt to Scratch in university courses.
  • Thumbnail Image
    Item
    How to Improve Computational Thinking: a Case Study
    (Ediciones Universidad de Salamanca, 2017-12-31) Quitério Figueiredo, J. A.
    One of the best skills for everyone, for now, and for the future, is problem-solving. Computational thinking is the way to help us to develop that skill. Computational Thinking can be defined as a set of skills for problemsolving based on computer techniques. Computational thinking is needed everywhere and is going to be a key to success in almost all careers, not only for a scientist but for many professionals, like doctors, lawyers, teachers or farmers. For many problems it is a good idea to make a plan for its resolution using some of the techniques of computer science, such as: breaking down a complex problem into smaller parts that are more manageable and easier to understand, or solve—decomposition; looking for similarities among and within problems and others experiences—pattern recognition; focusing on the important information only, and pulling out specific differences to make one solution work for multiple problems: abstraction; developing a step-by-step solution to the problem: algorithms. This plan can be used by everyone, regardless of their area of knowledge, task or age. It is essential that these techniques are practiced and developed very early. In recent years we have to see the proliferation of numerous projects with the specific objective of encouraging the study of Computational thinking. The projects of massification of computational thinking and coding are now starting to be implemented in our education system in Portugal. Most students of the first year of the Computer Engineering course, from the IPG, mostly did not have the opportunity to develop computational thinking throughout their student life. In this paper, we present the results of a case study using follow and give instructions to improve their capacities in Computational Thinking.