16,257 research outputs found
Bricklayer: An Authentic Introduction to the Functional Programming Language SML
Functional programming languages are seen by many as instrumental to
effectively utilizing the computational power of multi-core platforms. As a
result, there is growing interest to introduce functional programming and
functional thinking as early as possible within the computer science
curriculum. Bricklayer is an API, written in SML, that provides a set of
abstractions for creating LEGO artifacts which can be viewed using LEGO Digital
Designer. The goal of Bricklayer is to create a problem space (i.e., a set of
LEGO artifacts) that is accessible and engaging to programmers (especially
novice programmers) while providing an authentic introduction to the functional
programming language SML.Comment: In Proceedings TFPIE 2014, arXiv:1412.473
Tools of the Trade: A Survey of Various Agent Based Modeling Platforms
Agent Based Modeling (ABM) toolkits are as diverse as the community of people who use them. With so many toolkits available, the choice of which one is best suited for a project is left to word of mouth, past experiences in using particular toolkits and toolkit publicity. This is especially troublesome for projects that require specialization. Rather than using toolkits that are the most publicized but are designed for general projects, using this paper, one will be able to choose a toolkit that already exists and that may be built especially for one's particular domain and specialized needs. In this paper, we examine the entire continuum of agent based toolkits. We characterize each based on 5 important characteristics users consider when choosing a toolkit, and then we categorize the characteristics into user-friendly taxonomies that aid in rapid indexing and easy reference.Agent Based Modeling, Individual Based Model, Multi Agent Systems
A Theory of Formal Synthesis via Inductive Learning
Formal synthesis is the process of generating a program satisfying a
high-level formal specification. In recent times, effective formal synthesis
methods have been proposed based on the use of inductive learning. We refer to
this class of methods that learn programs from examples as formal inductive
synthesis. In this paper, we present a theoretical framework for formal
inductive synthesis. We discuss how formal inductive synthesis differs from
traditional machine learning. We then describe oracle-guided inductive
synthesis (OGIS), a framework that captures a family of synthesizers that
operate by iteratively querying an oracle. An instance of OGIS that has had
much practical impact is counterexample-guided inductive synthesis (CEGIS). We
present a theoretical characterization of CEGIS for learning any program that
computes a recursive language. In particular, we analyze the relative power of
CEGIS variants where the types of counterexamples generated by the oracle
varies. We also consider the impact of bounded versus unbounded memory
available to the learning algorithm. In the special case where the universe of
candidate programs is finite, we relate the speed of convergence to the notion
of teaching dimension studied in machine learning theory. Altogether, the
results of the paper take a first step towards a theoretical foundation for the
emerging field of formal inductive synthesis
Logic Programming Applications: What Are the Abstractions and Implementations?
This article presents an overview of applications of logic programming,
classifying them based on the abstractions and implementations of logic
languages that support the applications. The three key abstractions are join,
recursion, and constraint. Their essential implementations are for-loops, fixed
points, and backtracking, respectively. The corresponding kinds of applications
are database queries, inductive analysis, and combinatorial search,
respectively. We also discuss language extensions and programming paradigms,
summarize example application problems by application areas, and touch on
example systems that support variants of the abstractions with different
implementations
Student Monks – Teaching Recursion in an IS or CS Programming Course Using the Towers of Hanoi
Educators have been using the Towers of Hanoi problem for many years as an example of a problem that has a very elegant recursive solution. However, the elegance and conciseness of this solution can make it difficult for students to understand the amount of computer time required in the execution of this solution. And, like many recursive computer programs, students often find it difficult to follow a trace of the solution. Research in computer education has shown that active learning exercises achieve positive educational results. In line with this research, an active learning exercise was employed in the classroom to assist students in gaining a better understanding of the recursive solution to the Towers of Hanoi problem. This demonstration can be used in an introductory IS or CS programming class, independent of the language used. The demonstration involves using student volunteers, who, in the demonstration, are referred to as “monks,” a reference to the original problem that had monks moving the golden rings in the Towers of Hanoi. An anonymous student survey revealed that students felt strongly that the demonstration helped them better understand recursion, and that the demonstration was a good use of class time. In addition, an analysis of a small sample of students’ computer programs following the demonstration, suggests that there may be pedagogical benefits to use of the student monk demonstration
Toward Using Games to Teach Fundamental Computer Science Concepts
Video and computer games have become an important area of study in the field of education. Games have been designed to teach mathematics, physics, raise social awareness, teach history and geography, and train soldiers in the military. Recent work has created computer games for teaching computer programming and understanding basic algorithms.
We present an investigation where computer games are used to teach two fundamental computer science concepts: boolean expressions and recursion. The games are intended to teach the concepts and not how to implement them in a programming language.
For this investigation, two computer games were created. One is designed to teach basic boolean expressions and operators and the other to teach fundamental concepts of recursion. We describe the design and implementation of both games.
We evaluate the effectiveness of these games using before and after surveys. The surveys were designed to ascertain basic understanding, attitudes and beliefs regarding the concepts. The boolean game was evaluated with local high school students and students in a college level introductory computer science course. The recursion game was evaluated with students in a college level introductory computer science course.
We present the analysis of the collected survey information for both games. This analysis shows a significant positive change in student attitude towards recursion and modest gains in student learning outcomes for both topics
- …