TOPS - Collaboration and competition to stretch our most able programming novices (original) (raw)

Teaching Programming with a Competitive Attitude to Foster Group Spirit

2008

Socialization is an important aspect of university life. We believe that if students feel that they fit in the group, their commitment will be higher and their results will be better. In introductory programming courses, most tasks are elementary and are usually performed on an individual basis. If we manage to give greater visibility to those lonely activities, students will find out that the difficulties they face are shared by many, and realize that they are not alone. We do that by adding a competitive flavour to the tasks in the course. For example, programming assignments are modelled after programming competitions; quizzes are given after each lecture, students get points for it, and a ranking is kept, much like those in some sports; we organize tournaments, where students’ programs play against one another in a computer game. This provides a supplement of excitement to tasks that otherwise might be uninteresting to newcomers, and fosters group spirit. As a consequence, student participation is higher and results were better than before.

Strategies for Teaching Programming to Meet New Challenges: State of the Art

Computer programming is responsible for every interaction between humans and computers whether it is about creating web applications, optimizing the GPS software, processing document in a text editor, using various social networks, Internet banking, etc. Computer programming shouldn't be looked just as a tool, but as a way of seeing the world based on the idea of dividing tasks into smaller subtasks.

New challenges in teaching introductory programming courses: a case study

Frontiers in Education, 2004

The Department of Educational Sciences and the Department of Electronic & Telecommunications at the University of Aveiro (Portugal) have been working together with the Department of Computer & Information Sciences at the University of Strathclyde (UK), with the aim of improving the teaching quality of introductory programming courses and, indirectly, the academic success of their students. Over the past two years, data has been collected through interviews and questionnaires, to better understand the organization of the different courses and approaches to teaching. The present paper discusses how the organization of introductory programming courses in each institution reflects the teaching philosophy of the members of staff and also how course organization and teaching strategy relate to the students' attitudes to learning and their motivation for course involvement.

Programming Excellence through Academic Competitions – Case Study iPC ‘08

Persidangan Pembangunan Pelajar Peringkat Kebangsaan, UTM, Malaysia, 2008

The issues relating to students with weaknesses in programming subjects have been known in close to all Institutes of Higher Learning (IHL) in Malaysia. There are a lot of assumptions on, and implication of, this issue. A recent study conducted at Universiti Tenaga Nasional (UNITEN) indicates that our students are overall satisfied with the lecturing and tutoring personnel, including the materials used, in the programming courses. The findings reveal, though, that a majority of the students spend less time to prepare and study for their programming subjects. As a result, we had to conclude that the students lack the necessary commitment to equip themselves with better programming skills. In an effort to motivate our students to become more skillful in programming, we have organized an inaugural Inter-Department Programming Competition (iPC ‘08), a programming contest between the departments of the technical colleges in UNITEN. This competition was open to all students that have completed the first programming subject, Principles of Programming. The competition questions were based on the language taught in this course, C. Each department was to send at least one team of students, to be selected by the Heads of Department. A real-time online submission system was used for the participants to submit their answers. Upon receiving the answer from the contestants, a gremium of judges (IT lecturers) evaluated the respective answers. The iPC ‘08 competition managed to draw the attention of many students. The overall response to the competition was very encouraging. This paper focuses on the processes involved in conducting the competition. We strongly believe that it can serve other IHLs as an inspiration for organizing similar competitions at their respective institutions.

Towards Inter-Subject Project-Based Learning in Programming-Related Courses at Computer Science Studies

2020

Curriculum design of University Degrees in Spain is mainly based on scheduling atomic, self-contained semester subjects during a 4-year period. This scheduling is driven by one major constraint: to ensure that previous subject prerequisites are met for each course. Thus, basic subjects without college-level prerequisites are typically scheduled in the first year, first semester, while the rest are properly planned in a sequential manner, complying the aforementioned condition. This is, basically, the only proof of inter-subject coordination in such degrees, taking place at the design stage. During the academic period, however, there is no vertical nor horizontal inter-subject coordination, not even among closely-related subjects. In order to increase inter-subject coordination and to exploit its potential benefit for students, the projectbased learning (PBL) methodology shows on the scene. This approach organizes learning around student-driven projects aiming to solve real-life problems. This close applicability to the real world expedites intrinsic motivation of students, and consequently, their learning process tends to be deeper and more significant. Furthermore, PBL applied at the inter-subject level increases curriculum cohesion and makes students more engaged and compromised with its global objectives. In this paper we describe the design of PBL models involving two pairs of programming-related subjects from the Computer Engineering Degree at the Universitat Politècnica de València. The first one associates the "Programming" with the "Data Structures and Algorithms" subject, while the second one engages the "Introduction to Video-Games Programming" with the "Digital Image Synthesis" one. It is an ambitious pilot programme that will require a high coordination effort among participating professors and student teams.

A Mastery Learning Approach: An Introductory Programming Course Design for Diversified Students' Interests

An introductory programming course such as CS1 is one of the most essential courses in terms that successive computer science (CS) courses heavily depend on students' attainment level of CS1. In this study, we show our experience of our CS1 course to conform with diversified students' interest. We introduce (1) "virtual small group classes"(VSCs) which are practical laboratory programming work from variety kinds of domain, along with (2) "mastery test" (MT) which is designed to assure fundamental knowledge and skills expected in CS1. Our VSCs employed five courses with different domains in year 2011 and students should challenge to create programs from at least one courses. MT is pass/fail test of which passing point is set at 86% and students can take till passing. One of the main objective of MT is to raise mastery levels of students especially who have difficulty in following the VSCs. Our experience of VSCs and MT of 2011 indicates that VSCs efficiently motivate students and encourage their engagement in programming on one side, with keeping their master levels by MT. We succeeded to start successive lectures with keeping students' interest and required knowledge level.

In support of student pair-programming

ACM SIGCSE Bulletin, 2001

Industry, particularly those following the eXtreme Programming (XP) methodology [2], has popularized the use of pair-programming. The pair-programming model has also been found to be beneficial for student programmers. Initial quantitative and qualitative results, which will be discussed in this paper, demonstrate that the use of pair-programming in the computer science classroom enhances student learning and satisfaction and reduces the frustration common among students. Additionally, the use of pair-programming relieves the burden on the educators because students no longer view the teaching staff as their sole form of technical information. We explore the nature of pair-programming, then examine the ways such a practice may enhance teaching and learning in computer science education.

Designing and deploying programming courses: Strategies, tools, difficulties and pedagogy

Education and Information Technologies, 2014

Designing and deploying programming courses is undoubtedly a challenging task. In this paper, an attempt to analyze important aspects of a sequence of two courses on imperative-procedural and object-oriented programming in a non-CS majors Department is made. This analysis is based on a questionnaire filled in by fifty students in a voluntary basis. The issues of the programming courses that are investigated refer to: the strategy selected for the introduction to programming; the sequence of the programming techniques and languages taught and the transition from the one to the other; students' difficulties with programming in general and with imperative-procedural and object-oriented programming in specific; the teaching and learning design of both courses; and the material that students rely on for learning programming. Based on the analysis of students' replies on the questionnaire, related work and the instructor's experience on teaching the courses, conclusions are drawn regarding all the aforementioned aspects of designing and deploying programming courses. The main contribution of the paper is the fact that all the important and interrelated aspects of a sequence of two programming courses are investigated in conjunction, providing realistic implications and guidelines for improving the quality and effectiveness of existing programming courses and designing and deploying new courses. The main results refer to the usage of a pseudo-language for an introduction to programming, the transition from procedural to object-oriented programming, the intrinsic difficulties of learning programming, and practices for a more successful teaching and learning design of programming courses. Keywords: Programming course design; teaching and learning programming; procedural programming; object-oriented programming; pedagogy 2004). The imperative-first and functional-first strategies were heavily used for decades, while the objects-first strategy attracted teachers' attention the last decade. For a long period of time extended research was carried out regarding the best choice of strategy for an introduction to programming with main opponents the imperative-first and objects-first strategy. Although, the results of the relevant studies are contradictory the majority of researchers seem to agree that students face more difficulties during their transition from imperative-procedural programming to object-oriented programming and not vice versa ). Some of the difficulties faced by students -with prior experience on an imperative-procedural language -during their introduction to OOP are the following: although the OO problem solving technique is considered more natural, it demands a new way of thinking that cannot be easily acquired by students with experience on problem solving with a procedural language (Tempte, 1991); students find it difficult to use correctly OOP concepts and tend to treat methods as procedures, ignoring their role in OOP (Handjerrouit, 1998; Handjerrouit, 1999). On the other hand, other researchers state that object-oriented languages demand knowledge of basic programming structures and characteristics and capabilities prior to using an OOP language . It is obvious that deciding what strategy to rely on for the introduction to programming is not an easy and straightforward decision. Moreover, in the case of a series of programming courses decisions have to be made regarding the overall strategies, or else what programming techniques will be taught and with what sequence. The next step is selecting a programming language that supports the selected strategy and meets the goals of the course and the program of studies. The available programming languages are numerous and selecting the one that will be used is a multicriteria decision. Researchers have proposed lists of criteria , key features and suggestions (Kaplan, 2010) for supporting teachers in selecting the first programming language. One of the most extensive list of criteria has been proposed by and includes the following criteria: software cost; programming language acceptance in academia; programming language industry penetration; software characteristics; student-friendly features; language pedagogical features; language intent; language design; language paradigm; language support and required training; and student experience. go a step beyond these usual considerations proposed as selection criteria Xinogalos, S. (2014). Designing and deploying programming courses: Strategies, tools, difficulties and pedagogy.

Guidelines for the use of pair programming in a freshman programming class

2003

Undergraduate freshman programming classes are conventionally organized such that individual students complete a set of concept-specific and unrelated programming assignments. This structure does not prepare students for future collaborative efforts or for the future use of software engineering practices. The addition of pair programming into a freshman programming class at the University of California at Santa Cruz (UCSC) showed similar benefits to similar studies on upper-division software classes[1,2], and is expected to show an improvement in students' willingness and ability to participate in complex, collaborative software engineering assignments in later classes. This paper describes the implementation of the pair programming experiment at UCSC, discusses some of the issues that compromised the effectiveness of certain pairs, and provides implementation guidelines for avoiding such issues in other classes.

The Use of an Open-Ended Project to Improve the Student Experience in First Year Programming

Proceedings of the Canadian Engineering Education Association, 2015

Prior to 2010, Mechanical and Mechatronics Engineering students at the University of Waterloo were taught an introductory programming course using C++ in first year. Historically, the emphasis was on learning syntax; practising problem-solving was a distant second priority. In addition, many students were noticeably disengaged in lectures, and the assessments used were not authentic.Starting in 2010, a course project was implemented to address these concerns. The project was immediately well received by students, as evidenced by a noticeable number of students going well beyond the minimum project requirements and the variety of projects implemented. Since the project was introduced, the students have been able to successfully answer less structured final exam questions. The increase in problem-solving and thinking skills more than offsets the reduction in language-specific facts. The logistics, challenges and resources required to implement a project of this scope will be described