PROGRAMMING LEARNING: DIFFICULTIES AND SUPPORT TOOLS António José Mendes – University of Coimbra
Portugal 2 Vilnius - August 2010
Coimbra 3 Vilnius - August 2010
University of Coimbra 4 Vilnius - August 2010
Our research center CISUC – Centro de Informática e Sistemas da Universidade de Coimbra Cognitive and Media Systems Adaptive Computing Software and Systems Engineering Communications and Telematics Information Systems Evolutionary and Complex Systems 5 Vilnius - August 2010
Our group Cognitive and Media Systems Knowledge & Intelligent Systems Lab Computational Creativity and Digital Media Lab Ambience Inteligence Lab Educational Technology Lab 6 Vilnius - August 2010
Our Lab The main themes Computer Science Education Simulation-based Educational Systems Collaborative and Social Learning Environments The (current) team 3 PhD 7 PhD students (one waiting to defend) 1 MSc student 1 BSc student 7 Vilnius - August 2010
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 8 Vilnius - August 2010
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 9 Vilnius - August 2010
The problem - 1 Learning programming is difficult, no matter the language and/or paradigm used Incapacity to create an algorithm to solve a given problem Difficulties to detect logical errors in their own code Misconceptions about basic concepts Low success rates even for Computer Science students Complaints from other courses teachers 10 Vilnius - August 2010
The problem - 2 Learning programming requires both knowledge and skill Teaching methodologies often fail to help students develop abilities in programming practice Maybe, to a certain degree, programming should be considered a skill-based or artistic discipline There is a parallel with musical instrument learning Practice based, but few reach a high proficiency level Some learners develop quickly and show “ability” while others seem unable to move beyond the basics 11 Vilnius - August 2010
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 12 Vilnius - August 2010
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 13 Vilnius - August 2010
The difficulties - 1 Student’s backgrounds and attitudes Several programming levels and learning styles in the same class Used to memorization and to solve problems using formulas Low curiosity and incapacity to take programming difficulties as personal challenges “Minimum effort law” Errors are often seen as a problem and not as learning opportunities Inadequate study strategies 14 Vilnius - August 2010
The difficulties - 2 The subject High abstraction level Essentially a problem solving subject Language syntaxes are complex (were created to professionals) IDEs don’t ease error detection (especially logical errors) 15 Vilnius - August 2010
The difficulties - 3 The teaching Traditional classes have low impact in student’s abilities to solve problems Individualization is very difficult due to class sizes It is difficult to help students to overcome their difficulties Static learning materials are still central in many courses 16 Vilnius - August 2010
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 17 Vilnius - August 2010
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 18 Vilnius - August 2010
19 Mini-languages Mini-Java,... Controlled development environments BlueJ, jGRASP,... Solution test tools Mooshak,... Microworlds Karel, the robot,... What we can find in literature - 1 Vilnius - August 2010
Animation tools Simulation tools Algorithms (SICAS, …) Programs (Jeliot, OOP-Anim,...) Collaborative tools College, Vilnius - August 2010 What we can find in literature - 2
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 21 Vilnius - August 2010
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 22 Vilnius - August 2010
23 What we did in the past - 1
Vilnius - August SICAS is a system to support learning of basic programming concepts, such as selection and repetition It has features designed to help students visualize how their own programs work, allowing them to find and correct errors that may exist What we did in the past - 2
Vilnius - August Simulation Variables Console What we did in the past - 3
Vilnius - August OOP-Anim is a system to support learning of basic object oriented programming concepts It shares the same pedagogical foundations of SICAS It has features designed to help students visualize how their own object oriented programs work, allowing them to find and correct errors that may exist What we did in the past - 4
Vilnius - August What we did in the past - 5
Vilnius - August Our experience shows that animation based simulation tools are useful to many students But some students fail to take full advantage as they are unable to create a first solution (even wrong) to a proposed problem But
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 29 Vilnius - August 2010
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 30 Vilnius - August 2010
31 What we did more recently - 1
Vilnius - August PESEN is a simple tool that introduces programming concepts in a very basic environment Students have to program movements of simple shapes through basic commands, including repetiton and selection What we did more recently - 2
Vilnius - August What we did more recently - 3
Vilnius - August ProGuide works together with SICAS, interacting with students during algorithm development, guiding them when necessary It is a dialogue-based tool that helps novice programmers to solve problems using text based communication When students are creating an algorithm, ProGuide monitors their actions (or lack of action) and interacts with them, trying to provide some guidance whenever necessary What we did more recently - 4
Vilnius - August What we did more recently - 5
Vilnius - August SICAS-COL is a result of our collaboration with Universidad de Castilla-La Mancha (UCLM) It is a collaborative tool that results from the integration of SICAS with dialogue tools included in DOMOSIM-TPC Supports distributed group work in the design of solutions to basic programming problems What we did more recently - 6
Vilnius - August What we did more recently - 7
Vilnius - August COLLEGE is a Real-Time Collaborative Programming tool developed by UCLM with some collaboration from our side It allows geographically distributed programmers to work concurrently and collaboratively on the same programming task (edition, compilation and execution) Students that work in groups need to communicate, argue and give opinions to other group members, encouraging reflection and learning What we did more recently - 8
Vilnius - August What we did more recently - 9
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 40 Vilnius - August 2010
Summary The problem The difficulties What we can find in the literature What we did in the past What we did more recently What we are doing now 41 Vilnius - August 2010
42 What we are doing now