<?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>Programming Systems Laboratory</title>
	<atom:link href="http://www.psl.cs.columbia.edu/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.psl.cs.columbia.edu</link>
	<description></description>
	<lastBuildDate>Tue, 28 May 2013 15:20:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Chronicler: Lightweight Recording to Reproduce Field Failures</title>
		<link>http://www.psl.cs.columbia.edu/1271/icse-chronicler-talk/</link>
		<comments>http://www.psl.cs.columbia.edu/1271/icse-chronicler-talk/#comments</comments>
		<pubDate>Tue, 28 May 2013 15:20:23 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1271</guid>
		<description><![CDATA[Presented at the International Conference on Software Engineering on May 23, 2013 in San Francisco, CA]]></description>
				<content:encoded><![CDATA[<p>Presented at the International Conference on Software Engineering on May 23, 2013 in San Francisco, CA</p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1271/icse-chronicler-talk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Large-Scale, Longitudinal Study of User Profiles in World of Warcraft</title>
		<link>http://www.psl.cs.columbia.edu/1267/a-large-scale-longitudinal-study-of-user-profiles-in-world-of-warcraft-2/</link>
		<comments>http://www.psl.cs.columbia.edu/1267/a-large-scale-longitudinal-study-of-user-profiles-in-world-of-warcraft-2/#comments</comments>
		<pubDate>Tue, 14 May 2013 16:56:01 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1267</guid>
		<description><![CDATA[Presented at The 5th International Workshop on Web Intelligence and Communities, co-located with The 22nd International World Wide Web Conference (WWW &#8217;13), in Rio de Janneiro, Brazil. May 14, 2013.]]></description>
				<content:encoded><![CDATA[<p>Presented at T<em>he 5th International Workshop on Web Intelligence and Communities</em>, co-located with <em>The 22nd International World Wide Web Conference</em> (WWW &#8217;13), in Rio de Janneiro, Brazil. May 14, 2013.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1267/a-large-scale-longitudinal-study-of-user-profiles-in-world-of-warcraft-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chronicler: Lightweight Recording to Reproduce Field Failures</title>
		<link>http://www.psl.cs.columbia.edu/1260/a-large-scale-longitudinal-study-of-user-profiles-in-world-of-warcraft/</link>
		<comments>http://www.psl.cs.columbia.edu/1260/a-large-scale-longitudinal-study-of-user-profiles-in-world-of-warcraft/#comments</comments>
		<pubDate>Tue, 14 May 2013 16:50:16 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1260</guid>
		<description><![CDATA[In Proceedings of the 35th International Conference on Software Engineering (ICSE 2013).]]></description>
				<content:encoded><![CDATA[<p>In <em>Proceedings of the 35th International Conference on Software Engineering (<em>ICSE 2013</em>).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1260/a-large-scale-longitudinal-study-of-user-profiles-in-world-of-warcraft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Large-Scale, Longitudinal Study of User Profiles in World of Warcraft</title>
		<link>http://www.psl.cs.columbia.edu/1253/chronicler-lightweight-recording-to-reproduce-field-failures/</link>
		<comments>http://www.psl.cs.columbia.edu/1253/chronicler-lightweight-recording-to-reproduce-field-failures/#comments</comments>
		<pubDate>Tue, 14 May 2013 16:46:46 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1253</guid>
		<description><![CDATA[In Proceedings of the 5th International Workshop on Web Intelligence and Communities, co-located with The 22nd International World Wide Web Conference (WWW &#8217;13).]]></description>
				<content:encoded><![CDATA[<p>In <em>Proceedings of the 5th International Workshop on Web Intelligence and Communities</em>, co-located with <em>The 22nd International World Wide Web Conference</em> (WWW &#8217;13).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1253/chronicler-lightweight-recording-to-reproduce-field-failures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing Sensitive Data on Mobile Devices</title>
		<link>http://www.psl.cs.columbia.edu/1194/android-privacy/</link>
		<comments>http://www.psl.cs.columbia.edu/1194/android-privacy/#comments</comments>
		<pubDate>Mon, 21 Jan 2013 20:55:19 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[Active Projects]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1194</guid>
		<description><![CDATA[Supporting privacy requirements on mobile devices]]></description>
				<content:encoded><![CDATA[<p>In a joint project with <a href="http://www.cs.columbia.edu/~roxana/">Prof Roxana Geambasu</a>, we are building a system to support new paradigms of privacy on mobile devices. Interesting questions that we plan to address include:</p>
<ul>
<li>What sort of data do users consider private or sensitive?</li>
<li>In what ways to users use this data?</li>
<li>How can we reconcile existing encryption techniques with user requirements?</li>
</ul>
<p>We intend to describe further details on this system publicly later in 2013.</p>
<h3>Team Members</h3>
<p><strong>Faculty<br />
</strong>Prof Gail Kaiser, <a href="mailto:kaiser@cs.columbia.edu">kaiser@cs.columbia.edu</a><br />
Prof Roxana Geambasu, <a href="mailto:roxana@cs.columbia.edu">roxana@cs.columbia.edu</a></p>
<p><strong>Graduate Students<br />
</strong>Jonathan Bell, <a href="mailto:jbell@cs.columbia.edu">jbell@cs.columbia.edu</a><br />
Riley Spahn, <a href="mailto:riley@cs.columbia.edu">riley@cs.columbia.edu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1194/android-privacy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Quality Assurance and Performance Measurement of Data Mining for Preventive Maintenance of Power Grid</title>
		<link>http://www.psl.cs.columbia.edu/1184/data-quality-assurance-and-performance-measurement-of-data-mining-for-preventive-maintenance-of-power-grid/</link>
		<comments>http://www.psl.cs.columbia.edu/1184/data-quality-assurance-and-performance-measurement-of-data-mining-for-preventive-maintenance-of-power-grid/#comments</comments>
		<pubDate>Thu, 20 Dec 2012 22:31:03 +0000</pubDate>
		<dc:creator>psl</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1184</guid>
		<description><![CDATA[Leon Wu, Gail Kaiser, Cynthia Rudin, and Roger Anderson. Data Quality Assurance and Performance Measurement of Data Mining for Preventive Maintenance of Power Grid. In Proceedings of the ACM SIGKDD 2011 Workshop on Data Mining for Service and Maintenance, August 2011.]]></description>
				<content:encoded><![CDATA[<p>Leon Wu, Gail Kaiser, Cynthia Rudin, and Roger Anderson. Data Quality Assurance and Performance Measurement of Data Mining for Preventive Maintenance of Power Grid. In Proceedings of the ACM SIGKDD 2011 Workshop on Data Mining for Service and Maintenance, August 2011. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1184/data-quality-assurance-and-performance-measurement-of-data-mining-for-preventive-maintenance-of-power-grid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estimation of System Reliability Using a Semiparametric Model</title>
		<link>http://www.psl.cs.columbia.edu/1182/estimation-of-system-reliability-using-a-semiparametric-model/</link>
		<comments>http://www.psl.cs.columbia.edu/1182/estimation-of-system-reliability-using-a-semiparametric-model/#comments</comments>
		<pubDate>Thu, 20 Dec 2012 22:30:44 +0000</pubDate>
		<dc:creator>psl</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1182</guid>
		<description><![CDATA[Leon Wu, Timothy Teräväinen, Gail Kaiser, Roger Anderson, Albert Boulanger, and Cynthia Rudin. Estimation of System Reliability Using a Semiparametric Model. In Proceedings of the IEEE EnergyTech 2011 (EnergyTech), May 2011.]]></description>
				<content:encoded><![CDATA[<p>Leon Wu, Timothy Teräväinen, Gail Kaiser, Roger Anderson, Albert Boulanger, and Cynthia Rudin. Estimation of System Reliability Using a Semiparametric Model. In Proceedings of the IEEE EnergyTech 2011 (EnergyTech), May 2011.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1182/estimation-of-system-reliability-using-a-semiparametric-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Constructing Subtle Concurrency Bugs Using Synchronization-Centric Second-Order Mutation Operators</title>
		<link>http://www.psl.cs.columbia.edu/1180/constructing-subtle-concurrency-bugs-using-synchronization-centric-second-order-mutation-operators/</link>
		<comments>http://www.psl.cs.columbia.edu/1180/constructing-subtle-concurrency-bugs-using-synchronization-centric-second-order-mutation-operators/#comments</comments>
		<pubDate>Thu, 20 Dec 2012 22:30:15 +0000</pubDate>
		<dc:creator>psl</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1180</guid>
		<description><![CDATA[Leon Wu and Gail Kaiser. Constructing Subtle Concurrency Bugs Using Synchronization-Centric Second-Order Mutation Operators. In Proceedings of the 23th International Conference on Software Engineering and Knowledge Engineering (SEKE), July 2011.]]></description>
				<content:encoded><![CDATA[<p>Leon Wu and Gail Kaiser. Constructing Subtle Concurrency Bugs Using Synchronization-Centric Second-Order Mutation Operators. In Proceedings of the 23th International Conference on Software Engineering and Knowledge Engineering (SEKE), July 2011.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1180/constructing-subtle-concurrency-bugs-using-synchronization-centric-second-order-mutation-operators/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BugMiner: Software Reliability Analysis Via Data Mining of Bug Reports</title>
		<link>http://www.psl.cs.columbia.edu/1178/bugminer-software-reliability-analysis-via-data-mining-of-bug-reports/</link>
		<comments>http://www.psl.cs.columbia.edu/1178/bugminer-software-reliability-analysis-via-data-mining-of-bug-reports/#comments</comments>
		<pubDate>Thu, 20 Dec 2012 22:29:49 +0000</pubDate>
		<dc:creator>psl</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1178</guid>
		<description><![CDATA[Leon Wu, Boyi Xie, Gail Kaiser, and Rebecca Passonneau. BugMiner: Software Reliability Analysis Via Data Mining of Bug Reports. In Proceedings of the 23th International Conference on Software Engineering and Knowledge Engineering (SEKE), July 2011.]]></description>
				<content:encoded><![CDATA[<p>Leon Wu, Boyi Xie, Gail Kaiser, and Rebecca Passonneau. BugMiner: Software Reliability Analysis Via Data Mining of Bug Reports. In Proceedings of the 23th International Conference on Software Engineering and Knowledge Engineering (SEKE), July 2011. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1178/bugminer-software-reliability-analysis-via-data-mining-of-bug-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improving Efficiency and Reliability of Building Systems Using Machine Learning and Automated Online Evaluation</title>
		<link>http://www.psl.cs.columbia.edu/1176/improving-efficiency-and-reliability-of-building-systems-using-machine-learning-and-automated-online-evaluation/</link>
		<comments>http://www.psl.cs.columbia.edu/1176/improving-efficiency-and-reliability-of-building-systems-using-machine-learning-and-automated-online-evaluation/#comments</comments>
		<pubDate>Thu, 20 Dec 2012 22:29:09 +0000</pubDate>
		<dc:creator>psl</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1176</guid>
		<description><![CDATA[Leon Wu, Gail Kaiser, David Solomon, Rebecca Winter, Albert Boulanger, and Roger Anderson. Improving Efficiency and Reliability of Building Systems Using Machine Learning and Automated Online Evaluation. In Proceedings of the Eighth Annual IEEE Long Island Systems, Applications and Technology Conference (LISAT), May 2012.]]></description>
				<content:encoded><![CDATA[<p>Leon Wu, Gail Kaiser, David Solomon, Rebecca Winter, Albert Boulanger, and Roger Anderson. Improving Efficiency and Reliability of Building Systems Using Machine Learning and Automated Online Evaluation. In Proceedings of the Eighth Annual IEEE Long Island Systems, Applications and Technology Conference (LISAT), May 2012. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1176/improving-efficiency-and-reliability-of-building-systems-using-machine-learning-and-automated-online-evaluation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Autonomic Reliability Improvement System for Cyber-Physical Systems</title>
		<link>http://www.psl.cs.columbia.edu/1174/an-autonomic-reliability-improvement-system-for-cyber-physical-systems/</link>
		<comments>http://www.psl.cs.columbia.edu/1174/an-autonomic-reliability-improvement-system-for-cyber-physical-systems/#comments</comments>
		<pubDate>Thu, 20 Dec 2012 22:28:35 +0000</pubDate>
		<dc:creator>psl</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1174</guid>
		<description><![CDATA[Leon Wu and Gail Kaiser. An Autonomic Reliability Improvement System for Cyber-Physical Systems. In Proceedings of the IEEE 14th International Symposium on High-Assurance Systems Engineering (HASE), October 2012.]]></description>
				<content:encoded><![CDATA[<p>Leon Wu and Gail Kaiser. An Autonomic Reliability Improvement System for Cyber-Physical Systems. In Proceedings of the IEEE 14th International Symposium on High-Assurance Systems Engineering (HASE), October 2012. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1174/an-autonomic-reliability-improvement-system-for-cyber-physical-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overcoming the Intuition Wall: Automatic Graphical Analysis of Programs to Discover and Program New Computer Architectures</title>
		<link>http://www.psl.cs.columbia.edu/1160/overcoming-the-intuition-wall-automatic-graphical-analysis-of-programs-to-discover-and-program-new-computer-architectures/</link>
		<comments>http://www.psl.cs.columbia.edu/1160/overcoming-the-intuition-wall-automatic-graphical-analysis-of-programs-to-discover-and-program-new-computer-architectures/#comments</comments>
		<pubDate>Thu, 11 Oct 2012 15:54:39 +0000</pubDate>
		<dc:creator>kaiser</dc:creator>
				<category><![CDATA[Active Projects]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1160</guid>
		<description><![CDATA[A joint project encompassing computer architecture, machine learning and software engineering ]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Workload characterization is central to development of new computer architectures. The rise of the mobile-cloud paradigm has increased the diversity and rate at which applications are created thus challenging computer architects&#8217; ability to build optimized systems for them. In the past, architects have been able to examine software codes of interest (often through slow laborious manual inspection if necessary) when releases were far and few to derive intuition necessary to make architectural and microarchitectural discoveries. But this method does not scale to emerging applications which are literally hammered out in the hundreds by the day.  Further, new languages and platforms have behaviors that are quite different from legacy codes and there is urgent need for ‘intuition’ on these applications. Without new methods to characterize emerging workloads computer architects risk running into an intuition wall. This risk might prove calamitous if unmitigated, given the added reliance on (micro)architects to develop more energy efficient designs to compensate for the losses due to slowdowns in Dennard&#8217;s scaling.</p>
<p style="text-align: justify;">Advances in machine learning provide an opportunity to overcome the intuition wall. In the last decade there have been many major advances in machine learning on graphs motivated by need/benefit of mining behaviors in social networks and enabled by cheap commodity computing. The PIs propose to leverage these advances to discover and program new computer architectures. By viewing program execution as a graph, clustering these<br />
graphs, and mining them for similarities, the PIs propose to discover new behaviors that architects and microarchitects can use to develop new on-chip acceleration structures.  The PIs also propose to study how legacy code can semi-automatically be converted to execute on the architectures with the new accelerators.</p>
<p style="text-align: justify;">We are working with Profs. Simha Sethumadhavan and Tony Jebara to improve workload characterization in a very fundamental way: traditionally computer architects have relied on scalar characteristics (such as instruction mixes, hit/miss rate, etc.) to characterize groups of programs. We aim to discover deep program behaviors on a large scale by using program graphs as the intermediate representation.</p>
<p style="text-align: justify;">To enable this advance, the three groups are working on:</p>
<ol>
<li style="text-align: justify;">Hardware feature specification: development of internal representations that capture behaviors/features that are suited for architectural discover.</li>
<li style="text-align: justify;">Machine Learning: development of graphical clustering algorithms that are tuned to discover architectural behaviors.</li>
<li style="text-align: justify;">Software Engineering: techniques for adapting legacy code clones to exploit new architectures.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1160/overcoming-the-intuition-wall-automatic-graphical-analysis-of-programs-to-discover-and-program-new-computer-architectures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Open Software Framework for the Emulation and Verification of Drosophila Brain Models on Multiple GPUs</title>
		<link>http://www.psl.cs.columbia.edu/1151/an-open-software-framework-for-the-emulation-and-verification-of-drosophila-brain-models-on-multiple-gpus/</link>
		<comments>http://www.psl.cs.columbia.edu/1151/an-open-software-framework-for-the-emulation-and-verification-of-drosophila-brain-models-on-multiple-gpus/#comments</comments>
		<pubDate>Thu, 11 Oct 2012 15:48:58 +0000</pubDate>
		<dc:creator>kaiser</dc:creator>
				<category><![CDATA[Active Projects]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=1151</guid>
		<description><![CDATA[Software frameworks and tools to emulate fly brains]]></description>
				<content:encoded><![CDATA[<p>We are working with Prof. Aurel Lazar&#8217;s Bionet Lab (http://www.bionet.ee.columbia.edu/) to design, implement and experimentally evaluate an open software framework called the <em>Neurokernel</em> that will enable the isolated and integrated emulation of fly brain model neural ciits and their connectivity patterns (e.g., sensory and locomotion systems)  and other parts of the fly&#8217;s nervous system on clusters of GPUs, and support the in vivo functional identification of neural circuits.  (Note this is <strong>NOT</strong> the same meaning of &#8220;in vivo&#8221; as our In Vivo Testing project.)</p>
<p>The Neurokernel will:</p>
<ol>
<li>Enable computational/systems neuroscientists to exploit new connectome data by directing emulation efforts at interoperable local processing units (LPUs), functional subdivisions of the brain that serve as its computational substrate;</li>
<li>Capitalize on the representation of stimuli in the time domain to enable the development of novel asynchronous algorithms for processing spikes with neural circuits;</li>
<li>Serve as an extended machine that will provide abstractions and interfaces for scalably leveraging a powerful commodity parallel computing hardware platform to study a tractable neural system;</li>
<li>Serve as a resource allocator that will enable researchers to transparently take advantage of future improvements in this hardware platform;</li>
<li>Enable testing of models, both by easing the detection and localization of programming errors and by operationally verifying the models&#8217; designs against time-encoded signals to/from live fly brains in real-time;</li>
<li>Accelerate the research community&#8217;s progress in developing new brain circuit model by facilitating the sharing and refinement of novel and/or improved models of LPUs and their constituent circuits by different  groups.</li>
</ol>
<p>To ease its use by the neuroscience community and enable synergy with existing computational tools and packages, we are developing our software framework in Python, a high-level language that has enjoyed great popularity amongst computational neuroscientists.</p>
<p>As we enhance Neurokernel to model new regions of the fly brain, there may be a negative effect on previous models for other regions.  As the fly brain model(s) will be developed in iterative software development cycles, it will be imperative to ensure that each iteration re-verifies the platform and its individual LPUs against the actual fly brain neuropils.  We would like these tests on the Python code to be conducted automatically, without requiring the use of our fly interface equipment &#8212; which is manually intensive to operate.  We are constructing a tool to simulate the fly brain interface for software testing purposes that will capture the stimuli provided to the fly along with its responses.  From these sets of inputs and outputs, the tool will automatically generate test cases that recreate the same experiment without the need for repeated interfacing with the fly. This tool will also be used to automatically generate regression tests for the Neurokernel software that depend on other external factors.</p>
<p>Additional information is available on the <a title="Bionet Lab website" href="http://bionet.ee.columbia.edu/index.html">Bionet Lab website</a>.  Interested students should also view Bionet&#8217;s <a title="Neurokernel projects" href="http://bionet.ee.columbia.edu/projects/neurokernel.html">project student ads</a>.</p>
<p>Contact: Lev Given (<a href="mailto:lev@columbia.edu">lev@columbia.edu</a>)</p>
<h3>Team Members</h3>
<p><strong>Faculty</strong><br />
Prof Gail Kaiser, <a href="mailto:kaiser@cs.columbia.edu">kaiser@cs.columbia.edu</a><br />
Prof Aurel Lazar, <a href="mailto:aurel@ee.columbia.edu">aurel@ee.columbia.edu</a></p>
<p><strong>Graduate Students<br />
</strong>Lev Givon, <a href="mailto:lev@columbia.edu">lev@columbia.edu</a><br />
Nikhil Sarda, <a href="mailto:ns2847@columbia.edu">ns2847@columbia.edu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/1151/an-open-software-framework-for-the-emulation-and-verification-of-drosophila-brain-models-on-multiple-gpus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Testing for Non-Testable Programs</title>
		<link>http://www.psl.cs.columbia.edu/64/metamorphic-testing/</link>
		<comments>http://www.psl.cs.columbia.edu/64/metamorphic-testing/#comments</comments>
		<pubDate>Mon, 21 May 2012 21:38:49 +0000</pubDate>
		<dc:creator>psl</dc:creator>
				<category><![CDATA[Active Projects]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=64</guid>
		<description><![CDATA[Automating metamorphic testing techniques at runtime ]]></description>
				<content:encoded><![CDATA[<h3>About This Project</h3>
<p>Conventional software testing checks whether each output is correct for the set of test inputs. But for some software, it is not known what the correct output should be for some inputs &#8212; yet it is still important to detect coding errors in that software, so they can be fixed. This dilemma arises frequently for machine learning, simulation and optimization applications, often <em>&#8220;Programs which were written in order to determine the answer in the first place. There would be no need to write such programs, if the correct answer were known.&#8221; </em> [Weyuker EJ. On testing non-testable programs. <em><strong>Computer Journal,</strong></em> November 1982; 25(4):465–470.] As these kinds of applications are frequently used in public infrastructure and biomedical research (domains targeted in this research), it is critical to detect and fix errors before a calamity occurs.</p>
<p>In this project, we seek to develop testing techniques that successfully find defects in software without a test oracle (known as &#8220;Non-Testable Programs&#8221; although that phrase is not intended to be literal).  The conventional way to test software is to devise pairs of input data and expected output results, run the program with the prepared input data and then compare the actual results to those expected; alternatively, preparation of expected output results can be omitted if there is some easy way to check whether the actual results are correct.  The mechanism to do this is in either case called a test oracle.  However, there are large and important classes of software applications &#8211; in machine learning, simulation, optimization, etc. domains &#8211; where there simply is no test oracle, and for the general case it is impossible (or at least impractical, e.g., it would take years at prohibitive cost, and/or would require unacceptable experimentation with human subjects) to determine whether the actual output is indeed correct for given input.  Yet we would still like to be able to devise test cases that enable us to find coding errors.  We have investigated several approaches, of which the most successful (at finding both previously unknown bugs and seeded bugs in real-world applications) has been &#8220;metamorphic testing&#8221;.   Fortunately, many such applications reflect &#8216;metamorphic properties&#8217; that define a relationship between pairs of inputs and outputs, such that for any previous input i with its already known output o, one can easily derive a test input i&#8217; and predict the expected output o&#8217;. If the actual output o&#8221; is different from o&#8217;, then there must be an error in the code.</p>
<p>Metamorphic testing was previously designed by others as a general technique for creating follow-up test cases based on existing ones, particularly those that have not revealed any failure, in order to try to find uncovered flaws. Instead of being an approach for test case selection, it is a methodology of reusing input test data to create additional test cases whose outputs can be predicted. In metamorphic testing, if input x produces an output f(x), the function&#8217;s (or application&#8217;s) metamorphic properties can then be used to guide the creation of a transformation function t, which can then be applied to the input to produce t(x); this transformation then allows us to predict the output f(t(x)), based on the (already known) value of f(x). If the output is not as expected, then a defect must exist. Of course, this can only show the existence of defects and cannot demonstrate their absence, in the case of software with no test oracle, since the correct output cannot be known in advance (and even if the outputs are as expected, both could be incorrect). But metamorphic testing provides a powerful technique to reveal defects in such non-testable programs by use of a built-in pseudo-oracle.</p>
<p>Our initial work evaluated the feasibility of applying metamorphic testing to machine learning apps, resulting in a paper published at SEKE 2008 in which we categorized six types of metamorphic properties that such applications may have.</p>
<p>We then created a tool called Corduroy to automate the process by allowing developers to specify individual functions&#8217; metamorphic properties using the specification language JML; these properties could then be checked using JML Runtime Assertion Checking. This yielded a paper that was presented at ICST 2009. We further developed a technique called Metamorphic Runtime Checking, and an implementation framework called Columbus, that are described in a tech report.</p>
<p>For system-level testing, we developed a tool called Amsterdam and an approach called Automated Metamorphic System Testing. This allows for checking of the application&#8217;s metamorphic properties at runtime, using the real input from actual executions. However, the checks are conducted in parallel (for performance reasons), and any side effects are hidden from the user.  Amsterdam was presented at ISSTA 2009, and is presented in more detail in a tech report.</p>
<p>We have recently completed two studies where we applied the metamorphic testing approach to healthcare simulation software with no test oracle: the JSim discrete event simulation system (developed by the University of Massachusetts at Amherst) for modeling the flow of patients through a hospital emergency room, and the GCS Glycemic Control Simulator (developed by the University of Pennsylvania) to simulate the behavior of different closed-loop insulin titration algorithms on a virtual patient.  Both studies were in collaboration with the developers of the software under test, and involved bugs seeded through the standard mutation testing technique.  Our metamorphic testing approach was able to detect all of the errors in JSim and 60% of the inserted errors in GCS.    Our experiments in these and other domains demonstrate that metamorphic testing is more effective at detecting defects in applications without test oracles than using a &#8220;partial oracle&#8221; (simple input for which the correct output can be known) or runtime assertion checking, although these techniques find some defects not found by metamorphic testing and thus should be used in combination.</p>
<p>We now plan to investigate methodology for determining the metamorphic properties of software and for devising good test cases from which the secondary tests can be derived. The project will extend the inputs/outputs considered in our previous work on metamorphic testing to focus on application state, before and after, rather than just functional parameters and results. The research will also extend the pairwise relations implied by metamorphic properties to &#8216;semantic similarity&#8217; for nondeterministic applications, applied to profiles from numerous executions, since an exact relation cannot be expected to hold for a single pair of test executions. These extensions will enable treatment of more sophisticated properties that preliminary experiments have shown to reveal defects that were not detected otherwise.</p>
<p>Interested students should view our <a title="Project Student Advertisements" href="http://www.psl.cs.columbia.edu/project-student-advertisements/">project student ads</a>.</p>
<p>Contact: Jon Bell (<a href="mailto:jbell@cs.columbia.edu">jbell@cs.columbia.edu</a>)</p>
<h3>Team Members:</h3>
<p><strong>Faculty</strong><br />
Prof. Gail Kaiser, kaiser [at] cs.columbia.edu</p>
<p><strong>Graduate Students</strong></p>
<p>Jonathan Bell, jbell@cs.columbia.edu</p>
<p><strong>Former Members</strong><br />
Sahar Hasan<br />
Lifeng Hu<br />
Chris Murphy<br />
Kenny Shen<br />
Miriam Melnick<br />
Qiang Deng<br />
Kunal Mishra</p>
<h3>Links</h3>
<p><strong>Publications</strong></p>
<p>Christian Murphy, M. S. Raunak, Andrew King, Sanjian Chen, Christopher Imbriano, Gail Kaiser, Insup Lee, Oleg Sokolsky, Lori Clarke, Leon Osterweil. <a href="http://dl.acm.org/citation.cfm?id=1988003" target="_blank">On Effective Testing of Health Care Simulation Software.</a> <em>3rd International Workshop on Software Engineering in Health Care</em>, May 2011.</p>
<p>Xiaoyuan Xie, Joshua W. K. Ho, Christian Murphy, Gail Kaiser, Baowen Xu and Tsong Yueh Chen.  <a href="http://dl2.acm.org/citation.cfm?id=1942371" target="_blank">Testing and Validating Machine Learning Classifiers by Metamorphic Testing.</a>  <em>Journal of Systems and Software</em>, Elsevier, 84(4):544-558, April 2011.</p>
<p>Christian Murphy and Gail Kaiser. <a title="Amsterdam" href="http://mice.cs.columbia.edu/getTechreport.php?techreportID=1442&amp;format=pdf&amp;" target="_blank">Automatic Detection of Defects in Applications without Test Oracles.</a> Technical Report CUCS-027-10, Dept. of Computer Science, Columbia University, October 2010. (Amsterdam)</p>
<p>Christian Murphy and Gail Kaiser.  <a title="Columbus" href="http://mice.cs.columbia.edu/getTechreport.php?techreportID=623&amp;format=pdf&amp;" target="_blank">Metamorphic Runtime Checking of Non-Testable Programs.</a> Technical Report CUCS-042-09, Dept. of Computer Science, Columbia University, October 2009. (Columbus)</p>
<p>Christian Murphy, Kuang Shen and Gail Kaiser. <a href="http://dl2.acm.org/citation.cfm?id=1572272.1572295" target="_blank">Automatic System Testing of Programs without Test Oracles.</a> International Symposium on Software Testing and Analysis, July 2009.</p>
<p>Christian Murphy, Kuang Shen and Gail Kaiser. <a href="http://dl.acm.org/citation.cfm?id=1548230" target="_blank">Using JML Runtime Assertion Checking to Perform Metamorphic Testing in Applications without Test Oracles.</a> 2nd IEEE International Conference on Software Testing, Verification and Validation, April 2009.</p>
<p>Christian Murphy, Gail Kaiser, Lifeng Hu and Leon Wu. <a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.140.8165" target="_blank">Properties of Machine Learning Applications for Use in Metamorphic Testing.</a> <em>20th International Conference on Software Engineering and Knowledge Engineering</em>, July 2008.</p>
<p>Christian Murphy, Gail Kaiser and Marta Arias. P<a href="http://dl.acm.org/citation.cfm?id=1292414.1292425" target="_blank">arameterizing Random Test Data According to Equivalence Classes. </a><em>2nd ACM International Workshop on Random Testing</em>, November 2007.</p>
<p>Christian Murphy, Gail Kaiser and Marta Arias. <a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.3244" target="_blank">An Approach to Software Testing of Machine Learning Applications.</a> <em>19th International Conference on Software Engineering and Knowledge Engineering</em>, July 2007, pp. 167-172.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/64/metamorphic-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>In Vivo Testing</title>
		<link>http://www.psl.cs.columbia.edu/112/in-vivo-testing/</link>
		<comments>http://www.psl.cs.columbia.edu/112/in-vivo-testing/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 15:57:23 +0000</pubDate>
		<dc:creator>psl</dc:creator>
				<category><![CDATA[Active Projects]]></category>

		<guid isPermaLink="false">http://www.psl.cs.columbia.edu/?p=112</guid>
		<description><![CDATA[Executing tests in the deployment environment, using the state of the running application]]></description>
				<content:encoded><![CDATA[<h3>About In Vivo Testing</h3>
<p>In this project, we are seeking to develop a new testing approach in which an application automatically tests itself while it is running in the deployment environment (the field), as opposed to in the development and testing environments (the lab). The thought is that an application running in the field is more likely to encounter states that were not anticipated prior to release, or could not have been tested due to various constraints (e.g. time).</p>
<p>In Fall 2007, we developed a prototype framework called Invite, which is described in our tech report and was presented as a poster at ISSTA 2008 (a variant of this paper was presented at ICST 2009, and is available here). This implementation uses an AspectJ component to instrument selected classes in a Java application, such that each method call in those classes has some chance (configurable on a per-method basis) of executing the method&#8217;s corresponding unit test. When a test is run, Invite forks off a new process in which to run the test, and the results are logged.</p>
<p>We also developed a distributed version of Invite, which seeks to amortize the testing load across a community of applications; a paper was published in the student track of ICST 2008. This version currently uses only one global value for the probability of running a test, instead of one per method, however. That value is set by a central server, depending on the size of the &#8220;application community&#8221;.</p>
<p>In Spring 2008, we looked at various mechanisms for reducing the performance impact of Invite, e.g. by assigning tests to different cores/processors on multi-core/multi-processor machines, or by limiting the number of concurrent tests that may be run. We also looked at ways of balancing testing load across members of a community so that instances under light load pick up more of the testing. Lastly, we created a modified JDK that allows Invite to create copies of files so that in vivo tests do not alter the &#8220;real&#8221; file system.</p>
<p>In Fall 2008, we ported the Invite framework to C and evaluated more efficient mechanisms for injecting the instrumentation and executing the tests. We also investigated fault localization techniques, which collect data from failed program executions and attempt to discover what caused the failure.</p>
<p>Recently we have investigated ways to make the technique more efficient by only running tests in application states it hasn&#8217;t seen before. This cuts down on the number of redundant states that are tested, thus reducing the performance overhead. This work has potential application to domains like model checking and dynamic analysis and was presented in a workshop paper at AST 2010.</p>
<p>Currently we are looking at ways to apply the In Vivo approach to the domain of security testing. Specifically, we devised an approach called Configuration Fuzzing in which the In Vivo tests make slight changes to the application configuration and then check &#8220;security invariants&#8221; to see if there are any vulnerabilities that are configuration-related. This work was presented at the 2010 Workshop on Secure Software Engineering.</p>
<p>In 2012-2013, we are investigating techniques to efficiently isolate the state of the tests, so as to avoid the effect of the tests on external systems.</p>
<p>Open research questions include:</p>
<ul>
<li>Can the overhead be reduced by offloading test processes to other machines? This is especially important when the application is running on a single-core machine.</li>
<li>What sorts of defects are most likely to be detected with such an approach? How can we objectively measure the approach&#8217;s effectiveness at detecting defects?</li>
<li>How can the tests be &#8220;sandboxed&#8221; so that they do not affect external entities like databases? We currently assure that there are no changes to the in-process memory or to the file system, but what about external systems?</li>
</ul>
<p>Interested students should view our <a title="Project Student Advertisements" href="http://www.psl.cs.columbia.edu/project-student-advertisements/">project student ads</a>.</p>
<p>Contact: Jon Bell (<a href="mailto:jbell@cs.columbia.edu">jbell@cs.columbia.edu</a>)</p>
<h3>Team Members</h3>
<p><strong>Faculty</strong><br />
Prof. Gail Kaiser, <a href="mailto:kaiser@cs.columbia.edu">kaiser@cs.columbia.edu</a></p>
<p><strong>Graduate Students</strong><br />
Jonathan Bell, <a href="mailto:jbell@cs.columbia.edu">jbell@cs.columbia.edu<br />
</a></p>
<p><strong>Former Members</strong><br />
Matt Chu<br />
Waseem Ilahi<br />
Chris Murphy<br />
Del Slane<br />
Ian Vo<br />
Moses Vaughan</p>
<h3>Links</h3>
<p><strong>Publications</strong><br />
<a href="http://www.psl.cs.columbia.edu/wp-content/uploads/2011/03/murphy-invite3-icst2009.pdf">ICST 2009 paper</a> on in vivo testing<br />
<a href="http://www.psl.cs.columbia.edu/wp-content/uploads/2011/03/3476-Chu-DistributedInVivo-ICST2008.pdf">ICST 2008 paper</a> on distributed in vivo testing<br />
<a href="http://www.psl.cs.columbia.edu/wp-content/uploads/2011/03/3484-Dai-SecSE2010.pdf">SecSE 2010 paper</a> on configuration fuzzing<br />
<a href="http://www.psl.cs.columbia.edu/wp-content/uploads/2011/03/3483-Murphy-Invite-AST2010.pdf">AST 2010</a> on conducting tests only in previously-unseen states</p>
<p><strong>Related Work</strong><br />
<a href="http://gamma.cc.gatech.edu/">Gamma project</a> at Georgia Tech<br />
<a href="http://www.cs.umd.edu/projects/skoll/index.htm">Skoll project</a> at Univ of Maryland<br />
<a href="http://pages.cs.wisc.edu/~liblit/dissertation/">Cooperative Bug Isolation</a> at Univ of Wisconsin</p>
]]></content:encoded>
			<wfw:commentRss>http://www.psl.cs.columbia.edu/112/in-vivo-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
