Search
Search Results
-
Programming Theorems and Their Applications
213-241Views:117One of the effective methodological approaches in programming that supports the design and development of reliable software is analogy-based programming. Within this framework, the method of problem reduction plays a key role. Reducing a given problem to another one whose solving algorithm is already known can be made more efficient by the application of programming theorems. These represent proven, abstract solutions – in a general form – to some of the most common problems in programming. In this article, we present six fundamental programming theorems as well as pose five sample problems. In solving these problems, all six programming theorems will be applied. In the process of reduction, we will employ a concise specification language. Programming theorems and solutions to the problems will be given using the structogram form. However, we will use pseudocodes as descriptions of algorithms resembling their actual implementation in Python. A functional style solution to one of the problems will also be presented, which is to illustrate that for the implementation in Python, it is sufficient to give the specification of the problem for the design of the solution. The content of the article essentially corresponds to that of the introductory lectures of a course we offered to students enrolled in the Applied Mathematics specialization.
Subject Classification: D40
-
Introductory Computer Programming Courses in Mathematics Curriculum
19-30Views:109We present the results of surveys and curricular research on introductory computer programming courses that are required or recommended for mathematics degrees at U.S. colleges and universities. Our target schools were those with populations between 5,000 and 20,000 undergraduate students. A key result is a synopsis of programming languages in use in these introductory courses with Java, Python and C + + holding the top three spots. We found that 85% of the 340 schools in our pool require or recommend an introductory programming course as a component of a mathematics degree. Furthermore, most of these introductory programming courses are taught by faculty outside of the mathematics department. These results indicate that mathematics faculty value computer programming and should be actively involved in setting learning outcomes, incorporating skills and concepts learned in introductory programming courses into subsequent mathematics courses, and determining programming languages in use.
Subject Classification: 97D30, 97P20, 97P40
-
Force of summation
185-199Views:25Programming theorems are important tools of programming methodology. By using analogous programming techniques, the solutions of different tasks can be created easily and fast based on programming theorems. Perhaps the summation is the simplest programming theorem that is widely-known among the programmers but once and for all the most various tasks can be solved by this theorem. The aim of the present paper is to investigate the summation programming theorem. Several different abstract levels of this theorem will be defined and the problem types that can be solved based on summation are going to be described. We will underline those points of a programming theorem that make a theorem general and that are not defined in advance, just later during its application, when the solution of a problem is derived from the theorem. -
Expressiveness of programming languages and environments: a comparative study
111-141Views:31In written and oral communication tools, the support of the understanding of our message have an important role: we can increase the expressiveness and the level of understanding of our topic by approaching it in several ways, i.e. in written methods by highlighting the important parts; in oral by changing tone and other elements of non-verbal communication. In this paper programming languages and developing environments are compared with each other in terms of their methods and their level of support to the solution of programming tasks.
There is a need to have these tools in programming and, of course, in teaching programming. What are the factors that define the distinctness and the legibility of a program? What are the basic principles which give an instrument in programmers' and students' hands in order to create a properly working program from already existing algorithms in the most efficient way? We search for the answers to these questions in this paper. -
Analogous programming with a template class library
135-152Views:43In this paper, a template class library and its usage can be read. The classes of the library contain the C++ code of the algorithm of programming theorems. This library supports the implementation of the programs that are planned by analogous programming but the primary aim of its usage is to introduce the object-oriented programming style to show how a reusable code can be written with inheritances, overriding virtual methods, composition of objectcs and template parameters. -
Programming theorems on enumerator
89-108Views:36This paper deals with the examination of the programming patterns best known by programmers: the programming theorems. It is a significant issue that in what way these patterns can be formulated in order to solve a relatively broad spectrum of problems using a small number of patterns. In this paper, the well known programming theorems are applied to the processing of enumerators. To this end, the robustness of patterns gained this way will be presented, and it will be also pointed out how the programs thus constructed can be implemented in the modern object-oriented programming environments: in language C++, Java and C#. -
Teaching multiparadigm programming based on object-oriented experiences
171-182Views:25Multiparadigm programming is an emerging practice in computer technology. Co-existence of object-oriented, generic and functional techniques can better handle variability of projects. The present paper gives an overview of teaching multiparadigm programming approach through typical language concepts, tools in higher education. Students learning multiparadigm-oriented subjects would gain considerable expertise, which is highly needed by the industrial side in large-scale application development. -
Live & Learn: When a wrong program works
195-208Views:26In this paper an interesting and surprising case study of my programming education practice is presented. This case underlines the importance of methods, standards and rules of thumb of the programming process. These elements of the programming technology can be taught well in education and they can guarantee the quality of the implemented programs. However the case described in this paper brings an anomaly when a programming standard is violated during the programming process and, although it should imply that the implemented program code works badly, the program works perfectly. This anomaly is caused by a typical implementation problem: the boundary and rules of the machine representation of numbers. This anomaly is going to be analyzed and the appropriate conclusions of our case study will be deducted. -
How to use our own program evaluation system to streamline teaching computer programming
73-80Views:34During computer programming contests the use of automatic evaluation systems is becoming more and more frequent. In said systems the contestants are allowed to submit their source code that will be evaluated with the results reported back to them. According to this report the contestant can realise for what test cases his program works properly and for what cases does it fail. This kind of on-line evaluation system is used for example in the International Olympiad in Informatics (IOI), in the final round of the Nemes Tihamér National Programming Competition, and in the Selection Competition for IOI in Hungary. A contest management system can be used for other purposes apart from this singular example. A well-developed evaluation system can foster not only the teaching of computer programming and the preparation of students for programming contests but the teacher's work as well. -
How to teach testing?
215-232Views:22Testing methodology is an important part of IT education. It is desired to show the beginner programmer students the advantage of testing by having them do only a small amount of work. In this paper, we will show how to make testing as a part of programming in simple exercises. These exercises are solved with the analogous programming technique, which is based on programming theorems over enumerators. We have elaborated grey-box test cases for the programs which have been developed based on programming theorems. These test cases can be taught together with the programming theorems, and they can serve as a standard testing procedure for programmers. We also suggest a test tool to automatize test runs, and we will discuss its usage in a short case study. -
Methods of teaching programming
247-257Views:47Programming methodology is one of the oldest fields of IS education, and thus various methods have evolved for its teaching. While some of them could be used effectively in primary or secondary education, others are more suited for students in higher education. The methods themselves determine the structure and curricula of courses such as Programming methodology, Data types and algorithms, Programming technology. -
How to teach computer programming if our goal is the International Olympiad in Informatics
13-25Views:35Nowadays if a student in Hungary (age between 17-20 years old) wants to be the member of the Hungarian selected team (has four members) to participate in the International Olympiad in Informatics (IOI), first, he has to qualify himself in the first fifteen of the National Secondary School Competition (OKTV) in the programming category after the III. round. Then he should be in the first four place after the sixth round of the Selection Competition. Being successful is necessary that the student wants to start studying computer programming at least in the 9th school year and he needs a teacher who prepares him. In the last nine years three students of the author have participated in five Olympics and two of them won gold and bronze medals. This article wants to demonstrate the methods that a teacher needs to use to teach students in 9th school year for computer programming, to be the member of the Hungarian National Team after three or four years. -
Comparing the IT skills and the programming knowledge of Hungarian students specialized in informatics with Romanian students attending a science course or a mathematics-informatics course
21-40Views:33The goal of this research is an analysis of the IT skills and programming knowledge of Hungarian and Romanian students attending a Science course or a Mathematics-Informatics course. Analysed was how effectively can students from different grades answer questions dealing with different subjects. After having evaluated the test results correctness of the original presumption emerged. Significance level was 5% through the analysis. Significant divergency in knowledge of Hungarian students and Romanian students of Humanities (Profil Uman) was found in 11th and 12th grades too. Romanian students attending a science course (Profil Real) and a Mathematics-Informatics course scored higher in programming than their Hungarian counterparts specialized in Informatics in the 11th grade. After the evaluation a final conclusion can be made: Romanian students of the Real Profile have the same or more practice in programming than Hungarian students specialized in Informatics, though the latters have the same or better IT skills. Unfortunately, Hungarian teachers concentrate on word processing and spreadsheet calculation and teach programming just for the students specialized in Informatics, although algorithm thinking would be important for every student before finishing secondary school. -
An evaluating tool for programming contests
103-119Views:8Students of the University of Debrecen majoring in informatics have been participating in regional ACM international collegiate programming contests since 1995. In earlier times arrangement of the local rounds was difficult because we had to check the contestants' submissions by hand. Beyond the discomfort, this hindered the efficient work of the jury and involved a number of possibilities of making mistakes.
The Programming Contest Result Manager (PCRM) program developed in the past two years provides a solution to the above problems. The program automates the evaluation of submissions and provides both the jury and the contestants with a user interface. This application can help the jury not only in ACM type but also in other kinds of practical programming contests. -
Can a language be before “the first programming language”?
209-224Views:24I would like to present a potential new language which can be before "the first programming language". We can use this to write down the algorithms and source code can be generated from this. The keyword is XML. This can be used for describing algorithms, easy to check the syntax and the semantic. Source code can be transformed with XSLT. So the usage of this new language can help us to answer the question, which is the best first programming language? -
"Frontier algorithms"
139-152Views:23In this paper we present a new method to compare algorithm design strategies. As in case of frontier towns the cultures blend, the so called "frontier algorithms" are a mixture of different programming techniques like greedy, backtracking, divide and conquer, dynamic programming. In case of some of them the frontier character is hidden, so it has to be discovered. There are algorithms that combine different techniques purposively. Furthermore, determining the programming technique the algorithm is using can be a matter of point of view. The frontier algorithms represent special opportunities to highlight particular characteristics of the algorithm design strategies. According to our experience the frontier algorithms fit best to the revision classes. -
Integrating elements of data science into high-school teaching: Naïve Bayes-classification algorithm and programming in Python
307-316Views:99Probability theory and mathematical statistics are traditionally one of the most difficult chapters of mathematics to teach. One of the authors, Péter Princz has experience in teaching various topics via computer programming of the problem at hand as a class activity. The proposed method is to involve programming as a didactic tool in hard-to-teach topics. The intended goal in this case is to implement a naïve Bayes-classifier algorithm in Python and demonstrate the machine-learning capabilities of it by applying it to a real-world dataset of edible or poisonous mushrooms. The students would implement the algorithm in a playful and interactive way. The proposed incremental development process aligns well with the spirit of Tamás Varga who considered computers as modern tools of experimental problem solving as early as in the 1960s.
Subject Classification: 97D40, 97D50, 97K50, 97K99, 97M60, 97P40, 97P50, 97U50
-
Mechanisms for teaching introductory programming using active learning
407-421Views:27One of the requirements of teaching introductory programming to students whose branch of learning is engineering or science is bridging the gap between in-class lectures and real-world applications. Traditional passive approaches to lecturing often focus on the syntax of a language with little or no discussion of the process involved in using the language to design algorithms to solve real-world problems. One way of overcoming the limitations of traditional lecturing is by tailoring lectures towards becoming more student-oriented, a pedagogical methodology known as active learning. This paper explores mechanisms for implementing active learning in introductory programming courses in computer science. -
Analysing the effects of OOP helper application
65-75Views:25Nowadays students of secondary schools are familiar with the usage of computer very soon, lot of them are even capable of handling user applications very cleverly. This is satisfying for most of them. Those who imagine their future in programming or system developing, need to have deeper knowledge about object oriented programming, however, students do have it at very low level or not at all. We want to make sure whether this suppose is true, so different examinations have recently been made at Slovakian secondary schools with Hungarian teaching language. We have reached a conclusion that the students' knowledge of object oriented programming is deficient. We could achieve better results by using proper applications as a visual aid. In this paper we examine the efficiency of an application made by us. -
Organizing programming contests
73-99Views:28This paper aims to summarize my experience in organizing programming contests. It is an overview of those questions that should be raised and decisions that should be made by organizers, teachers and computer system administrators, who participate "on the other side" of such events. -
Software engineering education in cooperation with industrial partners
133-148Views:26This paper presents our experiences on teaching software engineering in teams which are organized around different R+D projects. These long-running, innovative projects are carried out in cooperation with industrial partners, and are supported by student exchange. While MSc and PhD students work together with faculty staff members on the projects in an industrial-like environment, the students develop skills that would be otherwise very hard for them to obtain. The methodological contributions of the paper are illustrated by, and substantiated with, the description of a concrete software engineering project. -
The single-source shortest paths algorithms and the dynamic programming
25-35Views:30In this paper we are going to present a teaching—learning method that help students look at three single-source shortest paths graph-algorithms from a so called "upperview": the algorithm based on the topological order of the nodes, the Dijkstra algorithm, the Bellman-Ford algorithm. The goal of the suggested method is, beyond the presentation of the algorithms, to offer the students a view that reveals them the basic and even the slight principal differences and similarities between the strategies. In order to succeed in this object, teachers should present the mentioned algorithms as cousin dynamic programming strategies. -
Delusions in informatics education
151-161Views:23In the following article our intention is to try to introduce the negative ideas that exist today in Hungary regarding informatics education within the secondary education system. [Zs] As far as we know, these delusions are characteristic of not only Hungary, but we believe that we should look for our own mistakes, that is why we refer to Hungarian examples.
We have examined the informatic knowledge taught in the first 10 years of secondary education, the possible curriculum of the general informatics subject.
To reach our aim, first we have to deviate a bit from our original topic, because without this, it would be more difficult to understand the core subject of the article. In the deviation we will explain what is called informatics, what is called informatics subject. Then we will deal with the main topic and in the summary we will explain what we believe is the aim of general informatics education. -
Cultivating algorithmic thinking: an important issue for both technical and HUMAN sciences
107-116Views:28Algorithmic thinking is a valuable skill that all people should master. In this paper we propose a one-semester, algorithm-oriented computer science course for human science students. According to our experience such an initiative could succeed only if the next recipe is followed: interesting and practical content + exciting didactical methods + minimal programming. More explicitly, we suggest: (1) A special, simple, minimal, pseudo-code like imperative programming language that integrates a graphic library. (2) Interesting, practical and problem-oriented content with philosophical implications. (3) Exciting, human science related didactical methods including art-based, inter-cultural elements. -
A case study of the integration of Algorithm Visualizations in Hungarian programming education
51-66Views:127In this study, I will introduce how Algorithm Visualizations (AV) can help programming education or, in this case, the acquisition of basic programming theorems. I used two di erent methods to test this: in the first round, I examined in a larger group how much the students' ability to solve specific tasks changes after being introduced to a visualization tool, and then, what was their motivation and experience during this process. In the second round, I looked for the components that could be important when choosing a tool with the help of an in-depth interview with a smaller number of individuals. In both cases, I describe the research, experience, and results of the study, and then summarize them at the end.
Subject Classification: 97P10