<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Build &amp; Test on CS 412</title>
		<link>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/</link>
		<description>Recent content in Build &amp; Test on CS 412</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<atom:link href="/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Quick Reference</title>
				<link>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/quick-reference/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/quick-reference/</guid>
				<description>&lt;p&gt;This page is the command and workflow reference you are most likely to revisit while developing and evaluating your project. Run all commands from the &lt;strong&gt;repository root&lt;/strong&gt; unless noted otherwise.&lt;/p&gt;&#xA;&lt;h2 id=&#34;project-selection-and-repository-creation&#34;&gt;Project selection and repository creation&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Project Selection (before Checkpoint 1):&lt;/strong&gt; Follow &lt;a href=&#34;../../start-here/getting-started/&#34;&gt;Getting Started&lt;/a&gt; to form your team (or work individually with approval), read the &lt;a href=&#34;../../problems/&#34;&gt;problem definitions&lt;/a&gt;, rank three preferences, and submit &lt;code&gt;project.json&lt;/code&gt; on Gradescope. There is no repository to create in this stage.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Repository &amp; Gradescope</title>
				<link>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/repository/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/repository/</guid>
				<description>&lt;p&gt;Each team uses one shared GitHub repository for the &lt;em&gt;Beyond Brute Force&lt;/em&gt; project. The repository is created through &lt;a href=&#34;https://classroom50.org/&#34;&gt;Classroom 50&lt;/a&gt; and is used throughout all checkpoints and the final submission.&lt;/p&gt;&#xA;&lt;p&gt;The repository has an explicit ownership boundary. &lt;strong&gt;Course-owned files&lt;/strong&gt; provide common infrastructure and may be updated during the semester. &lt;strong&gt;Student-owned files&lt;/strong&gt; contain your team&amp;rsquo;s algorithm implementations and will not be overwritten by a course infrastructure update.&lt;/p&gt;&#xA;&lt;p&gt;Do not rename required files or directories unless the project instructions explicitly tell you to do so. Gradescope and the supplied project tools depend on this structure.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Program Interface</title>
				<link>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/program-interface/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/program-interface/</guid>
				<description>&lt;p&gt;All &lt;em&gt;Beyond Brute Force&lt;/em&gt; implementations use the same command-line interface and output structure. This allows the same testing, Gradescope, and experimental tools to work with every project problem.&lt;/p&gt;&#xA;&lt;p&gt;The repository separates project-maintained infrastructure from team implementation code:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;src/course/     course-owned infrastructure&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;src/student/    student-owned implementations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The common entry point remains:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;src/solve.py&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You implement the algorithms under &lt;code&gt;src/student/&lt;/code&gt;. You are not expected to recreate the command-line parser, problem dispatch, input readers, or JSON-output infrastructure under &lt;code&gt;src/course/&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Testing &amp; Autograders</title>
				<link>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/testing/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/testing/</guid>
				<description>&lt;p&gt;The project uses three complementary kinds of checking.&lt;/p&gt;&#xA;&lt;h2 id=&#34;local-public-tests&#34;&gt;Local public tests&lt;/h2&gt;&#xA;&lt;p&gt;Run the supplied public test programs while developing. They are designed to catch interface, correctness, verifier, bound, and basic scalability problems before submission.&lt;/p&gt;&#xA;&lt;p&gt;The exact commands and useful options are collected in &lt;a href=&#34;../quick-reference/&#34;&gt;Quick Reference&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;gradescope&#34;&gt;Gradescope&lt;/h2&gt;&#xA;&lt;p&gt;Gradescope uses additional tests that follow the same documented interfaces and input formats. The hidden tests are intended to verify correctness independently rather than reward solutions that are tailored only to the public examples.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Graph Interface</title>
				<link>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/graph-interface/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/graph-interface/</guid>
				<description>&lt;p&gt;Several &lt;em&gt;Beyond Brute Force&lt;/em&gt; problems use the same course-provided representation&#xA;for a simple, undirected graph.&lt;/p&gt;&#xA;&lt;p&gt;The class is defined in:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;src/course/common/graph.py&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Algorithms that use this representation may import it with:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;course.common.graph&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Graph&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The course-provided input routines construct the &lt;code&gt;Graph&lt;/code&gt; object before calling&#xA;your algorithm. In most cases, your code will therefore &lt;strong&gt;use&lt;/strong&gt; a &lt;code&gt;Graph&lt;/code&gt;&#xA;rather than read or construct one itself.&lt;/p&gt;&#xA;&lt;p&gt;This page defines the public interface that student code may rely on.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Input Files</title>
				<link>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/input-files/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/molloykp/teaching/cs412_f26/pas/npcompleteproject/build-test/input-files/</guid>
				<description>&lt;p&gt;Beyond Brute Force uses standard input formats shared by multiple project&#xA;problems.&lt;/p&gt;&#xA;&lt;p&gt;The course-provided support code reads these files and converts each input into&#xA;the representation passed to your algorithm.&lt;/p&gt;&#xA;&lt;p&gt;You need to understand the formats well enough to inspect supplied instances&#xA;and create your own test cases, but you are not expected to write the&#xA;low-level parsing code yourself.&lt;/p&gt;&#xA;&lt;p&gt;Each invocation of &lt;code&gt;src/solve.py&lt;/code&gt; processes &lt;strong&gt;one problem instance&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;instance-names&#34;&gt;Instance Names&lt;/h2&gt;&#xA;&lt;p&gt;Unless an explicit identifier is supplied on the command line, an instance is&#xA;identified by the name of its input file without the filename extension.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
