The rapid development of information technology has imposed a high rate of change and reconceptualization in the design of computer science (CS) courses in order to expand access, provide flexibility in the learning e...
详细信息
ISBN:
(纸本)9781509054671
The rapid development of information technology has imposed a high rate of change and reconceptualization in the design of computer science (CS) courses in order to expand access, provide flexibility in the learning environments, and meet the expanding needs of the ICT industry for qualified graduates. In such environment programming skills have become a core competence for computer science and engineering students. The issue of choosing and/or developing the most effective approach to teaching computer-programming languages has risen to the greatest importance. This paper presents a study on teaching functional programming using different teaching approaches combining different modes of delivering learning material and different assessment and feedback types. The analysis is done on data for a span of three years of teaching the Logical and functional programming (LFP) course and Artificial Intelligence (AI) course, both of which include functional programming during a 7 week, 4 hours per week, long period. We analyse what is the effect of different teaching approaches, but also what is the success of students taking both courses and which order of taking the exams improves the student results. Our results show that although moving toward online oriented teaching with high levels of automation is a necessity imposed by the rise in student numbers, we still need a dedicated face-to-face time and appropriate human feedback in solving programming problems. Additionally, the results imply that some reorganization in the Computer Science and Engineering Undergraduate Curricula is needed in order to meet student needs and preferences.
Branch-and-cut optimization solvers typically apply generic algorithms, e.g., cutting planes or primal heuristics, to expedite performance for many mathematical optimization problems. But solver software receives an i...
详细信息
Branch-and-cut optimization solvers typically apply generic algorithms, e.g., cutting planes or primal heuristics, to expedite performance for many mathematical optimization problems. But solver software receives an input optimization problem as vectors of equations and constraints containing no structural information. This article proposes automatically detecting named special structure using the pattern matching features of functional programming. Specifically, we deduce the industrially-relevant nonconvex nonlinear Pooling Problem within a mixed-integer nonlinear optimization problem and show that we can uncover pooling structure in optimization problems which are not pooling problems. Previous work has shown that preprocessing heuristics can find network structures;we show that we can additionally detect nonlinear pooling patterns. Finding named structures allows us to apply, to generic optimization problems, cutting planes or primal heuristics developed for the named structure. To demonstrate the recognition algorithm, we use the recognized structure to apply primal heuristics to a test set of standard pooling problems. (C) 2016 The Authors AIChE Journal published by Wiley Periodicals, Inc. on behalf of American Institute of Chemical Engineers
In this paper we present a library of parallel skeletons to deal with swarm intelligence metaheuristics. The library is implemented using the parallel functional language Eden, an extension of the sequential functiona...
详细信息
When programming with sublinear space constraints one often needs to use special implementation techniques even for simple tasks, such as function composition. In this paper, we study how such implementation technique...
详细信息
When programming with sublinear space constraints one often needs to use special implementation techniques even for simple tasks, such as function composition. In this paper, we study how such implementation techniques can be supported in a functional programming language. Our approach is based on modelling computation by interaction using the Int construction of Joyal, Street & Verity. We apply this construction to a term model of a first-order programming language and use the resulting structure to derive the functional programming language INTML. INTML can be understood as a programming language simplification of Stratified Bounded Affine Logic. We formulate INTML by means of a type system inspired by Baillot & Terui's Dual Light Affine Logic. We show that it captures the complexity classes FLOGSPACE and NFLOGSPACE. We illustrate its expressiveness by showing how typical graph algorithms, such a test for acyclicity in undirected graphs, can be represented. (C) 2016 Elsevier Inc. All rights reserved.
Since decades, especially in CAD and CG, to solve various kinds of problems and/or to develop automatic systems, not only geometric modeling techniques but also combinatorial searches of geometric elements such as lin...
详细信息
The rising number of Massive Open Online Courses (MOOCs) enable people to advance their knowledge and competencies in a wide range of fields. Learning though is only the first step, the transfer of the taught concepts...
详细信息
ISBN:
(纸本)9781450337267
The rising number of Massive Open Online Courses (MOOCs) enable people to advance their knowledge and competencies in a wide range of fields. Learning though is only the first step, the transfer of the taught concepts into practice is equally important and often neglected in the investigation of MOOCs. In this paper, we consider the specific case of FP101x (a functional programming MOOC on edX) and the extent to which learners alter their programming behaviour after having taken the course. We are able to link about one third of all FP101x learners to GitHub, the most popular social coding platform to date and contribute a first exploratory analysis of learner behaviour beyond the MOOC platform. A detailed longitudinal analysis of GitHub log traces reveals that (i) more than 8% of engaged learners transfer, and that (ii) most existing transfer learning findings from the classroom setting are indeed applicable in the MOOC setting as well.
The main challenge faced by automatic parallelization tools in functional languages is the fact that parallelism is often hidden under the syntax of complex recursive functions. In this paper, we propose an algebraic ...
详细信息
ISBN:
(数字)9783319452791
ISBN:
(纸本)9783319452791;9783319452784
The main challenge faced by automatic parallelization tools in functional languages is the fact that parallelism is often hidden under the syntax of complex recursive functions. In this paper, we propose an algebraic framework for parallelizing - automatically - two special classes of recursive functions. We show that these classes are comprehensive enough to include several well-known instances. We have used our ideas to implement a source-to-source compiler in Python to parallelize Haskell code. We have applied this prototype onto six different recursive functions, achieving, on a 4-core machine, speedups of up to 2.7x.
We present the approach underlying a course on Domain-Specific Languages of Mathematics [16], currently being developed at Chalmers in response to difficulties faced by third-year students in learning and applying cla...
详细信息
We present the approach underlying a course on Domain-Specific Languages of Mathematics [16], currently being developed at Chalmers in response to difficulties faced by third-year students in learning and applying classical mathematics (mainly real and complex analysis). The main idea is to encourage the students to approach mathematical domains from a functional programming perspective: to identify the main functions and types involved and, when necessary, to introduce new abstractions;to give calculational proofs;to pay attention to the syntax of the mathematical expressions;and, finally, to organise the resulting functions and types in domain-specific languages.
We present an interdisciplinary effort in the field of global environmental change, related to the understanding of the concept of 'vulnerability'. We have used functional programming to capture the generic as...
详细信息
We present an interdisciplinary effort in the field of global environmental change, related to the understanding of the concept of 'vulnerability'. We have used functional programming to capture the generic aspects of the myriad of definitions of vulnerability, and have used the resulting formalization to learn something new about vulnerability and to write some better software for vulnerability assessment. In the process, we have also found out something about formalization in general, about the advantages and disadvantages of dependent types, and about the role of computing science in the larger intellectual landscape.
Traditional higher-order functional programming is validated by how its logical conclusion in the shape of a "Totally functional" style is consistent with and indeed determined by some fundamental principles...
详细信息
ISBN:
(纸本)9783319563909;9783319563893
Traditional higher-order functional programming is validated by how its logical conclusion in the shape of a "Totally functional" style is consistent with and indeed determined by some fundamental principles of Software Engineering. The key to Totally functional programming is the notion of "zoetic" representations of data which embody the behaviours that we hypothesise to underlie all conventional symbolic datatypes. These representations minimise the interpretation of symbolic data at each use, and thus embody the principle of reuse. Further, we develop a scheme for formal synthesis of generator functions for zoetic data which entirely avoid the need for a separate interpretation stage. This avoidance allows us to achieve a clear separation of concerns between the creation of zoetic data objects on the one hand and their use in various applications on the other. Zoetic data are thus validated as the key enablers of the fulfilment of functional programming in its " Totally functional" manifestation, firmly grounded in the language design consequences of software engineering principles.
暂无评论