About: Competitive programming is a research topic. Over the lifetime, 51 publications have been published within this topic receiving 422 citations. The topic is also known as: programming competition & competitive programming.
TL;DR: Pedagogical results indicate that the combination of game development and friendly student competition is a significant motivator for increased student performance.
Abstract: A motivated student is more likely to be a successful learner. Interesting assignments encourage student learning by actively engaging them in the material. Active student learning is especially important in an introductory data structures course where students learn the fundamentals of programming. In this paper, the author describes a project for a data structures course based on the idea of competitive programming. Competitive programming motivates student learning by allowing students to evaluate and improve their programs throughout an assignment by competing their code against instructor-defined code and the code of other students in a tournament environment. Pedagogical results indicate that the combination of game development and friendly student competition is a significant motivator for increased student performance.
TL;DR: Online judges are systems designed for the reliable evaluation of algorithm source code submitted by users, which is next compiled and tested in a homogeneous environment as mentioned in this paper, and are becoming popular in various applications.
Abstract: Online judges are systems designed for the reliable evaluation of algorithm source code submitted by users, which is next compiled and tested in a homogeneous environment. Online judges are becoming popular in various applications. Thus, we would like to review the state of the art for these systems. We classify them according to their principal objectives into systems supporting organization of competitive programming contests, enhancing education and recruitment processes, facilitating the solving of data mining challenges, online compilers and development platforms integrated as components of other custom systems. Moreover, we introduce a formal definition of an online judge system and summarize the common evaluation methodology supported by such systems. Finally, we briefly discuss an Optil.io platform as an example of an online judge system, which has been proposed for the solving of complex optimization problems. We also analyze the competition results conducted using this platform. The competition proved that online judge systems, strengthened by crowdsourcing concepts, can be successfully applied to accurately and efficiently solve complex industrial- and science-driven challenges.
TL;DR: Steps taken at Iowa State University are described to revitalize a sophomore level course in embedded systems by addressing the type and extent of problem-based learning used in the course, in terms of the "3C5I" model.
Abstract: As systems increase in complexity and technology advances, curriculum and laboratories are challenged to keep pace. This is especially true in computer engineering, which has seen dramatic growth in the scope and diversity of computer-based systems. One of the key challenges is developing the educational context for the new technologies, which are being encountered earlier and earlier in a student's program of study. Problem-based learning has been central to engineering education, and it is particularly relevant to the integration of new system design concepts and technologies into introductory courses. In this paper, we describe steps taken at Iowa State University to revitalize a sophomore level course in embedded systems by addressing the type and extent of problem-based learning used in the course. Our goal was to develop a more interesting and relevant integrated classroom/laboratory experience for the students. We present the revisions in terms of the "3C5I" model, which creates an educational context based on Concepts within Courses within a Curriculum (3C), and in each, progressing along the five "Is" of Introduction, Illustration, Instruction, Investigation, and Implementation. Problem-based learning may extend through to either Investigation or Implementation, and in each case, to differing degrees, depending on the scope of the problem. In the revised class, we use both, with a real-world theme guiding weekly labs that culminate as parts of a final project. We examine student learning and experiences with the thematic labs as well as the effects of several other changes such as competitive programming exercises and alternative evaluation methods.
TL;DR: Strong mapping of COs to POs inherent in the experiential learning programs improves the employability as also the progression and prospects of the students, and structured competitive programming initiative in which students compete with others in a contest environment is yet another effort towards student-centered learning.
TL;DR: Competitive Programming 2 is an excellent resource for both exposure and practice and develops skills in finding appropriate algorithms, appreciating the different (test) cases an algorithm needs to solve, and helps in increasing a student’s speed and accuracy.
Abstract: There are many ways in which students can be prepared for programming contests and indeed training more generally in algorithms. Two of the more obvious areas are exposure to a wide variety of different algorithms and techniques, and practice by solving a good number of such problems. The former is important, not only at the initial levels where a student is introduced to the fundamental building blocks (e.g. dynamic programming or depth-first search) but at the progressive levels where a knowledge of more sophisticated methods gives a useful, if not essential, toolbox. Algorithmic programming contests have changed significantly since the 80s and, as this book mentions in passing, what were once the deciding problems are now basic requirements. The need for practice should be clear. Not only does it give the student the opportunity to confirm they understand the algorithms, it develops skills in finding appropriate algorithms, appreciating the different (test) cases an algorithm needs to solve, seeing ways in which multiple algorithms and data-structures can be combined and, from a purely contest perspective, helps in increasing a student’s speed and accuracy. Competitive Programming 2 is an excellent resource for both exposure and practice. It is the second edition (the first edition is just Competitive Programming) of this book, which grew originally from a similarly titled course that has been taught at the National University of Singapore since 2009. Its page count puts it at over 70% larger than the first edition. Readers of that edition, considering whether to also buy that edition can find a detailed comparison of the two editions (and the planned third edition) at the authors website [1]. The book is available in both A4 and A5 formats and an electronic version should be available by the time you read this. The A4 copy was review and worked well