<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Parallelcoding.com</title>
	<atom:link href="http://www.parallelcoding.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.parallelcoding.com</link>
	<description>Intelligent, Efficient, Parallel, and Sustainable Code</description>
	<lastBuildDate>Mon, 14 May 2012 14:21:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Central Force Optimization - A Bibliography</title>
		<link>http://www.parallelcoding.com/2012/05/14/central-force-optimization-a-bibliography/</link>
		<comments>http://www.parallelcoding.com/2012/05/14/central-force-optimization-a-bibliography/#comments</comments>
		<pubDate>Mon, 14 May 2012 11:16:01 +0000</pubDate>
		<dc:creator>Robert Green</dc:creator>
				<category><![CDATA[Central Force Optimization]]></category>
		<category><![CDATA[Metaheuristics]]></category>

		<guid isPermaLink="false">http://www.parallelcoding.com/?p=927</guid>
		<description><![CDATA[Below is a list of what I believe is a complete listing of all publications related to Central Force Optimization. This can also be downloaded in PDF and bibtex. Feel free to Contact Me with any changes/updates. [1] R. A. &#8230;<p class="read-more"><a href="http://www.parallelcoding.com/2012/05/14/central-force-optimization-a-bibliography/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Below is a list of what I believe is a complete listing of all publications related to Central Force Optimization. This can also be downloaded in <a href="http://www.parallelcoding.com/wp-content/uploads/2012/05/CFO.pdf" title="CFO bibliography in PDF">PDF</a> and <a href="http://www.parallelcoding.com/wp-content/uploads/2012/05/CFO.bib" title="CFO bibtex file">bibtex</a>.</p>
<p>Feel free to <a href="http://www.parallelcoding.com/contact-me/" title="Contact Me">Contact Me</a> with any changes/updates.</p>
<p>[1] R. A. Formato, “Central force optimization: A new metaheuristic with applications in applied electromagnetics,” Progress in Electromagnetics Research, PIER 77, pp. 425–491, 2007.</p>
<p>[2] R. A. Formato, “Central Force Optimization: A New Nature Inspired Computational Framework for Multidimensional Search and Optimization,” in NICSO.<br />
Springer-Verlag, 2007, pp. 221–238.</p>
<p>[3] R. A. Formato, “Central Force Optimization: A New Deterministic Gradient-Like Optimization Metaheuristic,” Journal of the Operations Research Society of India, vol. 46, no. 1, pp. 25–51, 2009.</p>
<p>[4] R. A. Formato, “Are Near Earth Objects the Key to Optimization Theory?” Computing Research Repository, no. arXiv:0912.1394, December 2009.</p>
<p>[5] R. A. Formato, “Central force optimisation: A new gradient-like metaheuristic for multidimensional search and optimisation,” Interational Journal of Bio-Inspired Computation, vol. 1, no. 4, pp. 217–238, 2009.</p>
<p>[6] G. Mohammad and N. Dib, “Synthesis of Antenna Arrays Using Central Force Optimization,” in Mosharaka International Conference on Communications, Computers and Applications, Amman, Jordan, 2009.</p>
<p>[7] G. Qubati, “Central force optimization method and its application to the design of antennas,” Master’s thesis, Jordan University of Science and Technology, 2009.</p>
<p>[8] R. A. Formato, “Improved CFO Algorithm for Antenna Optimization,” Progress in Electromagnetics Research, PIER B, vol. 19, pp. 405–425, 2010.</p>
<p>[9] R. A. Formato, “Comparative Results: Group Search Optimizer and Central Force Optimization,” Computing Research Repository, vol. abs/1002.2798, 2010.</p>
<p>[10] R. A. Formato, “Pseudorandomness in Central Force Optimization,” Computing Research Repository, vol. abs/1001.0317, 2010.</p>
<p>[11] R. A. Formato, “Central Force Optimization Applied to the PBM Suite of Antenna Benchmarks,” Computing Research Repository, vol. abs/1003.0221, 2010.</p>
<p>[12] R. A. Formato, “Parameter-Free Deterministic Global Search with Central Force Optimization,” Computing Research Repository, vol. abs/1003.1039, 2010.</p>
<p>[13] R. A. Formato, “On the Utility of Directional Information for Repositioning Errant Probes in Central Force Optimization,” Computing Research Repository, vol. abs/1005.5490, 2010.</p>
<p>[14] G. M. Qubati and N. I. Dib, “Microstip Patch Antenna Optimization Using Modified Central Force Optimization,” Progress in Electromagnetics Research B, vol. 21, pp. 281–298, 2010.</p>
<p>[15] D. Ding, X. Luo, J. Chen, X. Wang, P. Du, and Y. Guo, “A Convergence Proof and Parameter Analysis of Central Force,” Journal of Convergence Information Technology, vol. 6, no. 10, pp. 16–23, 2011.</p>
<p>[16] R. A. Formato, “Central Force Optimization with variable initial probes and adaptive decision space,” Applied Mathematics and Computation, vol. 217, no. 21, pp. 8866–8872, 2011.</p>
<p>[17] R. Green, L. Wang, M. Alam, and R. Formato, “Central Force Optimization on a GPU: A case study in high performance metaheuristics using multiple topologies,” in IEEE Congress on Evolutionary Computation, New Orleans, Los Angeles, June 2011, pp. 550–557.</p>
<p>[18] K. R. Mahmoud, “Central Force Optimization: Nelder-Mead Hybrid Algorithm for Rectangular Microstrip Antenna Design,” Electromagnetics, vol. 31, no. 8, pp. 578–592, 2011.</p>
<p>[19] R. Green, L. Wang, and M. Alam, “Training neural networks using Central Force Optimization and Particle Swarm Optimization: Insights and comparisons,” Expert Systems with Applications, vol. 39, pp. 555–563, January 2012.</p>
<p>[20] R. Green, L. Wang, M. Alam, and R. A. Formato, “Central force optimization on a GPU: A case study in high performance metaheuristics,” Journal of Supercomputing, pp. 1–21, 2012, article in press.</p>
<p>[21] A. Haghighi and H. M.Ramos, “Detection of Leakage Freshwater and Friction Factor Calibration in Drinking Networks Using Central Force Optimization,” Water Resources Management, vol. 26, no. 8, pp. 2347–2363, March 2012. [Online]. Available: http://rd.springer.com/article/10.1007/s11269-012-0020-6</p>
<p>[22] N. Dib, A. Sharaqa, and R. A. Formato, “Variable Z0 applied to Biogeography Based Optimized Multi-Stub Matching Network and to a Central Force Optimized Meander Monopole,” April 2012, submitted for Publication.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.parallelcoding.com/2012/05/14/central-force-optimization-a-bibliography/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>blockUI and jQuery Tabs UI</title>
		<link>http://www.parallelcoding.com/2012/05/11/blockui-and-jquery-tabs-ui/</link>
		<comments>http://www.parallelcoding.com/2012/05/11/blockui-and-jquery-tabs-ui/#comments</comments>
		<pubDate>Fri, 11 May 2012 14:06:19 +0000</pubDate>
		<dc:creator>Robert Green</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[javscript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://www.parallelcoding.com/?p=919</guid>
		<description><![CDATA[If you want to use blockUI everytime some Ajax content is loaded into a tab, use the following code:]]></description>
			<content:encoded><![CDATA[<p>If you want to use blockUI everytime some Ajax content is loaded into a tab, use the following code:</p>
<pre class="brush: jscript; title: ; notranslate">
$(function(){
    var loadingMessage = &quot;Message/Image here&quot;;
    $('#tabs').tabs({
        show: function(e, u){
            $.blockUI({message: loadingMessage});
        },
        load: function(e, u){
            $.unblockUI();
        }
    });
});
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parallelcoding.com/2012/05/11/blockui-and-jquery-tabs-ui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boost.MPI on Windows 7 with Open MPI</title>
		<link>http://www.parallelcoding.com/2012/04/12/boost-mpi-on-windows-7-with-open-mpi/</link>
		<comments>http://www.parallelcoding.com/2012/04/12/boost-mpi-on-windows-7-with-open-mpi/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 15:05:40 +0000</pubDate>
		<dc:creator>Robert Green</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Boost]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[OpenMPI]]></category>

		<guid isPermaLink="false">http://www.parallelcoding.com/?p=888</guid>
		<description><![CDATA[I need to install the Boost.MPI libraries on Windows 7 for development purposes. In order to get this to work, do the following: Install the binary version of OpenMPI from here; Install the binary version of OpenMPI; Download the latest version &#8230;<p class="read-more"><a href="http://www.parallelcoding.com/2012/04/12/boost-mpi-on-windows-7-with-open-mpi/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>I need to install the Boost.MPI libraries on Windows 7 for development purposes. In order to get this to work, do the following:</p>
<ol>
<li>Install the binary version of OpenMPI from <a href="http://www.open-mpi.org/software/ompi/v1.5/ms-windows.php">here</a>;</li>
<li>Install the binary version of OpenMPI;</li>
<li>Download the latest version of Boost, currently 1.49.0 from <a title="Boost 1.49.0" href="http://sourceforge.net/projects/boost/files/boost/1.49.0/">here</a>;</li>
<li>Extract the boost libraries;</li>
<li>Open up the "tools\build\v2" directory in the boost source;</li>
<li>Edit the user-config.jam and add the following line anywhere in the file:</li>
<pre class="brush: bash; title: ; notranslate">
            using mpi : &quot;C:/Program Files (x86)/OpenMPI_v1.5.5-win32/bin/mpicc.exe&quot;
                      : &lt;find-shared-library&gt;lammpio &lt;find-shared-library&gt;lammpi++
                        &lt;find-shared-library&gt;mpi &lt;find-shared-library&gt;lam
                        &lt;find-shared-library&gt;dl ;
        </pre>
<li>Made sure the GCC binaries were in my path;</li>
<li>Open up a command prompt (probably a Visual Studio command prompt);</li>
<li>I used the following commands to build the libraries:</li>
<pre class="brush: bash; title: ; notranslate">
        bootstrap.bat
        b2.exe --build-type=complete --toolset=gcc
        </pre>
</ol>
<p>Now I'm sitting here watching the library build. I'll post updates as the come.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.parallelcoding.com/2012/04/12/boost-mpi-on-windows-7-with-open-mpi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cuSVM in Visual Studio 2010 with CUDA 4.0</title>
		<link>http://www.parallelcoding.com/2012/02/09/cusvm-in-visual-studio-2010-with-cuda-4-0/</link>
		<comments>http://www.parallelcoding.com/2012/02/09/cusvm-in-visual-studio-2010-with-cuda-4-0/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 15:20:56 +0000</pubDate>
		<dc:creator>Robert Green</dc:creator>
				<category><![CDATA[CUDA]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Support Vector Machines]]></category>

		<guid isPermaLink="false">http://www.parallelcoding.com/?p=853</guid>
		<description><![CDATA[cuSVM is a CUDA implementation of support vector classification and regression. Recently, I had some questions on a post regarding compiling cuSVM using Visual Studio. Out of curiosity, I downloaded cuSVM and went to work myself. Now, if you just download &#8230;<p class="read-more"><a href="http://www.parallelcoding.com/2012/02/09/cusvm-in-visual-studio-2010-with-cuda-4-0/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><a title="cuSVM Website" href="http://patternsonascreen.net/cuSVM.html" target="_blank">cuSVM</a> is a CUDA implementation of support vector classification and regression. Recently, I had some <a title="Installing the MATLAB plug-in for CUDA in Ubuntu 10.04" href="http://www.parallelcoding.com/2010/10/13/installing-the-matlab-plug-in-for-cuda-in-ubuntu-10-04/">questions</a> on a post regarding compiling cuSVM using Visual Studio. Out of curiosity, I downloaded cuSVM and went to work myself.</p>
<p>Now, if you just download cuSVM and open up the Visual Studio solution, you will be a bit dissapointed as it does not compile and is not contained in a CUDA project. In order to correct this, I took the steps listed below. While I encourage you to read the steps and complete this process yourself, you may also download the files used in this project by clicking <a href="http://www.parallelcoding.com/wp-content/uploads/2012/02/cuSVM.zip">here</a>.</p>
<ol>
<li>Create a new CUDA 4.0 Project called "cuSVMPredict"</li>
<li>Create a new CUDA 4.0 Project called "cuSVMTrain"</li>
<li>Add the appropriate files from the original cuSVM project. This is done by copying each file into the correct location on the file system, right-clicking on the project and selecting "Add -&gt; Existing Item...". The files needed include:
<ul>
<li>For cuSVMPredict: cuSVMPredict.cpp, cuSVMPredictKernel.cu, PredictModule.def</li>
<li>For cuSVMTrain: cuSVMTrain.cpp, cuSVMSolver.cu, TrainModule.def</li>
<li>Copy the "inc" directory into the root of the solution</li>
</ul>
</li>
<li>Open up the file "cuSVMSolver.cu" in the "cuSVMTrain" project</li>
<li>Add "using namespace std;" on line 17, after the final include statement</li>
<li>For each project, right-click on the project and select "Properties"</li>
<li>Make the following changes:
<ol>
<li>Under "Configuration Properties -&gt; General":
<ul>
<li>Change "Target Extension" to ".mexw32"</li>
<li>Change "Configuration Type" to "Dynamic Library (.dll)"</li>
</ul>
</li>
<li>Under "Configuration Properties -&gt; C/C++ -&gt; General -&gt; Additional Include Directories":
<ul>
<li>Add your Matlab include directory (MATLABDIR\extern\include)</li>
<li>Add "..\inc"</li>
<li>Add the CUDA GPU Computing SDK include directory. On Windows 7 this is "C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\inc"</li>
</ul>
</li>
<li>Under "Configuration Properties -&gt; CUDA C/C++ -&gt; Common -&gt; Additional Include Directories":
<ul>
<li>Add your Matlab include directory (MATLABDIR\extern\include)</li>
<li>Add the CUDA GPU Computing SDK include directory. On Windows 7 this is "C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\inc"</li>
</ul>
</li>
<li>Under "Configuration Properties -&gt; Linker -&gt; General -&gt; Additional Library Directories":
<ul>
<li>Add your Matlab include directory (MATLABDIR\extern\lib\win32\microsoft)</li>
<li>Add the CUDA GPU Computing SDK bin directory. On Windows 7 this is "C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\bin"
</ul>
</li>
<li>Under "Configuration Properties -&gt; Linker -&gt; Input -&gt; Additional Dependencies":
<ul>
<li>Add "cuda.lib"</li>
<li>Add "cublas.lib"</li>
<li>Add "libmex.lib"</li>
<li>Add "libmat.lib"</li>
<li>Add "libmx.lib"</li>
</ul>
</li>
</ol>
</li>
<li>Right-click on the solution and select "Build Solution"</li>
</ol>
<p>Having completed these steps, you should be good to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.parallelcoding.com/2012/02/09/cusvm-in-visual-studio-2010-with-cuda-4-0/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Calling CUDA Kernels from C++</title>
		<link>http://www.parallelcoding.com/2012/02/02/calling-cuda-kernels-from-c/</link>
		<comments>http://www.parallelcoding.com/2012/02/02/calling-cuda-kernels-from-c/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 15:17:23 +0000</pubDate>
		<dc:creator>Robert Green</dc:creator>
				<category><![CDATA[CUDA]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[GPU]]></category>

		<guid isPermaLink="false">http://www.parallelcoding.com/?p=841</guid>
		<description><![CDATA[I had a need to call a CUDA kernel from inside a C++ class. When I went looking through the NVIDIA examples and the wealth of information on the internet, I could not find a clear solution to my problem. &#8230;<p class="read-more"><a href="http://www.parallelcoding.com/2012/02/02/calling-cuda-kernels-from-c/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>I had a need to call a CUDA kernel from inside a C++ class. When I went looking through the NVIDIA examples and the wealth of information on the internet, I could not find a clear solution to my problem. So, let me state plainly how to accomplish this:</p>
<ol>
<li>Create a ".cu" file for your kernels;</li>
<li>For each kernel you would like to call from C++, create a wrapper that can be called from inside your class;</li>
<li>Inside this wrapper, call your kernel function;</li>
<li>Include the prototype for your wrapper in the header file of your class, but not inside the class definition.
</ol>
<p>An example of the ".cu" file and the class header are shown below. One thing you apparently do not need to do (particularly in Visual Studio 2010) is include the ".cu" file in your class. As long as it is part of your project, everything should work just fine.</p>
<pre class="brush: cpp; title: ; notranslate">
#ifndef _PROJECT_KERNELS
#define _PROJECT_KERNELS

__global__ void kernel(double Param1, double Param2){
    // Do Kernel Stuff here
}
extern &quot;C&quot; void functionName(double Param1, double Param2){

    kernel&lt;&lt;&lt;Nb, Nt&gt;&gt;kernel(Param1, Param2);
}
#endif
</pre>
<pre class="brush: cpp; title: ; notranslate">
#ifndef MYCLASS_H_
#define MYCLASS_H_

#include &lt;cuda.h&gt;
#include &quot;cuda_runtime.h&quot;

extern &quot;C&quot; void functionName(double Param1, double Param2);

class myClass{
    myClass();
}
#endif
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parallelcoding.com/2012/02/02/calling-cuda-kernels-from-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coding Guidelines: Finding the Art in the Science - Part 2</title>
		<link>http://www.parallelcoding.com/2011/12/29/coding-guidelines-finding-the-art-in-the-science-part-2/</link>
		<comments>http://www.parallelcoding.com/2011/12/29/coding-guidelines-finding-the-art-in-the-science-part-2/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 17:08:57 +0000</pubDate>
		<dc:creator>Robert Green</dc:creator>
				<category><![CDATA[Code Readability]]></category>
		<category><![CDATA[Coding Guidlines: Finding the Art in the Science]]></category>

		<guid isPermaLink="false">http://www.parallelcoding.com/?p=765</guid>
		<description><![CDATA[After writing Part 1 of this post, I received a very awesome Christmas gift - "The Pragmatic Programmer: From Journeyman to Master" by Andrew Hunt &#38; Dave Thomas. While I've only dug into the first few chapters of this book, I like &#8230;<p class="read-more"><a href="http://www.parallelcoding.com/2011/12/29/coding-guidelines-finding-the-art-in-the-science-part-2/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>After writing Part 1 of this post, I received a very awesome Christmas gift - "<a href="http://pragprog.com/the-pragmatic-programmer">The Pragmatic Programmer: From Journeyman to Maste</a>r" by Andrew Hunt &amp; Dave Thomas. While I've only dug into the first few chapters of this book, I like the majority of what is said. While there was one section of Chapter 1 that really struck a chord with me (section 6 where the authors speak about communication of various types), reading the book spurred me to take a look around <a href="http://pragprog.com">pragprog.com</a>, something that I haven't done for quite a while.</p>
<p>While at pragprog.com, I stumbled across their magazine, PragPub. In the September 2009 magazine there is a wonderful article titled, "<a href="http://pragprog.com/magazines/2009-09/beauty-in-code">Beauty in Code.</a>" The entire article deals with understanding the function and meaning of these unique snippets of code. While this is a fun challenge (I may use this in the classroom someday), it makes a solid point regarding development that is very well stated in the article:</p>
<blockquote><p>We translate user stories into source code. How much of it survives the operation? More importantly, how much of it gets lost in the translation?</p></blockquote>
<p>The issue being dealt with here is clarity. Clarity in code is vital and adds directly to the beauty of what is being developed in both form in function. While I could rant on this topic for quite some time, I will simply let this simmer for a while.</p>
<p>I leave you with two excellent quotes. The first is from the article I've discussed and the other is from <a href="http://thinkrelevance.com/blog/2008/09/10/java-next-4-immutability.html">Java.next #4: Immutability</a>.</p>
<blockquote><p>If you do it right, the beauty you see is multifaceted. If the code (as it runs) is as beautiful as the code (as it is written), then you are singing it just right.</p></blockquote>
<blockquote><p>Languages are not about what they make possible, but about what they make beautiful.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.parallelcoding.com/2011/12/29/coding-guidelines-finding-the-art-in-the-science-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coding Guidelines: Finding the Art in the Science - Part 1</title>
		<link>http://www.parallelcoding.com/2011/12/27/coding-guidelines-finding-the-art-in-the-science/</link>
		<comments>http://www.parallelcoding.com/2011/12/27/coding-guidelines-finding-the-art-in-the-science/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 12:45:18 +0000</pubDate>
		<dc:creator>Robert Green</dc:creator>
				<category><![CDATA[Code Readability]]></category>
		<category><![CDATA[Coding Guidlines: Finding the Art in the Science]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.parallelcoding.com/?p=745</guid>
		<description><![CDATA[Recently, I wrote a post about an article titled, "Software Engineering for Scientists". One of the strong points made in that article was that There’s 60 years of existing scientific knowledge buried in code and it’s extremely difficult to extract. As scientists write new code, &#8230;<p class="read-more"><a href="http://www.parallelcoding.com/2011/12/27/coding-guidelines-finding-the-art-in-the-science/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Recently, I wrote a <a href="http://www.parallelcoding.com/2011/09/01/thoughts-on-software-engineering-for-scientists/">post</a> about an article titled, "<a title="Software Engineering for Scientists" href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?isnumber=5999774&amp;arnumber=5999781">Software Engineering for Scientists</a>". One of the strong points made in that article was that</p>
<blockquote><p>There’s 60 years of existing scientific knowledge buried in code and it’s <strong><em>extremely difficult to extract</em></strong>. As scientists write new code, they need to <em><strong>clearly ex­press intent in a way that doesn’t affect code performance</strong></em>.</p></blockquote>
<p>This reinforces the idea that there is a huge issue concerning the writing of clear, concise, and understandable code in industry and academics. In light of this idea, I've recently published an article with Henry Ledgard titled "Coding Guidelines: Finding the Art in the Science" that can be found <a title="ACM - Coding Guidelines: Finding the Art in the Science" href="http://cacm.acm.org/magazines/2011/12/142527-coding-guidelines-finding-the-art-in-the-science/fulltext" target="_blank">here</a> and <a title="ACM Queue - Coding Guidelines: Finding the Art in the Science" href="http://queue.acm.org/detail.cfm?id=2063168" target="_blank">here</a>. The article itself is focused on the idea that there is a role that aesthetics plays when writing code. This is perhaps summed up best by the first few lines of the article:</p>
<blockquote><p>Computer science is both a science and an art. Its scientific aspects range from the theory of computation and algorithmic studies to code design and program architecture. Yet, when it comes time for implementation, there is a combination of artistic flare, nuanced style, and technical prowess that separates good code from great code.</p></blockquote>
<p>This article, as opposed to those that layout strict coding guidelines to increase performance and maintainability, is focused on developing code that is easier to read by focusing on the aesthetic appeal of the code. And, while it has not been studied yet, code that appeals to developers in this fashion should lead to 1) Easier maintenance, 2) Increased productivity, and 3) A shorter period of acclimation when working with an unfamiliar code base.</p>
<p>In the paper, we present 6 distinct guidelines that should be followed as much is possible:</p>
<ol>
<li>Consider a program as a table;</li>
<li>Let simple English be your guide;</li>
<li>Rely on context to simplify code;</li>
<li>Use white space to show structure;</li>
<li>Let decision structures speak for themselves; and</li>
<li>Focus on the code, not the comments.</li>
</ol>
<p>Some of these ideas are controversial and some people will see a few things that we have presented as impractical. That is why we have presented our ideas as "guidelines", not "standards". This is a flexible set of ideas that can be molded to fit individuals and corporations alike.</p>
<p>Beyond this, the use of aesthetics in coding suggests that there are some general principles that will aid in making code appealing to nearly everyone, though there will be some nuances between different developers.</p>
<p>One thing I would like to mention is that some folks have pointed out some errors in the Figures (particularly Figure 1). I would encourage readers not to lose sight of the "forest for the trees" in this situation as requests have been made to fix these minor errors. This is particularly true as the guidelines are intended to be IDE, language, and syntax neutral. Thus, the visual appeal (and the point) of the examples should be apparent regardless.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.parallelcoding.com/2011/12/27/coding-guidelines-finding-the-art-in-the-science/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on &quot;Software Engineering for Scientists&quot;</title>
		<link>http://www.parallelcoding.com/2011/09/01/thoughts-on-software-engineering-for-scientists/</link>
		<comments>http://www.parallelcoding.com/2011/09/01/thoughts-on-software-engineering-for-scientists/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 21:22:29 +0000</pubDate>
		<dc:creator>Robert Green</dc:creator>
				<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://www.parallelcoding.com/?p=742</guid>
		<description><![CDATA[I just read the article "Software Engineering for Scientists" and I think it makes some incredibly excellent points regarding software development in the scientific community. There are two particular issues to point out. First, the clarity and the ability of &#8230;<p class="read-more"><a href="http://www.parallelcoding.com/2011/09/01/thoughts-on-software-engineering-for-scientists/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>I just read the article "<a href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?isnumber=5999774&amp;arnumber=5999781">Software Engineering for Scientists</a>" and I think it makes some incredibly excellent points regarding software development in the scientific community. There are two particular issues to point out.</p>
<p>First, the clarity and the ability of code to communicate intent clearly are very important. If I could only find a way to articulate how important clarity and communication are for code stability, I would, but I find that anything I say does not express this clearly enough. So, from the article:</p>
<blockquote><p>"There’s 60 years of existing scientific knowledge buried in code and it’s <strong><em>extremely difficult to extract</em></strong>. As scientists write new code, they need to <em><strong>clearly ex­press intent in a way that doesn’t affect code performance</strong></em>. Code structures are one way to help capture intent and knowledge, yet they don’t impede performance."</p></blockquote>
<p>Second, results of what you code must be verified somehow. Again, from the article:</p>
<blockquote><p>"One panelist pointed out that testing results in “reviewing the output instead of reviewing the code.”Everyone agrees that code review is a good idea. However, it’s difficult to incorporate code review into work practices without the large overhead it commonly entails."</p></blockquote>
<p>So, if you are writing code, please consider the clarity and intent of what you are writing. This is important and will save many developers, scientists, and others hours of wasted time. Also, if you write scientific code, please share it with the community. Critiquing code, verifying results, and extending algorithms would be much easier if there was a real atmosphere of cooperation out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.parallelcoding.com/2011/09/01/thoughts-on-software-engineering-for-scientists/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Particle Swarm Optimization (PSO) in Matlab</title>
		<link>http://www.parallelcoding.com/2011/04/25/particle-swarm-optimization-pso-in-matlab/</link>
		<comments>http://www.parallelcoding.com/2011/04/25/particle-swarm-optimization-pso-in-matlab/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 14:58:54 +0000</pubDate>
		<dc:creator>Robert Green</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Metaheuristics]]></category>
		<category><![CDATA[Octave]]></category>
		<category><![CDATA[Particle Swarm Optimization]]></category>

		<guid isPermaLink="false">http://www.parallelcoding.com/?p=728</guid>
		<description><![CDATA[Here is a very simple version of PSO in Matlab. PSO is a very popular, population based metaheuristic algorithm that mimics swarming behavior and swarm intelligence in order to solve optimization problems. The code below is intended to get you &#8230;<p class="read-more"><a href="http://www.parallelcoding.com/2011/04/25/particle-swarm-optimization-pso-in-matlab/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Here is a very simple version of PSO in Matlab. PSO is a very popular, population based metaheuristic algorithm that mimics swarming behavior and swarm intelligence in order to solve optimization problems.</p>
<p>The code below is intended to get you started working with PSO in Matlab or Octave. Best efforts were made to keep the code clean and easy to understand. Feel free to play with it and <a title="Contact Me" href="http://www.parallelcoding.com/contact-me/">contact</a> me with any questions.</p>
<p><a href="http://www.parallelcoding.com/wp-content/uploads/PSO/PSO.m">Click Here to Download PSO.m</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.parallelcoding.com/2011/04/25/particle-swarm-optimization-pso-in-matlab/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Genetic Algorithms on GPU using CUDA</title>
		<link>http://www.parallelcoding.com/2011/04/13/genetic-algorithms-on-gpu-using-cuda/</link>
		<comments>http://www.parallelcoding.com/2011/04/13/genetic-algorithms-on-gpu-using-cuda/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 21:15:14 +0000</pubDate>
		<dc:creator>Robert Green</dc:creator>
				<category><![CDATA[CUDA]]></category>
		<category><![CDATA[Genetic Algorithms]]></category>

		<guid isPermaLink="false">http://www.parallelcoding.com/?p=716</guid>
		<description><![CDATA[Some references for GA on GPU. If you know of any further resources, please contact me. Downloads: PDF &#124; Bibtex [1] Q. Yu, C. Chen, and Z. Pan, “Parallel genetic algorithms on programmable graphics hardware,” in Lecture Notes in Computer &#8230;<p class="read-more"><a href="http://www.parallelcoding.com/2011/04/13/genetic-algorithms-on-gpu-using-cuda/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Some references for GA on GPU. If you know of any further resources, please contact me.</p>
<p>Downloads: <a href="ttp://www.parallelcoding.com/wp-content/uploads/2011/04/GA_On_GPU.pdf">PDF</a> | <a href="http://www.parallelcoding.com/wp-content/uploads/2011/04/GA_On_GPU.bib">Bibtex</a> <br/><br/></p>
<p>[1] Q. Yu, C. Chen, and Z. Pan, “Parallel genetic algorithms on programmable graphics hardware,” in Lecture Notes in Computer Science<br />
3612. Springer, 2005, p. 1051.<br/><br />
[2] P. Pospichal and J. Jaros, “GPU-based Acceleratino of the Genetic Algorithm,” in Proceedings of GECCO 2009, 2009.<br/><br />
[3] A. Munawar, M. Wahib, M. Munetomo, and K. Akama, “Hybrid of genetic algorithm and local search to solve max-sat problem using NVIDIA CUDA framework,” Genetic Programming and Evolvable Machines, vol. 10, pp. 391–415, 2009.<br/><br />
[4] S. Debattistic, N. Marlat, L. Mussi, and S. Cagnoni, “Implementatino of a Simple Genetic Algorithm within the CUDA Architecture,” in Proceedings of GECCO 2009, 2009.<br/><br />
[5] S. Zhang and Z. He, “Implementation of parallel genetic algorithm based on cuda,” in Advances in Computation and Intelligence, ser. Lecture Notes in Computer Science, Z. Cai, Z. Li, Z. Kang, and Y. Liu, Eds. Springer Berlin / Heidelberg, 2009, vol. 5821, pp. 24–30.<br/><br />
[6] S. Tsutsui and N. Fujimoto, “Solving quadratic assignment problems by genetic algorithms with gpu computation: a case study,” in Proceedings of the 11th Annual Conference Companion on Genetic and Evolutionary Computation Conference: Late Breaking Papers,  ser. GECCO ’09. New York, NY, USA: ACM, 2009, pp. 2523–2530.<br/><br />
[7] P. Vidal and E. Alba, “A multi-gpu implementation of a cellular genetic algorithm,” in 2010 IEEE Congress on Evolutionary Computation (CEC), July 2010, pp. 1–7.<br/><br />
[8] ——, “Cellular genetic algorithm on graphic processing units,” in Nature Inspired Cooperative Strategies for Optimization (NICSO 2010), ser. Studies in Computational Intelligence, J. Gonzlez, D. Pelta, C. Cruz, G. Terrazas, and N. Krasnogor, Eds. Springer Berlin/Heidelberg, 2010, vol. 284, pp. 223–232. <br/><br />
[9] R. Arora, R. Tulshyan, and K. Deb, “Parallelization of binary and real-coded genetic algorithms on GPU using CUDA,” in IEEE Congress on Evolutionary Computation, 2010, pp. 1–8. <br/><br />
[10] N. Fujimoto and S. Tsutsui, “A highly-parallel tsp solver for a gpu computing platform,” in Proceedings of the 7th international conference on Numerical methods and applications, ser. NMA’10. Berlin, Heidelberg: Springer-Verlag, 2011, pp. 264–271.<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.parallelcoding.com/2011/04/13/genetic-algorithms-on-gpu-using-cuda/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

