<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Home on Ian Fang</title>
		<link>https://uwf-fang.github.io/</link>
		<description>Recent content in Home on Ian Fang</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<atom:link href="https://uwf-fang.github.io/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>2025 Southeast Regional Contest</title>
				<link>https://uwf-fang.github.io/competitive-programming/seusa2025/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/competitive-programming/seusa2025/</guid>
				<description>&lt;span id=&#34;southeast-regional-contest-2025&#34;&gt;&lt;/span&gt;&#xA;&#xA;&lt;h2 id=&#34;event-details&#34;&gt;Event Details&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Date: Nov. 8, 2025&lt;/li&gt;&#xA;&lt;li&gt;Location: University of West Florida, Pensacola, FL&lt;/li&gt;&#xA;&lt;li&gt;Hosted by: University of West Florida&lt;/li&gt;&#xA;&lt;li&gt;Results&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Two UWF teams participated in Division 2.&lt;/li&gt;&#xA;&lt;li&gt;Both teams solved 5 problems.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;contest-and-solutions&#34;&gt;Contest and solutions&lt;/h2&gt;&#xA;&lt;p&gt;Visit the &lt;a href=&#34;https://nasouth25.kattis.com/contests&#34;&gt;Southeast Regional 2025 contest on Kattis&lt;/a&gt;&#xA; for the scoreboard and full problem set. The combined &lt;a href=&#34;../seusa2025-solutions/&#34;&gt;2025 solution notes&lt;/a&gt;&#xA; cover the selected problems with explanations, code, and links to their original statements.&lt;/p&gt;&#xA;&lt;h2 id=&#34;related-material&#34;&gt;Related material&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;../seusa2026/&#34;&gt;2026 Southeast Regional Contest&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;../icpc/&#34;&gt;ICPC Division 2 preparation guide&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>International Collegiate Programming Contest</title>
				<link>https://uwf-fang.github.io/competitive-programming/icpc/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/competitive-programming/icpc/</guid>
				<description>&lt;span id=&#34;international-collegiate-programming-contest&#34;&gt;&lt;/span&gt;&#xA;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;The International Collegiate Programming Contest (ICPC) is a team programming competition. This guide helps UWF students prepare for &lt;strong&gt;Division 2 (D2) of the Southeast USA Regional&lt;/strong&gt;. Start with problems you can solve using a scan, a frequency count, sorting, or a small search. Practice turning a correct idea into an accepted submission on a shared workstation.&lt;/p&gt;&#xA;&lt;h3 id=&#34;levels-of-competition&#34;&gt;Levels of competition&lt;/h3&gt;&#xA;&lt;p&gt;Students can start with local practice contests. The ICPC competition progresses through regionals and regional championships to the World Finals. This guide focuses on the Southeast Regional.&lt;/p&gt;</description>
			</item>
			<item>
				<title>2025 Southeast Regional Solutions</title>
				<link>https://uwf-fang.github.io/competitive-programming/seusa2025-solutions/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/competitive-programming/seusa2025-solutions/</guid>
				<description>&lt;span id=&#34;southeast-regional-solutions-2025&#34;&gt;&lt;/span&gt;&#xA;&#xA;&lt;p&gt;The problem statements are linked from Kattis. The explanations below preserve the full solution notes and code for the selected UWF problems.&lt;/p&gt;&#xA;&lt;h2 id=&#34;problem-a-snakeystring&#34;&gt;Problem A — Snakey String&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://open.kattis.com/problems/snakeystring&#34;&gt;Open the original problem on Kattis&lt;/a&gt;&#xA;.&lt;/p&gt;&#xA;&lt;p&gt;Here is a &lt;strong&gt;simple explanation&lt;/strong&gt; and a &lt;strong&gt;clean Python 3 solution&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;a-solution&#34;&gt;Solution&lt;/h3&gt;&#xA;&lt;h4 id=&#34;a-explanation&#34;&gt;Explanation&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;You are given an &lt;strong&gt;r × c&lt;/strong&gt; grid.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Each column contains exactly ONE uppercase letter&lt;/strong&gt; (the others are dots).&lt;/li&gt;&#xA;&lt;li&gt;To recover the original string, you just:&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Look at &lt;strong&gt;each column from left to right&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Find the &lt;strong&gt;uppercase letter&lt;/strong&gt; in that column.&lt;/li&gt;&#xA;&lt;li&gt;Append it to the result.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;That’s it—no actual snake traversal is needed because the puzzle guarantees exactly one letter per column.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How to Use the ICPC Division 2 TRD</title>
				<link>https://uwf-fang.github.io/competitive-programming/trd/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/competitive-programming/trd/</guid>
				<description>&lt;p&gt;Keep the Team Reference Document (TRD) open beside this guide. Find the topic in the PDF, work through the example here, then adapt the PDF&amp;rsquo;s listing to a small problem. During timed practice, try finding the same listing from the PDF index alone. &lt;a href=&#34;https://uwf-fang.github.io/downloads/icpc/icpc-d2-trd.pdf&#34;&gt;Download the 25-page TRD&lt;/a&gt;&#xA; · &lt;a href=&#34;../icpc/&#34;&gt;ICPC Division 2 preparation guide&lt;/a&gt;&#xA;&lt;/p&gt;&#xA;&lt;h2 id=&#34;page-1--read-the-index-and-notation&#34;&gt;Page 1 · Read the index and notation&lt;/h2&gt;&#xA;&lt;p&gt;The page numbers below match the PDF&amp;rsquo;s printed numbers. A listing often shows just the function or loop you need. Put it into the page 3 starter, declare and read the inputs it expects, and decide what to print. For example, a function that returns an index may need you to print that index plus one if the problem numbers positions from one.&lt;/p&gt;</description>
			</item>
			<item>
				<title>2026 Southeast Regional Contest</title>
				<link>https://uwf-fang.github.io/competitive-programming/seusa2026/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/competitive-programming/seusa2026/</guid>
				<description>&lt;span id=&#34;southeast-regional-contest-2026&#34;&gt;&lt;/span&gt;&#xA;&#xA;&lt;h2 id=&#34;event-details&#34;&gt;Event Details&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Date: Nov. 7, 2026&lt;/li&gt;&#xA;&lt;li&gt;Location: Florida State University, Tallahassee, FL&lt;/li&gt;&#xA;&lt;li&gt;Hosted by: Florida State University&lt;/li&gt;&#xA;&lt;li&gt;Results&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Two UWF teams participated in Division 2.&lt;/li&gt;&#xA;&lt;li&gt;The top UWF team solved 8 problems, earned gold in the FSU Division 2 section, and placed fourth in the regional Division 2 standings.&lt;/li&gt;&#xA;&lt;li&gt;Three teams solved 9 problems; UWF was the only team to solve 8, while every other team solved fewer than 8.&lt;/li&gt;&#xA;&lt;li&gt;The second UWF team solved 3 problems.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;contest-and-solutions&#34;&gt;Contest and solutions&lt;/h2&gt;&#xA;&lt;p&gt;Visit the &lt;a href=&#34;https://nasouth26.kattis.com/contests&#34;&gt;Southeast Regional 2026 contest on Kattis&lt;/a&gt;&#xA; for the scoreboard and full problem set. The combined &lt;a href=&#34;../seusa2026-solutions/&#34;&gt;2026 solution notes&lt;/a&gt;&#xA; cover the selected problems with explanations, code, and links to their original statements; they are not a complete set of contest solutions.&lt;/p&gt;</description>
			</item>
			<item>
				<title>2026 Southeast Regional Solutions</title>
				<link>https://uwf-fang.github.io/competitive-programming/seusa2026-solutions/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/competitive-programming/seusa2026-solutions/</guid>
				<description>&lt;span id=&#34;southeast-regional-solutions-2026&#34;&gt;&lt;/span&gt;&#xA;&#xA;&lt;p&gt;Each section connects a selected contest problem to its algorithm, explains why the algorithm works, and includes the provided Python implementation. Follow the Kattis link for the complete statement, input format, and constraints.&lt;/p&gt;&#xA;&lt;h2 id=&#34;problem-a-whatisicpc&#34;&gt;Problem A — What Really Is ICPC?&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://open.kattis.com/problems/whatisicpc&#34;&gt;Open the original problem on Kattis&lt;/a&gt;&#xA;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Goal.&lt;/strong&gt; Four words are proposed as an expansion of the acronym &lt;code&gt;ICPC&lt;/code&gt;. Determine whether their first letters, read in the given order, form that acronym.&lt;/p&gt;</description>
			</item>
			<item>
				<title>About</title>
				<link>https://uwf-fang.github.io/about/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/about/</guid>
				<description></description>
			</item>
			<item>
				<title>Academic Calendar</title>
				<link>https://uwf-fang.github.io/projects/academic-calendar/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/projects/academic-calendar/</guid>
				<description>&lt;p&gt;Academic Calendar (&lt;code&gt;acalendar&lt;/code&gt;) is a Python command-line tool that turns a TOML configuration into a weekly course calendar. Define the term dates, add module topics and events, and export the result as CSV, an HTML table, or a LaTeX table snippet.&lt;/p&gt;&#xA;&lt;p&gt;The tool groups the term into Monday-to-Friday weeks and keeps partial weeks within the specified dates. Optional spring and Thanksgiving breaks insert labeled weeks with no classes. Weekly titles and events can use numbered or plain lines, and omitted fields produce blank cells.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Canvas Submission Organizer</title>
				<link>https://uwf-fang.github.io/projects/canvas-submission-organizer/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/projects/canvas-submission-organizer/</guid>
				<description>&lt;p&gt;Canvas Submission Organizer is a Python command-line tool that extracts a Canvas assignment download into one directory per student. It handles both single-file submissions and projects submitted as ZIP archives.&lt;/p&gt;&#xA;&lt;p&gt;For repeated submissions, the tool treats the highest submission ID in the Canvas filename as the latest attempt. It places that attempt directly in the student&amp;rsquo;s directory and preserves earlier attempts under an &lt;code&gt;old/&lt;/code&gt; directory. Project mode can flatten a single enclosing folder from a submitted archive.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GitHub Classroom Repos</title>
				<link>https://uwf-fang.github.io/projects/github-classroom-repos/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/projects/github-classroom-repos/</guid>
				<description>&lt;p&gt;GitHub Classroom Repos provides the &lt;code&gt;classroom-repos&lt;/code&gt; Python command-line tool for maintaining a collection of cloned programming-project repositories. A YAML configuration identifies shared files, required content, templates, and paths to synchronize between starter and solution repositories.&lt;/p&gt;&#xA;&lt;p&gt;The tool can check README sections, build targets, test files, and other configured requirements across the collection. Pair commands compare starter repositories with their corresponding solution repositories and use marker files to track configured synchronization paths.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Semester Data Processor</title>
				<link>https://uwf-fang.github.io/projects/semester-data-processor/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/projects/semester-data-processor/</guid>
				<description>&lt;p&gt;Semester Data Processor is a Python command-line tool for faculty and course coordinators who work with course rosters, Canvas gradebook exports, and learning-outcome assessments. It combines data from multiple sections and produces reports from a configurable assessment plan.&lt;/p&gt;&#xA;&lt;p&gt;The workflow merges section rosters, associates gradebook records with roster attributes, and evaluates selected assignments against specified thresholds. Assessment items can target particular majors and retain their own student populations and reporting totals.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Sphinx to Hugo</title>
				<link>https://uwf-fang.github.io/projects/sphinx-to-hugo/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://uwf-fang.github.io/projects/sphinx-to-hugo/</guid>
				<description>&lt;p&gt;Sphinx to Hugo is a Python command-line tool for moving documentation into a Hugo website. It uses Sphinx to parse source documents and resolve references, then extends the upstream Markdown builder to produce Hugo content and supporting files.&lt;/p&gt;&#xA;&lt;p&gt;The converter writes page metadata, preserves supported code, math, figures, tables, and downloads, and records toctree relationships in a separate navigation manifest. Graphviz diagrams become SVG files with their DOT source retained. The output includes a small Hugo site for checking the conversion.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
