18,739 research outputs found
Teaching Parallel Programming Using Java
This paper presents an overview of the "Applied Parallel Computing" course
taught to final year Software Engineering undergraduate students in Spring 2014
at NUST, Pakistan. The main objective of the course was to introduce practical
parallel programming tools and techniques for shared and distributed memory
concurrent systems. A unique aspect of the course was that Java was used as the
principle programming language. The course was divided into three sections. The
first section covered parallel programming techniques for shared memory systems
that include multicore and Symmetric Multi-Processor (SMP) systems. In this
section, Java threads was taught as a viable programming API for such systems.
The second section was dedicated to parallel programming tools meant for
distributed memory systems including clusters and network of computers. We used
MPJ Express-a Java MPI library-for conducting programming assignments and lab
work for this section. The third and the final section covered advanced topics
including the MapReduce programming model using Hadoop and the General Purpose
Computing on Graphics Processing Units (GPGPU).Comment: 8 Pages, 6 figures, MPJ Express, MPI Java, Teaching Parallel
Programmin
On the computational performance of advanced optimization methods in mechanical design
Advanced optimization methods are widely applied to mechanical design, mainly for its abilities to solve complex problems that traditional optimization techniques such as gradient-based methods do not present. With its increasing popularity, the number of algorithms found in the literature is vast. In this work three algorithms are implemented, namely Particle Swarm Optimization (PSO), Differential Evolution (DE) and Teaching- Learning-Based Optimization (TLBO). Firstly, the application of these algorithms is analyzed for a composition function benchmark and three mechanical design minimiza- tion problems (the weight of a speed reducer, the volume of a three-bar truss and the area of a square plate with a cut-out hole). Furthermore, as the scope of available algorithms increases, the choice of programming tools to implement them is also vast, and generally made considering subjective criteria or difficulties in using enhancing strategies such as parallel processing. Thereby an analysis of programming tools ap- plied to metaheuristic algorithms is carried out using four programming languages with distinct characteristics: Python, MATLAB, Java and C++. The selected algorithms and applications are coded using each programming language, which are initially compared in a sequential processing implementation. Additionally, in order to analyze potential gains in performance, parallel processing procedures are implemented using features of each programming language. The application of the algorithms to the mechanical design problems demonstrates good results in the achieved solutions. In what concerns to the computational time, sequential and processing results present considerable differ- ences between programming languages while the implementation of parallel processing procedures demonstrates significant benefits for complex problems.publishe
New Method of Measuring TCP Performance of IP Network using Bio-computing
The measurement of performance of Internet Protocol IP network can be done by
Transmission Control Protocol TCP because it guarantees send data from one end
of the connection actually gets to the other end and in the same order it was
send, otherwise an error is reported. There are several methods to measure the
performance of TCP among these methods genetic algorithms, neural network, data
mining etc, all these methods have weakness and can't reach to correct measure
of TCP performance. This paper proposed a new method of measuring TCP
performance for real time IP network using Biocomputing, especially molecular
calculation because it provides wisdom results and it can exploit all
facilities of phylogentic analysis. Applying the new method at real time on
Biological Kurdish Messenger BIOKM model designed to measure the TCP
performance in two types of protocols File Transfer Protocol FTP and Internet
Relay Chat Daemon IRCD. This application gives very close result of TCP
performance comparing with TCP performance which obtains from Little's law
using same model (BIOKM), i.e. the different percentage of utilization (Busy or
traffic industry) and the idle time which are obtained from a new method base
on Bio-computing comparing with Little's law was (nearly) 0.13%.
KEYWORDS Bio-computing, TCP performance, Phylogenetic tree, Hybridized Model
(Normalized), FTP, IRCDComment: 17 Pages,10 Figures,5 Table
Going Stupid with EcoLab
In 2005, Railsback et al. proposed a very simple model ({\em Stupid
Model}) that could be implemented within a couple of hours, and later
extended to demonstrate the use of common ABM platform functionality. They
provided implementations of the model in several agent based modelling
platforms, and compared the platforms for ease of implementation of this simple
model, and performance. In this paper, I implement Railsback et al's Stupid
Model in the EcoLab simulation platform, a C++ based modelling platform,
demonstrating that it is a feasible platform for these sorts of models, and
compare the performance of the implementation with Repast, Mason and Swarm
versions
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
Teaching programming with computational and informational thinking
Computers are the dominant technology of the early 21st century: pretty well all aspects of economic, social and personal life are now unthinkable without them. In turn, computer hardware is controlled by software, that is, codes written in programming languages. Programming, the construction of software, is thus a fundamental activity, in which millions of people are engaged worldwide, and the teaching of programming is long established in international secondary and higher education. Yet, going on 70 years after the first computers were built, there is no well-established pedagogy for teaching programming.
There has certainly been no shortage of approaches. However, these have often been driven by fashion, an enthusiastic amateurism or a wish to follow best industrial practice, which, while appropriate for mature professionals, is poorly suited to novice programmers. Much of the difficulty lies in the very close relationship between problem solving and programming. Once a problem is well characterised it is relatively straightforward to realise a solution in software. However, teaching problem solving is, if anything, less well understood than teaching programming.
Problem solving seems to be a creative, holistic, dialectical, multi-dimensional, iterative process. While there are well established techniques for analysing problems, arbitrary problems cannot be solved by rote, by mechanically applying techniques in some prescribed linear order. Furthermore, historically, approaches to teaching programming have failed to account for this complexity in problem solving, focusing strongly on programming itself and, if at all, only partially and superficially exploring problem solving.
Recently, an integrated approach to problem solving and programming called Computational Thinking (CT) (Wing, 2006) has gained considerable currency. CT has the enormous advantage over prior approaches of strongly emphasising problem solving and of making explicit core techniques. Nonetheless, there is still a tendency to view CT as prescriptive rather than creative, engendering scholastic arguments about the nature and status of CT techniques. Programming at heart is concerned with processing information but many accounts of CT emphasise processing over information rather than seeing then as intimately related.
In this paper, while acknowledging and building on the strengths of CT, I argue that understanding the form and structure of information should be primary in any pedagogy of programming
- …