<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Brjadha2</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Brjadha2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Brjadha2"/>
	<updated>2026-08-16T06:15:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167961</id>
		<title>CSC/ECE 517 Spring 2026 - E2605. Specialized Rubrics for Different Topic Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167961"/>
		<updated>2026-04-15T21:37:28Z</updated>

		<summary type="html">&lt;p&gt;Brjadha2: /* UI and Instructor Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This wiki page presents the design for Expertiza project '''E2605: Specialized Rubrics for Different Topic Types''' for CSC/ECE 517 Object-Oriented Design and Development, Spring 2026.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to let instructors use different review rubrics for different project topics within the same assignment. Expertiza currently uses the same review rubric for all submissions in an assignment, unless the assignment is configured to use different rubrics in different review rounds. This works for assignments where every topic should be evaluated with the same criteria, but it does not work well when topics require different kinds of evaluation.&lt;br /&gt;
&lt;br /&gt;
For example, an assignment might include topics related to user-interface design, machine learning, and security. A security topic may need rubric questions about threat modeling or vulnerability analysis, while a user-interface topic may need rubric questions about usability and design quality. Topic-based rubric selection allows the rubric to match the topic of the submission being reviewed.&lt;br /&gt;
&lt;br /&gt;
This document describes the motivation for the change, the proposed data model, the instructor workflow, and how Expertiza will resolve the correct review rubric based on assignment, topic, and review-round information.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This design adds topic-based review rubric selection while keeping existing behavior for assignments where topic-based rubric selection is not enabled. Instructors will associate review rubrics with topics directly from the Topics tab of Assignment creation, using dropdowns. If an assignment is configured to vary by topic, the review rubric is chosen based on the topic of the submission that is being reviewed. If topic variation is not enabled, rubric selection follows the current assignment and round logic.&lt;br /&gt;
&lt;br /&gt;
A [[Response maps|ReviewResponseMap]] identifies the team whose submission is being reviewed. The [[Signed up teams|signed_up_teams]] table identifies which topic that team selected. The [[Assignments questionnaires|assignments_questionnaires]] table will then identify which review rubric should be used for that assignment and topic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
Different project topics can require different evaluation criteria, but currently all submissions for an assignment use the same review rubric unless round-based rubric variation is configured. The current tables do not yet store which review rubric should be used for each topic, and there is no assignment flag for topic-based rubric variation. Because of this, reviewers can receive rubrics that do not match the reviewed team's topic.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The goal is to let instructors define topic-specific review rubrics without changing the overall review workflow. The design must preserve backward compatibility for existing assignments, continue to support round-based variation, and keep rubric resolution deterministic when both round and topic variation are enabled.&lt;br /&gt;
&lt;br /&gt;
== Non-Goals ==&lt;br /&gt;
&lt;br /&gt;
This change does not redesign topic signup or waitlist behavior, questionnaire authoring or import, or review mapping strategies. It only changes how the system stores and resolves rubric selection for reviews.&lt;br /&gt;
&lt;br /&gt;
== Current State ==&lt;br /&gt;
&lt;br /&gt;
The existing data model already includes the relationships needed to determine a reviewee team's topic. The [[Signed up teams|signed_up_teams]] table identifies which team has selected which topic, and review mappings already identify the reviewee team. Rubric resolution currently happens in several places, including response and scoring code paths, and is mainly driven by assignment and round context.&lt;br /&gt;
&lt;br /&gt;
The current tables do not yet store all the information needed for topic-based rubric selection. Assignments currently include &amp;lt;code&amp;gt;vary_by_round&amp;lt;/code&amp;gt; but no equivalent &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; flag, and [[Assignments questionnaires|assignments_questionnaires]] records do not have a &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; foreign key.&lt;br /&gt;
&lt;br /&gt;
== Proposed Data Model ==&lt;br /&gt;
&lt;br /&gt;
This design introduces minimal extensions to the existing schema while reusing the current rubric infrastructure. A new &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; boolean field is added to the assignments table with a default value of false. This ensures that existing assignments continue to function without any changes, and instructors can explicitly enable topic-based rubric variation only when needed.&lt;br /&gt;
&lt;br /&gt;
In addition, an optional &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; foreign key is added to the [[Assignments questionnaires|assignments_questionnaires]] table. A null &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; represents the default review rubric for the assignment. This approach allows topic-specific mappings to coexist naturally with round-based mappings through &amp;lt;code&amp;gt;used_in_round&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Indexes should be added on the new topic field and on the fields used for rubric lookup so that Expertiza can efficiently find the correct rubric for an assignment, topic, and round.&lt;br /&gt;
&lt;br /&gt;
The [[Assignments questionnaires|assignments_questionnaires]] table already indicates which rubrics are used for an assignment. Adding &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; allows one of those rubric records to apply to a specific topic instead of applying to the whole assignment. A project topic will normally have at most one review-rubric mapping, or one per round if round-based variation is enabled.&lt;br /&gt;
&lt;br /&gt;
No new questionnaire type is introduced. The new &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; field only connects an existing assignment-rubric record to a topic, and the rubric itself remains the existing questionnaire referenced by &amp;lt;code&amp;gt;questionnaire_id&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Rubric Resolution Behavior ==&lt;br /&gt;
&lt;br /&gt;
Rubric selection remains within existing Expertiza code paths. The workflow proceeds by resolving the assignment from the response map, determining whether topic variation is enabled, and, if so, resolving the reviewee team's topic. The system then looks for the best matching assignment questionnaire for that assignment, topic, and round context.&lt;br /&gt;
&lt;br /&gt;
When both round and topic variation are active, matching is deterministic. The precedence is: assignment/topic/current round, then assignment/topic/default round, then assignment/default topic/current round, and finally assignment/default topic/default round. In this precedence rule, the default topic corresponds to &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; being null, and the default round corresponds to &amp;lt;code&amp;gt;used_in_round&amp;lt;/code&amp;gt; being null.&lt;br /&gt;
&lt;br /&gt;
If no topic-specific mapping is found, the system falls back according to the defined precedence, including default round-specific rubrics for the assignment when applicable, before using the default review rubric for the assignment.&lt;br /&gt;
&lt;br /&gt;
Only the reviewee team's confirmed topic signup for the current assignment is considered, and waitlisted topic signups do not determine rubric selection.&lt;br /&gt;
&lt;br /&gt;
== UI and Instructor Workflow ==&lt;br /&gt;
&lt;br /&gt;
[[File:E2605architecture.png|800px|center|Figure: Rubric resolution architecture]]&lt;br /&gt;
&lt;br /&gt;
Instructors configure topic-based rubrics directly in assignment setup on the Topics tab. For each topic, the UI exposes dropdowns for selecting the review rubric, and when &amp;lt;code&amp;gt;vary_by_round&amp;lt;/code&amp;gt; is enabled, round-specific rubric choices are also supported. This approach keeps all configuration within the standard assignment authoring flow and avoids introducing any external components.&lt;br /&gt;
&lt;br /&gt;
The existing default review rubric for the assignment remains available as the fallback when a topic-specific rubric is not configured. Reviewers do not choose the rubric themselves; instead, they receive the questionnaire resolved automatically for the team they are reviewing.&lt;br /&gt;
&lt;br /&gt;
== API and Validation ==&lt;br /&gt;
&lt;br /&gt;
Assignment create and update flows persist &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; cleanly, and parameter naming is normalized so that there is a single canonical internal field. Assignment questionnaire updates accept an optional &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; and validate that the topic belongs to the same assignment.&lt;br /&gt;
&lt;br /&gt;
Validation ensures that &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; references an existing topic and does not cross assignment boundaries. The system also prevents duplicate review-rubric mappings for the same assignment, topic, and round combination, ensuring that rubric resolution always produces a single correct result.&lt;br /&gt;
&lt;br /&gt;
Only instructors or administrators who can edit the assignment are allowed to enable topic-based rubric variation or modify topic-rubric mappings.&lt;br /&gt;
&lt;br /&gt;
== Migration and Rollout ==&lt;br /&gt;
&lt;br /&gt;
Migration first adds &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; to assignments, followed by adding a nullable &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; to the [[Assignments questionnaires|assignments_questionnaires]] table along with the necessary foreign key and indexes. Existing rows remain valid with a null topic id and continue to represent default review rubrics for assignments.&lt;br /&gt;
&lt;br /&gt;
After deployment, instructors can enable topic variation gradually on a per-assignment basis using the existing user interface.&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
Tests verify that assignments without topic variation remain unchanged, while topic-enabled assignments correctly select topic-specific rubrics when configured. They also ensure that fallback behavior functions properly when a team has no topic or no topic-specific rubric mapping.&lt;br /&gt;
&lt;br /&gt;
Additional tests confirm deterministic precedence when both topic and round variation are enabled and ensure that scoring behavior remains consistent with the selected questionnaire.&lt;br /&gt;
&lt;br /&gt;
== Risks ==&lt;br /&gt;
&lt;br /&gt;
The main risk is ambiguity in precedence when both topic and round variation are present. This is mitigated by defining a strict lookup order and enforcing it through testing. Another risk is partial configuration, where topic variation is enabled but mappings are incomplete; this is mitigated by safe fallback behavior and validation in configuration paths.&lt;br /&gt;
&lt;br /&gt;
== Open Questions ==&lt;br /&gt;
&lt;br /&gt;
If an instructor changes a topic-rubric mapping after reviews have begun, existing responses could resolve to a different rubric unless the selected mapping is preserved. The implementation should either store the selected assignment questionnaire on the response or prevent mapping changes once reviews are underway.&lt;br /&gt;
&lt;br /&gt;
== Implementation Notes ==&lt;br /&gt;
&lt;br /&gt;
Implementation focuses on schema changes, shared internal rubric lookup logic, integration at current rubric selection call sites, user interface support on the Topics tab, and regression coverage for response and scoring paths.&lt;br /&gt;
&lt;br /&gt;
Known integration points include response questionnaire lookup, scoring maximum-score calculation, and any review form initialization path that currently assumes assignment-level rubric selection.&lt;/div&gt;</summary>
		<author><name>Brjadha2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167960</id>
		<title>CSC/ECE 517 Spring 2026 - E2605. Specialized Rubrics for Different Topic Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167960"/>
		<updated>2026-04-15T21:37:13Z</updated>

		<summary type="html">&lt;p&gt;Brjadha2: /* UI and Instructor Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This wiki page presents the design for Expertiza project '''E2605: Specialized Rubrics for Different Topic Types''' for CSC/ECE 517 Object-Oriented Design and Development, Spring 2026.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to let instructors use different review rubrics for different project topics within the same assignment. Expertiza currently uses the same review rubric for all submissions in an assignment, unless the assignment is configured to use different rubrics in different review rounds. This works for assignments where every topic should be evaluated with the same criteria, but it does not work well when topics require different kinds of evaluation.&lt;br /&gt;
&lt;br /&gt;
For example, an assignment might include topics related to user-interface design, machine learning, and security. A security topic may need rubric questions about threat modeling or vulnerability analysis, while a user-interface topic may need rubric questions about usability and design quality. Topic-based rubric selection allows the rubric to match the topic of the submission being reviewed.&lt;br /&gt;
&lt;br /&gt;
This document describes the motivation for the change, the proposed data model, the instructor workflow, and how Expertiza will resolve the correct review rubric based on assignment, topic, and review-round information.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This design adds topic-based review rubric selection while keeping existing behavior for assignments where topic-based rubric selection is not enabled. Instructors will associate review rubrics with topics directly from the Topics tab of Assignment creation, using dropdowns. If an assignment is configured to vary by topic, the review rubric is chosen based on the topic of the submission that is being reviewed. If topic variation is not enabled, rubric selection follows the current assignment and round logic.&lt;br /&gt;
&lt;br /&gt;
A [[Response maps|ReviewResponseMap]] identifies the team whose submission is being reviewed. The [[Signed up teams|signed_up_teams]] table identifies which topic that team selected. The [[Assignments questionnaires|assignments_questionnaires]] table will then identify which review rubric should be used for that assignment and topic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
Different project topics can require different evaluation criteria, but currently all submissions for an assignment use the same review rubric unless round-based rubric variation is configured. The current tables do not yet store which review rubric should be used for each topic, and there is no assignment flag for topic-based rubric variation. Because of this, reviewers can receive rubrics that do not match the reviewed team's topic.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The goal is to let instructors define topic-specific review rubrics without changing the overall review workflow. The design must preserve backward compatibility for existing assignments, continue to support round-based variation, and keep rubric resolution deterministic when both round and topic variation are enabled.&lt;br /&gt;
&lt;br /&gt;
== Non-Goals ==&lt;br /&gt;
&lt;br /&gt;
This change does not redesign topic signup or waitlist behavior, questionnaire authoring or import, or review mapping strategies. It only changes how the system stores and resolves rubric selection for reviews.&lt;br /&gt;
&lt;br /&gt;
== Current State ==&lt;br /&gt;
&lt;br /&gt;
The existing data model already includes the relationships needed to determine a reviewee team's topic. The [[Signed up teams|signed_up_teams]] table identifies which team has selected which topic, and review mappings already identify the reviewee team. Rubric resolution currently happens in several places, including response and scoring code paths, and is mainly driven by assignment and round context.&lt;br /&gt;
&lt;br /&gt;
The current tables do not yet store all the information needed for topic-based rubric selection. Assignments currently include &amp;lt;code&amp;gt;vary_by_round&amp;lt;/code&amp;gt; but no equivalent &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; flag, and [[Assignments questionnaires|assignments_questionnaires]] records do not have a &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; foreign key.&lt;br /&gt;
&lt;br /&gt;
== Proposed Data Model ==&lt;br /&gt;
&lt;br /&gt;
This design introduces minimal extensions to the existing schema while reusing the current rubric infrastructure. A new &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; boolean field is added to the assignments table with a default value of false. This ensures that existing assignments continue to function without any changes, and instructors can explicitly enable topic-based rubric variation only when needed.&lt;br /&gt;
&lt;br /&gt;
In addition, an optional &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; foreign key is added to the [[Assignments questionnaires|assignments_questionnaires]] table. A null &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; represents the default review rubric for the assignment. This approach allows topic-specific mappings to coexist naturally with round-based mappings through &amp;lt;code&amp;gt;used_in_round&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Indexes should be added on the new topic field and on the fields used for rubric lookup so that Expertiza can efficiently find the correct rubric for an assignment, topic, and round.&lt;br /&gt;
&lt;br /&gt;
The [[Assignments questionnaires|assignments_questionnaires]] table already indicates which rubrics are used for an assignment. Adding &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; allows one of those rubric records to apply to a specific topic instead of applying to the whole assignment. A project topic will normally have at most one review-rubric mapping, or one per round if round-based variation is enabled.&lt;br /&gt;
&lt;br /&gt;
No new questionnaire type is introduced. The new &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; field only connects an existing assignment-rubric record to a topic, and the rubric itself remains the existing questionnaire referenced by &amp;lt;code&amp;gt;questionnaire_id&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Rubric Resolution Behavior ==&lt;br /&gt;
&lt;br /&gt;
Rubric selection remains within existing Expertiza code paths. The workflow proceeds by resolving the assignment from the response map, determining whether topic variation is enabled, and, if so, resolving the reviewee team's topic. The system then looks for the best matching assignment questionnaire for that assignment, topic, and round context.&lt;br /&gt;
&lt;br /&gt;
When both round and topic variation are active, matching is deterministic. The precedence is: assignment/topic/current round, then assignment/topic/default round, then assignment/default topic/current round, and finally assignment/default topic/default round. In this precedence rule, the default topic corresponds to &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; being null, and the default round corresponds to &amp;lt;code&amp;gt;used_in_round&amp;lt;/code&amp;gt; being null.&lt;br /&gt;
&lt;br /&gt;
If no topic-specific mapping is found, the system falls back according to the defined precedence, including default round-specific rubrics for the assignment when applicable, before using the default review rubric for the assignment.&lt;br /&gt;
&lt;br /&gt;
Only the reviewee team's confirmed topic signup for the current assignment is considered, and waitlisted topic signups do not determine rubric selection.&lt;br /&gt;
&lt;br /&gt;
== UI and Instructor Workflow ==&lt;br /&gt;
&lt;br /&gt;
[[File:E2605architecture.png|800px|center|Figure: Rubric resolution architecture]]&lt;br /&gt;
Instructors configure topic-based rubrics directly in assignment setup on the Topics tab. For each topic, the UI exposes dropdowns for selecting the review rubric, and when &amp;lt;code&amp;gt;vary_by_round&amp;lt;/code&amp;gt; is enabled, round-specific rubric choices are also supported. This approach keeps all configuration within the standard assignment authoring flow and avoids introducing any external components.&lt;br /&gt;
&lt;br /&gt;
The existing default review rubric for the assignment remains available as the fallback when a topic-specific rubric is not configured. Reviewers do not choose the rubric themselves; instead, they receive the questionnaire resolved automatically for the team they are reviewing.&lt;br /&gt;
&lt;br /&gt;
== API and Validation ==&lt;br /&gt;
&lt;br /&gt;
Assignment create and update flows persist &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; cleanly, and parameter naming is normalized so that there is a single canonical internal field. Assignment questionnaire updates accept an optional &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; and validate that the topic belongs to the same assignment.&lt;br /&gt;
&lt;br /&gt;
Validation ensures that &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; references an existing topic and does not cross assignment boundaries. The system also prevents duplicate review-rubric mappings for the same assignment, topic, and round combination, ensuring that rubric resolution always produces a single correct result.&lt;br /&gt;
&lt;br /&gt;
Only instructors or administrators who can edit the assignment are allowed to enable topic-based rubric variation or modify topic-rubric mappings.&lt;br /&gt;
&lt;br /&gt;
== Migration and Rollout ==&lt;br /&gt;
&lt;br /&gt;
Migration first adds &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; to assignments, followed by adding a nullable &amp;lt;code&amp;gt;project_topic_id&amp;lt;/code&amp;gt; to the [[Assignments questionnaires|assignments_questionnaires]] table along with the necessary foreign key and indexes. Existing rows remain valid with a null topic id and continue to represent default review rubrics for assignments.&lt;br /&gt;
&lt;br /&gt;
After deployment, instructors can enable topic variation gradually on a per-assignment basis using the existing user interface.&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
Tests verify that assignments without topic variation remain unchanged, while topic-enabled assignments correctly select topic-specific rubrics when configured. They also ensure that fallback behavior functions properly when a team has no topic or no topic-specific rubric mapping.&lt;br /&gt;
&lt;br /&gt;
Additional tests confirm deterministic precedence when both topic and round variation are enabled and ensure that scoring behavior remains consistent with the selected questionnaire.&lt;br /&gt;
&lt;br /&gt;
== Risks ==&lt;br /&gt;
&lt;br /&gt;
The main risk is ambiguity in precedence when both topic and round variation are present. This is mitigated by defining a strict lookup order and enforcing it through testing. Another risk is partial configuration, where topic variation is enabled but mappings are incomplete; this is mitigated by safe fallback behavior and validation in configuration paths.&lt;br /&gt;
&lt;br /&gt;
== Open Questions ==&lt;br /&gt;
&lt;br /&gt;
If an instructor changes a topic-rubric mapping after reviews have begun, existing responses could resolve to a different rubric unless the selected mapping is preserved. The implementation should either store the selected assignment questionnaire on the response or prevent mapping changes once reviews are underway.&lt;br /&gt;
&lt;br /&gt;
== Implementation Notes ==&lt;br /&gt;
&lt;br /&gt;
Implementation focuses on schema changes, shared internal rubric lookup logic, integration at current rubric selection call sites, user interface support on the Topics tab, and regression coverage for response and scoring paths.&lt;br /&gt;
&lt;br /&gt;
Known integration points include response questionnaire lookup, scoring maximum-score calculation, and any review form initialization path that currently assumes assignment-level rubric selection.&lt;/div&gt;</summary>
		<author><name>Brjadha2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E2605architecture.png&amp;diff=167959</id>
		<title>File:E2605architecture.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E2605architecture.png&amp;diff=167959"/>
		<updated>2026-04-15T21:33:43Z</updated>

		<summary type="html">&lt;p&gt;Brjadha2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Brjadha2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167675</id>
		<title>CSC/ECE 517 Spring 2026 - E2605. Specialized Rubrics for Different Topic Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167675"/>
		<updated>2026-03-31T03:16:08Z</updated>

		<summary type="html">&lt;p&gt;Brjadha2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CSC/ECE 517 Spring 2026 – E2605: Specialized Rubrics for Different Topic Types =&lt;br /&gt;
&lt;br /&gt;
== 1. Overview ==&lt;br /&gt;
In the current Expertiza system, each assignment uses a single rubric. This project enables assigning different rubrics to different topics within the same assignment.&lt;br /&gt;
&lt;br /&gt;
== 2. Motivation ==&lt;br /&gt;
Expertiza supports a wide range of project types in CSC/ECE 517, including refactoring, testing, design, and documentation assignments. Each of these project types has different learning objectives and evaluation criteria. However, the current system restricts each assignment to a single rubric, forcing instructors to evaluate all topics using the same criteria regardless of their differences.&lt;br /&gt;
&lt;br /&gt;
This limitation reduces the effectiveness and fairness of assessment, as a single rubric cannot accurately capture the expectations of diverse project types. For example, a testing-focused project requires evaluation of coverage and correctness, while a design-focused project emphasizes architecture and clarity.&lt;br /&gt;
&lt;br /&gt;
By enabling specialized rubrics for each topic, instructors can align evaluation criteria with the specific goals of each project. This leads to more accurate grading, better feedback for students, and an overall improvement in the quality of assessment within the system.&lt;br /&gt;
&lt;br /&gt;
== Functional Requirements ==&lt;br /&gt;
&lt;br /&gt;
* By default, each assignment uses the rubric configured on the Rubrics tab (the assignment-level default rubric).&lt;br /&gt;
* On the Topics tab of the Assignment Edit page, instructors can assign a different rubric to each topic.&lt;br /&gt;
* If no topic-specific rubric is selected, the assignment's default rubric is automatically applied as a fallback.&lt;br /&gt;
* Rubric assignments can optionally vary per review round when the assignment has multiple rounds of review enabled.&lt;br /&gt;
* The rubric-selection logic must not reside in any controller.&lt;br /&gt;
* Resolution logic is implemented as model instance methods on &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ProjectTopic&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A new column, &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This links a questionnaire to a specific topic within an assignment.&lt;br /&gt;
* A new boolean column, &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This controls whether topic-specific rubric resolution is active for a given assignment.&lt;br /&gt;
&lt;br /&gt;
Supported rubric resolution cases:&lt;br /&gt;
* No variation — assignment default rubric used for all topics and rounds.&lt;br /&gt;
* Round-only variation — different default rubrics per round, no topic distinction.&lt;br /&gt;
* Topic-only variation — each topic can have its own rubric, same across all rounds.&lt;br /&gt;
* Topic + round variation — each topic can have a different rubric per round.&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
* Added two new API routes on the &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; resource:&lt;br /&gt;
* &amp;lt;code&amp;gt;GET /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — returns the full rubric payload for the assignment, including default rubrics, available rubrics, and per-topic rubric assignments.&lt;br /&gt;
* &amp;lt;code&amp;gt;PATCH /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — accepts rubric mapping updates and persists topic-specific rubric assignments.&lt;br /&gt;
* Both routes are handled by the &amp;lt;code&amp;gt;rubrics&amp;lt;/code&amp;gt; action in &amp;lt;code&amp;gt;assignments_topics_controller.rb&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Access is restricted to instructors, admins, and TAs with a mapping for the assignment.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; (bigint foreign key) to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table and &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; (boolean) to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table via migration &amp;lt;code&amp;gt;add_vary_by_topic_and_topic_id_to_assignment_questionnaires&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The migration is idempotent — it checks for existing columns and foreign keys before adding them, ensuring compatibility with different database states.&lt;br /&gt;
* Implemented rubric resolution methods in &amp;lt;code&amp;gt;assignment.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;rubric_mapping_for&amp;lt;/code&amp;gt; — resolves the effective rubric for a given questionnaire type, round, and topic; returns topic-specific mapping if one exists, otherwise falls back to the default.&lt;br /&gt;
* &amp;lt;code&amp;gt;specific_rubric_mapping_for&amp;lt;/code&amp;gt; — returns a topic-specific &amp;lt;code&amp;gt;AssignmentQuestionnaire&amp;lt;/code&amp;gt; record, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; is disabled or no mapping exists.&lt;br /&gt;
* &amp;lt;code&amp;gt;default_rubric_mapping_for&amp;lt;/code&amp;gt; — returns the assignment-level rubric mapping (where &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;lt;code&amp;gt;assign_topic_rubric!&amp;lt;/code&amp;gt; — upserts a topic-specific rubric mapping; destroys the mapping if &amp;lt;code&amp;gt;questionnaire_id&amp;lt;/code&amp;gt; is blank, preserving all other records.&lt;br /&gt;
* &amp;lt;code&amp;gt;clear_topic_rubric!&amp;lt;/code&amp;gt; — removes a specific topic-rubric mapping without affecting other mappings.&lt;br /&gt;
* Implemented topic-level rubric methods in &amp;lt;code&amp;gt;project_topic.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;rubric_for_review(round: nil)&amp;lt;/code&amp;gt; — returns the resolved questionnaire for this topic for a given round, delegating to &amp;lt;code&amp;gt;assignment.questionnaire_for&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;has_specific_rubric?(questionnaire_type:, round:)&amp;lt;/code&amp;gt; — returns whether this topic has an explicit rubric mapping.&lt;br /&gt;
* &amp;lt;code&amp;gt;assign_rubric!&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clear_rubric!&amp;lt;/code&amp;gt; — convenience methods that delegate to the assignment model.&lt;br /&gt;
* Created &amp;lt;code&amp;gt;spec/requests/api/v1/assignments_topics_controller_spec.rb&amp;lt;/code&amp;gt; with request specs covering:&lt;br /&gt;
* Topic-specific rubric assignment with fallback to default for unassigned topics.&lt;br /&gt;
* Persistence of topic-specific mappings without recreating or modifying the default assignment rubric.&lt;br /&gt;
* Independent per-topic, per-round rubric assignments with round-aware fallback behavior.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;spec/factories/assignment_questionnaires.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;spec/factories/signed_up_teams.rb&amp;lt;/code&amp;gt; to support test setup.&lt;br /&gt;
&lt;br /&gt;
== 3. Future Work ==&lt;br /&gt;
&lt;br /&gt;
* '''Frontend Integration''' — Implement the Topics tab UI with per-topic rubric dropdowns in the reimplementation frontend.&lt;br /&gt;
* '''Signup Sheet Display''' — Show the assigned rubric for each topic on the signup sheet so students know which rubric applies to their project.&lt;br /&gt;
* '''Additional Questionnaire Types''' — Extend topic-specific rubric support beyond &amp;lt;code&amp;gt;ReviewQuestionnaire&amp;lt;/code&amp;gt; to metareview and author feedback questionnaires.&lt;br /&gt;
* '''Query Optimization''' — Reduce per-topic database queries during rubric resolution using eager loading for assignments with many topics and rounds.&lt;br /&gt;
&lt;br /&gt;
== 4. LLM Design Conversation ==&lt;br /&gt;
* Artificially intelligent LLM models (ChatGPT, Claude.ai) were leveraged to streamline development and consult regarding critical design decisions.&lt;br /&gt;
Here is the link: https://chatgpt.com/share/69c807c8-aa54-8328-bbe0-8bbe7ce89561&lt;br /&gt;
&lt;br /&gt;
== 5. Useful Links ==&lt;br /&gt;
* https://github.com/PositivelyBookish/reimplementation-back-end&lt;br /&gt;
* https://drive.google.com/file/d/1mUPfoA5QLeuYI8_lcDCf1mx56yEg9XJq/view?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== 6. Team Information ==&lt;br /&gt;
* Vanaja Binay Agarwal (vagarwa3)&lt;br /&gt;
* Himanshu Agarwal (hagarwa4)&lt;br /&gt;
* Bhargavi Jadhav (brjadha2)&lt;br /&gt;
'''Mentor''' — Sree Tulasi Shevva&lt;/div&gt;</summary>
		<author><name>Brjadha2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167674</id>
		<title>CSC/ECE 517 Spring 2026 - E2605. Specialized Rubrics for Different Topic Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167674"/>
		<updated>2026-03-31T03:15:46Z</updated>

		<summary type="html">&lt;p&gt;Brjadha2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CSC/ECE 517 Spring 2026 – E2605: Specialized Rubrics for Different Topic Types =&lt;br /&gt;
&lt;br /&gt;
== 1. Overview ==&lt;br /&gt;
In the current Expertiza system, each assignment uses a single rubric. This project enables assigning different rubrics to different topics within the same assignment.&lt;br /&gt;
&lt;br /&gt;
== 2. Motivation ==&lt;br /&gt;
Expertiza supports a wide range of project types in CSC/ECE 517, including refactoring, testing, design, and documentation assignments. Each of these project types has different learning objectives and evaluation criteria. However, the current system restricts each assignment to a single rubric, forcing instructors to evaluate all topics using the same criteria regardless of their differences.&lt;br /&gt;
&lt;br /&gt;
This limitation reduces the effectiveness and fairness of assessment, as a single rubric cannot accurately capture the expectations of diverse project types. For example, a testing-focused project requires evaluation of coverage and correctness, while a design-focused project emphasizes architecture and clarity.&lt;br /&gt;
&lt;br /&gt;
By enabling specialized rubrics for each topic, instructors can align evaluation criteria with the specific goals of each project. This leads to more accurate grading, better feedback for students, and an overall improvement in the quality of assessment within the system.&lt;br /&gt;
&lt;br /&gt;
== Functional Requirements ==&lt;br /&gt;
&lt;br /&gt;
* By default, each assignment uses the rubric configured on the Rubrics tab (the assignment-level default rubric).&lt;br /&gt;
* On the Topics tab of the Assignment Edit page, instructors can assign a different rubric to each topic.&lt;br /&gt;
* If no topic-specific rubric is selected, the assignment's default rubric is automatically applied as a fallback.&lt;br /&gt;
* Rubric assignments can optionally vary per review round when the assignment has multiple rounds of review enabled.&lt;br /&gt;
* The rubric-selection logic must not reside in any controller.&lt;br /&gt;
* Resolution logic is implemented as model instance methods on &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ProjectTopic&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A new column, &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This links a questionnaire to a specific topic within an assignment.&lt;br /&gt;
* A new boolean column, &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This controls whether topic-specific rubric resolution is active for a given assignment.&lt;br /&gt;
&lt;br /&gt;
Supported rubric resolution cases:&lt;br /&gt;
* No variation — assignment default rubric used for all topics and rounds.&lt;br /&gt;
* Round-only variation — different default rubrics per round, no topic distinction.&lt;br /&gt;
* Topic-only variation — each topic can have its own rubric, same across all rounds.&lt;br /&gt;
* Topic + round variation — each topic can have a different rubric per round.&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
* Added two new API routes on the &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; resource:&lt;br /&gt;
* &amp;lt;code&amp;gt;GET /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — returns the full rubric payload for the assignment, including default rubrics, available rubrics, and per-topic rubric assignments.&lt;br /&gt;
* &amp;lt;code&amp;gt;PATCH /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — accepts rubric mapping updates and persists topic-specific rubric assignments.&lt;br /&gt;
* Both routes are handled by the &amp;lt;code&amp;gt;rubrics&amp;lt;/code&amp;gt; action in &amp;lt;code&amp;gt;assignments_topics_controller.rb&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Access is restricted to instructors, admins, and TAs with a mapping for the assignment.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; (bigint foreign key) to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table and &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; (boolean) to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table via migration &amp;lt;code&amp;gt;add_vary_by_topic_and_topic_id_to_assignment_questionnaires&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The migration is idempotent — it checks for existing columns and foreign keys before adding them, ensuring compatibility with different database states.&lt;br /&gt;
* Implemented rubric resolution methods in &amp;lt;code&amp;gt;assignment.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;rubric_mapping_for&amp;lt;/code&amp;gt; — resolves the effective rubric for a given questionnaire type, round, and topic; returns topic-specific mapping if one exists, otherwise falls back to the default.&lt;br /&gt;
* &amp;lt;code&amp;gt;specific_rubric_mapping_for&amp;lt;/code&amp;gt; — returns a topic-specific &amp;lt;code&amp;gt;AssignmentQuestionnaire&amp;lt;/code&amp;gt; record, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; is disabled or no mapping exists.&lt;br /&gt;
* &amp;lt;code&amp;gt;default_rubric_mapping_for&amp;lt;/code&amp;gt; — returns the assignment-level rubric mapping (where &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;lt;code&amp;gt;assign_topic_rubric!&amp;lt;/code&amp;gt; — upserts a topic-specific rubric mapping; destroys the mapping if &amp;lt;code&amp;gt;questionnaire_id&amp;lt;/code&amp;gt; is blank, preserving all other records.&lt;br /&gt;
* &amp;lt;code&amp;gt;clear_topic_rubric!&amp;lt;/code&amp;gt; — removes a specific topic-rubric mapping without affecting other mappings.&lt;br /&gt;
* Implemented topic-level rubric methods in &amp;lt;code&amp;gt;project_topic.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;rubric_for_review(round: nil)&amp;lt;/code&amp;gt; — returns the resolved questionnaire for this topic for a given round, delegating to &amp;lt;code&amp;gt;assignment.questionnaire_for&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;has_specific_rubric?(questionnaire_type:, round:)&amp;lt;/code&amp;gt; — returns whether this topic has an explicit rubric mapping.&lt;br /&gt;
* &amp;lt;code&amp;gt;assign_rubric!&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clear_rubric!&amp;lt;/code&amp;gt; — convenience methods that delegate to the assignment model.&lt;br /&gt;
* Created &amp;lt;code&amp;gt;spec/requests/api/v1/assignments_topics_controller_spec.rb&amp;lt;/code&amp;gt; with request specs covering:&lt;br /&gt;
* Topic-specific rubric assignment with fallback to default for unassigned topics.&lt;br /&gt;
* Persistence of topic-specific mappings without recreating or modifying the default assignment rubric.&lt;br /&gt;
* Independent per-topic, per-round rubric assignments with round-aware fallback behavior.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;spec/factories/assignment_questionnaires.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;spec/factories/signed_up_teams.rb&amp;lt;/code&amp;gt; to support test setup.&lt;br /&gt;
&lt;br /&gt;
== 3. Future Work ==&lt;br /&gt;
&lt;br /&gt;
* '''Frontend Integration''' — Implement the Topics tab UI with per-topic rubric dropdowns in the reimplementation frontend.&lt;br /&gt;
* '''Signup Sheet Display''' — Show the assigned rubric for each topic on the signup sheet so students know which rubric applies to their project.&lt;br /&gt;
* '''Additional Questionnaire Types''' — Extend topic-specific rubric support beyond &amp;lt;code&amp;gt;ReviewQuestionnaire&amp;lt;/code&amp;gt; to metareview and author feedback questionnaires.&lt;br /&gt;
* '''Query Optimization''' — Reduce per-topic database queries during rubric resolution using eager loading for assignments with many topics and rounds.&lt;br /&gt;
&lt;br /&gt;
== 4. LLM Design Conversation ==&lt;br /&gt;
* Artificially intelligent LLM models (ChatGPT, Claude.ai) were leveraged to streamline development and consult regarding critical design decisions.&lt;br /&gt;
Here is the link: https://chatgpt.com/share/69c807c8-aa54-8328-bbe0-8bbe7ce89561&lt;br /&gt;
&lt;br /&gt;
== 5. Useful Links ==&lt;br /&gt;
* [https://github.com/PositivelyBookish/reimplementation-back-end&lt;br /&gt;
* https://drive.google.com/file/d/1mUPfoA5QLeuYI8_lcDCf1mx56yEg9XJq/view?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== 6. Team Information ==&lt;br /&gt;
* Vanaja Binay Agarwal (vagarwa3)&lt;br /&gt;
* Himanshu Agarwal (hagarwa4)&lt;br /&gt;
* Bhargavi Jadhav (brjadha2)&lt;br /&gt;
'''Mentor''' — Sree Tulasi Shevva&lt;/div&gt;</summary>
		<author><name>Brjadha2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167673</id>
		<title>CSC/ECE 517 Spring 2026 - E2605. Specialized Rubrics for Different Topic Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167673"/>
		<updated>2026-03-31T03:14:08Z</updated>

		<summary type="html">&lt;p&gt;Brjadha2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CSC/ECE 517 Spring 2026 – E2605: Specialized Rubrics for Different Topic Types =&lt;br /&gt;
&lt;br /&gt;
== 1. Overview ==&lt;br /&gt;
In the current Expertiza system, each assignment uses a single rubric. This project enables assigning different rubrics to different topics within the same assignment.&lt;br /&gt;
&lt;br /&gt;
== 2. Motivation ==&lt;br /&gt;
Expertiza supports a wide range of project types in CSC/ECE 517, including refactoring, testing, design, and documentation assignments. Each of these project types has different learning objectives and evaluation criteria. However, the current system restricts each assignment to a single rubric, forcing instructors to evaluate all topics using the same criteria regardless of their differences.&lt;br /&gt;
&lt;br /&gt;
This limitation reduces the effectiveness and fairness of assessment, as a single rubric cannot accurately capture the expectations of diverse project types. For example, a testing-focused project requires evaluation of coverage and correctness, while a design-focused project emphasizes architecture and clarity.&lt;br /&gt;
&lt;br /&gt;
By enabling specialized rubrics for each topic, instructors can align evaluation criteria with the specific goals of each project. This leads to more accurate grading, better feedback for students, and an overall improvement in the quality of assessment within the system.&lt;br /&gt;
&lt;br /&gt;
== Functional Requirements ==&lt;br /&gt;
&lt;br /&gt;
* By default, each assignment uses the rubric configured on the Rubrics tab (the assignment-level default rubric).&lt;br /&gt;
* On the Topics tab of the Assignment Edit page, instructors can assign a different rubric to each topic.&lt;br /&gt;
* If no topic-specific rubric is selected, the assignment's default rubric is automatically applied as a fallback.&lt;br /&gt;
* Rubric assignments can optionally vary per review round when the assignment has multiple rounds of review enabled.&lt;br /&gt;
* The rubric-selection logic must not reside in any controller.&lt;br /&gt;
* Resolution logic is implemented as model instance methods on &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ProjectTopic&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A new column, &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This links a questionnaire to a specific topic within an assignment.&lt;br /&gt;
* A new boolean column, &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This controls whether topic-specific rubric resolution is active for a given assignment.&lt;br /&gt;
&lt;br /&gt;
Supported rubric resolution cases:&lt;br /&gt;
* No variation — assignment default rubric used for all topics and rounds.&lt;br /&gt;
* Round-only variation — different default rubrics per round, no topic distinction.&lt;br /&gt;
* Topic-only variation — each topic can have its own rubric, same across all rounds.&lt;br /&gt;
* Topic + round variation — each topic can have a different rubric per round.&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
* Added two new API routes on the &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; resource:&lt;br /&gt;
* &amp;lt;code&amp;gt;GET /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — returns the full rubric payload for the assignment, including default rubrics, available rubrics, and per-topic rubric assignments.&lt;br /&gt;
* &amp;lt;code&amp;gt;PATCH /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — accepts rubric mapping updates and persists topic-specific rubric assignments.&lt;br /&gt;
* Both routes are handled by the &amp;lt;code&amp;gt;rubrics&amp;lt;/code&amp;gt; action in &amp;lt;code&amp;gt;assignments_topics_controller.rb&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Access is restricted to instructors, admins, and TAs with a mapping for the assignment.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; (bigint foreign key) to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table and &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; (boolean) to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table via migration &amp;lt;code&amp;gt;add_vary_by_topic_and_topic_id_to_assignment_questionnaires&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The migration is idempotent — it checks for existing columns and foreign keys before adding them, ensuring compatibility with different database states.&lt;br /&gt;
* Implemented rubric resolution methods in &amp;lt;code&amp;gt;assignment.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;rubric_mapping_for&amp;lt;/code&amp;gt; — resolves the effective rubric for a given questionnaire type, round, and topic; returns topic-specific mapping if one exists, otherwise falls back to the default.&lt;br /&gt;
* &amp;lt;code&amp;gt;specific_rubric_mapping_for&amp;lt;/code&amp;gt; — returns a topic-specific &amp;lt;code&amp;gt;AssignmentQuestionnaire&amp;lt;/code&amp;gt; record, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; is disabled or no mapping exists.&lt;br /&gt;
* &amp;lt;code&amp;gt;default_rubric_mapping_for&amp;lt;/code&amp;gt; — returns the assignment-level rubric mapping (where &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;lt;code&amp;gt;assign_topic_rubric!&amp;lt;/code&amp;gt; — upserts a topic-specific rubric mapping; destroys the mapping if &amp;lt;code&amp;gt;questionnaire_id&amp;lt;/code&amp;gt; is blank, preserving all other records.&lt;br /&gt;
* &amp;lt;code&amp;gt;clear_topic_rubric!&amp;lt;/code&amp;gt; — removes a specific topic-rubric mapping without affecting other mappings.&lt;br /&gt;
* Implemented topic-level rubric methods in &amp;lt;code&amp;gt;project_topic.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;rubric_for_review(round: nil)&amp;lt;/code&amp;gt; — returns the resolved questionnaire for this topic for a given round, delegating to &amp;lt;code&amp;gt;assignment.questionnaire_for&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;has_specific_rubric?(questionnaire_type:, round:)&amp;lt;/code&amp;gt; — returns whether this topic has an explicit rubric mapping.&lt;br /&gt;
* &amp;lt;code&amp;gt;assign_rubric!&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clear_rubric!&amp;lt;/code&amp;gt; — convenience methods that delegate to the assignment model.&lt;br /&gt;
* Created &amp;lt;code&amp;gt;spec/requests/api/v1/assignments_topics_controller_spec.rb&amp;lt;/code&amp;gt; with request specs covering:&lt;br /&gt;
* Topic-specific rubric assignment with fallback to default for unassigned topics.&lt;br /&gt;
* Persistence of topic-specific mappings without recreating or modifying the default assignment rubric.&lt;br /&gt;
* Independent per-topic, per-round rubric assignments with round-aware fallback behavior.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;spec/factories/assignment_questionnaires.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;spec/factories/signed_up_teams.rb&amp;lt;/code&amp;gt; to support test setup.&lt;br /&gt;
&lt;br /&gt;
== 3. Future Work ==&lt;br /&gt;
&lt;br /&gt;
* '''Frontend Integration''' — Implement the Topics tab UI with per-topic rubric dropdowns in the reimplementation frontend.&lt;br /&gt;
* '''Signup Sheet Display''' — Show the assigned rubric for each topic on the signup sheet so students know which rubric applies to their project.&lt;br /&gt;
* '''Additional Questionnaire Types''' — Extend topic-specific rubric support beyond &amp;lt;code&amp;gt;ReviewQuestionnaire&amp;lt;/code&amp;gt; to metareview and author feedback questionnaires.&lt;br /&gt;
* '''Query Optimization''' — Reduce per-topic database queries during rubric resolution using eager loading for assignments with many topics and rounds.&lt;br /&gt;
&lt;br /&gt;
== 4. LLM Design Conversation ==&lt;br /&gt;
* Artificially intelligent LLM models (ChatGPT, Claude.ai) were leveraged to streamline development and consult regarding critical design decisions.&lt;br /&gt;
Here is the link: https://chatgpt.com/share/69c807c8-aa54-8328-bbe0-8bbe7ce89561&lt;br /&gt;
&lt;br /&gt;
== 5. Useful Links ==&lt;br /&gt;
* [https://github.com/PositivelyBookish/reimplementation-back-end&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== 6. Team Information ==&lt;br /&gt;
* Vanaja Binay Agarwal (vagarwa3)&lt;br /&gt;
* Himanshu Agarwal (hagarwa4)&lt;br /&gt;
* Bhargavi Jadhav (brjadha2)&lt;br /&gt;
'''Mentor''' — Sree Tulasi Shevva&lt;/div&gt;</summary>
		<author><name>Brjadha2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167672</id>
		<title>CSC/ECE 517 Spring 2026 - E2605. Specialized Rubrics for Different Topic Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167672"/>
		<updated>2026-03-31T03:12:51Z</updated>

		<summary type="html">&lt;p&gt;Brjadha2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CSC/ECE 517 Spring 2026 – E2605: Specialized Rubrics for Different Topic Types =&lt;br /&gt;
&lt;br /&gt;
== 1. Overview ==&lt;br /&gt;
In the current Expertiza system, each assignment uses a single rubric. This project enables assigning different rubrics to different topics within the same assignment.&lt;br /&gt;
&lt;br /&gt;
== 2. Motivation ==&lt;br /&gt;
Expertiza supports a wide range of project types in CSC/ECE 517, including refactoring, testing, design, and documentation assignments. Each of these project types has different learning objectives and evaluation criteria. However, the current system restricts each assignment to a single rubric, forcing instructors to evaluate all topics using the same criteria regardless of their differences.&lt;br /&gt;
&lt;br /&gt;
This limitation reduces the effectiveness and fairness of assessment, as a single rubric cannot accurately capture the expectations of diverse project types. For example, a testing-focused project requires evaluation of coverage and correctness, while a design-focused project emphasizes architecture and clarity.&lt;br /&gt;
&lt;br /&gt;
By enabling specialized rubrics for each topic, instructors can align evaluation criteria with the specific goals of each project. This leads to more accurate grading, better feedback for students, and an overall improvement in the quality of assessment within the system.&lt;br /&gt;
&lt;br /&gt;
== Functional Requirements ==&lt;br /&gt;
&lt;br /&gt;
* By default, each assignment uses the rubric configured on the Rubrics tab (the assignment-level default rubric).&lt;br /&gt;
* On the Topics tab of the Assignment Edit page, instructors can assign a different rubric to each topic.&lt;br /&gt;
* If no topic-specific rubric is selected, the assignment's default rubric is automatically applied as a fallback.&lt;br /&gt;
* Rubric assignments can optionally vary per review round when the assignment has multiple rounds of review enabled.&lt;br /&gt;
* The rubric-selection logic must not reside in any controller.&lt;br /&gt;
* Resolution logic is implemented as model instance methods on &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ProjectTopic&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A new column, &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This links a questionnaire to a specific topic within an assignment.&lt;br /&gt;
* A new boolean column, &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This controls whether topic-specific rubric resolution is active for a given assignment.&lt;br /&gt;
&lt;br /&gt;
Supported rubric resolution cases:&lt;br /&gt;
* No variation — assignment default rubric used for all topics and rounds.&lt;br /&gt;
* Round-only variation — different default rubrics per round, no topic distinction.&lt;br /&gt;
* Topic-only variation — each topic can have its own rubric, same across all rounds.&lt;br /&gt;
* Topic + round variation — each topic can have a different rubric per round.&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
* Added two new API routes on the &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; resource:&lt;br /&gt;
* &amp;lt;code&amp;gt;GET /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — returns the full rubric payload for the assignment, including default rubrics, available rubrics, and per-topic rubric assignments.&lt;br /&gt;
* &amp;lt;code&amp;gt;PATCH /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — accepts rubric mapping updates and persists topic-specific rubric assignments.&lt;br /&gt;
* Both routes are handled by the &amp;lt;code&amp;gt;rubrics&amp;lt;/code&amp;gt; action in &amp;lt;code&amp;gt;assignments_topics_controller.rb&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Access is restricted to instructors, admins, and TAs with a mapping for the assignment.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; (bigint foreign key) to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table and &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; (boolean) to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table via migration &amp;lt;code&amp;gt;add_vary_by_topic_and_topic_id_to_assignment_questionnaires&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The migration is idempotent — it checks for existing columns and foreign keys before adding them, ensuring compatibility with different database states.&lt;br /&gt;
* Implemented rubric resolution methods in &amp;lt;code&amp;gt;assignment.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;rubric_mapping_for&amp;lt;/code&amp;gt; — resolves the effective rubric for a given questionnaire type, round, and topic; returns topic-specific mapping if one exists, otherwise falls back to the default.&lt;br /&gt;
* &amp;lt;code&amp;gt;specific_rubric_mapping_for&amp;lt;/code&amp;gt; — returns a topic-specific &amp;lt;code&amp;gt;AssignmentQuestionnaire&amp;lt;/code&amp;gt; record, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; is disabled or no mapping exists.&lt;br /&gt;
* &amp;lt;code&amp;gt;default_rubric_mapping_for&amp;lt;/code&amp;gt; — returns the assignment-level rubric mapping (where &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;lt;code&amp;gt;assign_topic_rubric!&amp;lt;/code&amp;gt; — upserts a topic-specific rubric mapping; destroys the mapping if &amp;lt;code&amp;gt;questionnaire_id&amp;lt;/code&amp;gt; is blank, preserving all other records.&lt;br /&gt;
* &amp;lt;code&amp;gt;clear_topic_rubric!&amp;lt;/code&amp;gt; — removes a specific topic-rubric mapping without affecting other mappings.&lt;br /&gt;
* Implemented topic-level rubric methods in &amp;lt;code&amp;gt;project_topic.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;rubric_for_review(round: nil)&amp;lt;/code&amp;gt; — returns the resolved questionnaire for this topic for a given round, delegating to &amp;lt;code&amp;gt;assignment.questionnaire_for&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;has_specific_rubric?(questionnaire_type:, round:)&amp;lt;/code&amp;gt; — returns whether this topic has an explicit rubric mapping.&lt;br /&gt;
* &amp;lt;code&amp;gt;assign_rubric!&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clear_rubric!&amp;lt;/code&amp;gt; — convenience methods that delegate to the assignment model.&lt;br /&gt;
* Created &amp;lt;code&amp;gt;spec/requests/api/v1/assignments_topics_controller_spec.rb&amp;lt;/code&amp;gt; with request specs covering:&lt;br /&gt;
* Topic-specific rubric assignment with fallback to default for unassigned topics.&lt;br /&gt;
* Persistence of topic-specific mappings without recreating or modifying the default assignment rubric.&lt;br /&gt;
* Independent per-topic, per-round rubric assignments with round-aware fallback behavior.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;spec/factories/assignment_questionnaires.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;spec/factories/signed_up_teams.rb&amp;lt;/code&amp;gt; to support test setup.&lt;br /&gt;
&lt;br /&gt;
== 3. Future Work ==&lt;br /&gt;
&lt;br /&gt;
* '''Frontend Integration''' — Implement the Topics tab UI with per-topic rubric dropdowns in the reimplementation frontend.&lt;br /&gt;
* '''Signup Sheet Display''' — Show the assigned rubric for each topic on the signup sheet so students know which rubric applies to their project.&lt;br /&gt;
* '''Additional Questionnaire Types''' — Extend topic-specific rubric support beyond &amp;lt;code&amp;gt;ReviewQuestionnaire&amp;lt;/code&amp;gt; to metareview and author feedback questionnaires.&lt;br /&gt;
* '''Query Optimization''' — Reduce per-topic database queries during rubric resolution using eager loading for assignments with many topics and rounds.&lt;br /&gt;
&lt;br /&gt;
== 4. LLM Design Conversation ==&lt;br /&gt;
* Artificially intelligent LLM models (ChatGPT, Claude.ai) were leveraged to streamline development and consult regarding critical design decisions.&lt;br /&gt;
Here is the link: https://chatgpt.com/share/69c807c8-aa54-8328-bbe0-8bbe7ce89561&lt;br /&gt;
&lt;br /&gt;
== 5. Useful Links ==&lt;br /&gt;
* [https://github.com/PositivelyBookish/reimplementation-back-end&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== 6. Team Information ==&lt;br /&gt;
* Vanaja Binay Agarwal (vagarwa3)&lt;br /&gt;
* Himanshu Agarwal (hagarwa4)&lt;br /&gt;
* Bhargavi Jadhav (brjadha2)&lt;/div&gt;</summary>
		<author><name>Brjadha2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167671</id>
		<title>CSC/ECE 517 Spring 2026 - E2605. Specialized Rubrics for Different Topic Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167671"/>
		<updated>2026-03-31T03:10:22Z</updated>

		<summary type="html">&lt;p&gt;Brjadha2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CSC/ECE 517 Spring 2026 – E2605: Specialized Rubrics for Different Topic Types =&lt;br /&gt;
&lt;br /&gt;
== 1. Overview ==&lt;br /&gt;
In the current Expertiza system, each assignment uses a single rubric. This project enables assigning different rubrics to different topics within the same assignment.&lt;br /&gt;
&lt;br /&gt;
== 2. Motivation ==&lt;br /&gt;
Expertiza supports a wide range of project types in CSC/ECE 517, including refactoring, testing, design, and documentation assignments. Each of these project types has different learning objectives and evaluation criteria. However, the current system restricts each assignment to a single rubric, forcing instructors to evaluate all topics using the same criteria regardless of their differences.&lt;br /&gt;
&lt;br /&gt;
This limitation reduces the effectiveness and fairness of assessment, as a single rubric cannot accurately capture the expectations of diverse project types. For example, a testing-focused project requires evaluation of coverage and correctness, while a design-focused project emphasizes architecture and clarity.&lt;br /&gt;
&lt;br /&gt;
By enabling specialized rubrics for each topic, instructors can align evaluation criteria with the specific goals of each project. This leads to more accurate grading, better feedback for students, and an overall improvement in the quality of assessment within the system.&lt;br /&gt;
&lt;br /&gt;
== Functional Requirements ==&lt;br /&gt;
&lt;br /&gt;
* By default, each assignment uses the rubric configured on the Rubrics tab (the assignment-level default rubric).&lt;br /&gt;
* On the Topics tab of the Assignment Edit page, instructors can assign a different rubric to each topic.&lt;br /&gt;
* If no topic-specific rubric is selected, the assignment's default rubric is automatically applied as a fallback.&lt;br /&gt;
* Rubric assignments can optionally vary per review round when the assignment has multiple rounds of review enabled.&lt;br /&gt;
* The rubric-selection logic must not reside in any controller.&lt;br /&gt;
* Resolution logic is implemented as model instance methods on &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ProjectTopic&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A new column, &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This links a questionnaire to a specific topic within an assignment.&lt;br /&gt;
* A new boolean column, &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This controls whether topic-specific rubric resolution is active for a given assignment.&lt;br /&gt;
&lt;br /&gt;
Supported rubric resolution cases:&lt;br /&gt;
* No variation — assignment default rubric used for all topics and rounds.&lt;br /&gt;
* Round-only variation — different default rubrics per round, no topic distinction.&lt;br /&gt;
* Topic-only variation — each topic can have its own rubric, same across all rounds.&lt;br /&gt;
* Topic + round variation — each topic can have a different rubric per round.&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
* Added two new API routes on the &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; resource:&lt;br /&gt;
* &amp;lt;code&amp;gt;GET /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — returns the full rubric payload for the assignment, including default rubrics, available rubrics, and per-topic rubric assignments.&lt;br /&gt;
* &amp;lt;code&amp;gt;PATCH /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — accepts rubric mapping updates and persists topic-specific rubric assignments.&lt;br /&gt;
* Both routes are handled by the &amp;lt;code&amp;gt;rubrics&amp;lt;/code&amp;gt; action in &amp;lt;code&amp;gt;assignments_topics_controller.rb&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Access is restricted to instructors, admins, and TAs with a mapping for the assignment.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; (bigint foreign key) to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table and &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; (boolean) to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table via migration &amp;lt;code&amp;gt;add_vary_by_topic_and_topic_id_to_assignment_questionnaires&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The migration is idempotent — it checks for existing columns and foreign keys before adding them, ensuring compatibility with different database states.&lt;br /&gt;
* Implemented rubric resolution methods in &amp;lt;code&amp;gt;assignment.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;rubric_mapping_for&amp;lt;/code&amp;gt; — resolves the effective rubric for a given questionnaire type, round, and topic; returns topic-specific mapping if one exists, otherwise falls back to the default.&lt;br /&gt;
* &amp;lt;code&amp;gt;specific_rubric_mapping_for&amp;lt;/code&amp;gt; — returns a topic-specific &amp;lt;code&amp;gt;AssignmentQuestionnaire&amp;lt;/code&amp;gt; record, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; is disabled or no mapping exists.&lt;br /&gt;
* &amp;lt;code&amp;gt;default_rubric_mapping_for&amp;lt;/code&amp;gt; — returns the assignment-level rubric mapping (where &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;lt;code&amp;gt;assign_topic_rubric!&amp;lt;/code&amp;gt; — upserts a topic-specific rubric mapping; destroys the mapping if &amp;lt;code&amp;gt;questionnaire_id&amp;lt;/code&amp;gt; is blank, preserving all other records.&lt;br /&gt;
* &amp;lt;code&amp;gt;clear_topic_rubric!&amp;lt;/code&amp;gt; — removes a specific topic-rubric mapping without affecting other mappings.&lt;br /&gt;
* Implemented topic-level rubric methods in &amp;lt;code&amp;gt;project_topic.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;rubric_for_review(round: nil)&amp;lt;/code&amp;gt; — returns the resolved questionnaire for this topic for a given round, delegating to &amp;lt;code&amp;gt;assignment.questionnaire_for&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;has_specific_rubric?(questionnaire_type:, round:)&amp;lt;/code&amp;gt; — returns whether this topic has an explicit rubric mapping.&lt;br /&gt;
* &amp;lt;code&amp;gt;assign_rubric!&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clear_rubric!&amp;lt;/code&amp;gt; — convenience methods that delegate to the assignment model.&lt;br /&gt;
* Created &amp;lt;code&amp;gt;spec/requests/api/v1/assignments_topics_controller_spec.rb&amp;lt;/code&amp;gt; with request specs covering:&lt;br /&gt;
* Topic-specific rubric assignment with fallback to default for unassigned topics.&lt;br /&gt;
* Persistence of topic-specific mappings without recreating or modifying the default assignment rubric.&lt;br /&gt;
* Independent per-topic, per-round rubric assignments with round-aware fallback behavior.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;spec/factories/assignment_questionnaires.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;spec/factories/signed_up_teams.rb&amp;lt;/code&amp;gt; to support test setup.&lt;br /&gt;
&lt;br /&gt;
== 3. Future Work ==&lt;br /&gt;
* Improve frontend integration&lt;br /&gt;
* Optimize queries&lt;br /&gt;
&lt;br /&gt;
== 4. LLM Design Conversation ==&lt;br /&gt;
* Artificially intelligent LLM models (ChatGPT, Claude.ai) were leveraged to streamline development and consult regarding critical design decisions.&lt;br /&gt;
Here is the link: https://chatgpt.com/share/69c807c8-aa54-8328-bbe0-8bbe7ce89561&lt;br /&gt;
&lt;br /&gt;
== 5. Useful Links ==&lt;br /&gt;
* [https://github.com/PositivelyBookish/reimplementation-back-end&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== 6. Team Information ==&lt;br /&gt;
* Vanaja Binay Agarwal (vagarwa3)&lt;br /&gt;
* Himanshu Agarwal (hagarwa4)&lt;br /&gt;
* Bhargavi Jadhav (brjadha2)&lt;/div&gt;</summary>
		<author><name>Brjadha2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167666</id>
		<title>CSC/ECE 517 Spring 2026 - E2605. Specialized Rubrics for Different Topic Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167666"/>
		<updated>2026-03-31T03:05:38Z</updated>

		<summary type="html">&lt;p&gt;Brjadha2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CSC/ECE 517 Spring 2026 – E2605: Specialized Rubrics for Different Topic Types =&lt;br /&gt;
&lt;br /&gt;
== 1. Overview ==&lt;br /&gt;
In the current Expertiza system, each assignment uses a single rubric. This project enables assigning different rubrics to different topics within the same assignment.&lt;br /&gt;
&lt;br /&gt;
== 2. Motivation ==&lt;br /&gt;
Expertiza supports a wide range of project types in CSC/ECE 517, including refactoring, testing, design, and documentation assignments. Each of these project types has different learning objectives and evaluation criteria. However, the current system restricts each assignment to a single rubric, forcing instructors to evaluate all topics using the same criteria regardless of their differences.&lt;br /&gt;
&lt;br /&gt;
This limitation reduces the effectiveness and fairness of assessment, as a single rubric cannot accurately capture the expectations of diverse project types. For example, a testing-focused project requires evaluation of coverage and correctness, while a design-focused project emphasizes architecture and clarity.&lt;br /&gt;
&lt;br /&gt;
By enabling specialized rubrics for each topic, instructors can align evaluation criteria with the specific goals of each project. This leads to more accurate grading, better feedback for students, and an overall improvement in the quality of assessment within the system.&lt;br /&gt;
&lt;br /&gt;
== Functional Requirements ==&lt;br /&gt;
&lt;br /&gt;
* By default, each assignment uses the rubric configured on the Rubrics tab (the assignment-level default rubric).&lt;br /&gt;
* On the Topics tab of the Assignment Edit page, instructors can assign a different rubric to each topic.&lt;br /&gt;
* If no topic-specific rubric is selected, the assignment's default rubric is automatically applied as a fallback.&lt;br /&gt;
* Rubric assignments can optionally vary per review round when the assignment has multiple rounds of review enabled.&lt;br /&gt;
* The rubric-selection logic must not reside in any controller.&lt;br /&gt;
* Resolution logic is implemented as model instance methods on &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ProjectTopic&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A new column, &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This links a questionnaire to a specific topic within an assignment.&lt;br /&gt;
* A new boolean column, &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table.&lt;br /&gt;
* This controls whether topic-specific rubric resolution is active for a given assignment.&lt;br /&gt;
&lt;br /&gt;
Supported rubric resolution cases:&lt;br /&gt;
* No variation — assignment default rubric used for all topics and rounds.&lt;br /&gt;
* Round-only variation — different default rubrics per round, no topic distinction.&lt;br /&gt;
* Topic-only variation — each topic can have its own rubric, same across all rounds.&lt;br /&gt;
* Topic + round variation — each topic can have a different rubric per round.&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
* Added two new API routes on the &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; resource:&lt;br /&gt;
  ** &amp;lt;code&amp;gt;GET /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — returns the full rubric payload for the assignment, including default rubrics, available rubrics, and per-topic rubric assignments.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;PATCH /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — accepts rubric mapping updates and persists topic-specific rubric assignments.&lt;br /&gt;
  ** Both routes are handled by the &amp;lt;code&amp;gt;rubrics&amp;lt;/code&amp;gt; action in &amp;lt;code&amp;gt;assignments_topics_controller.rb&amp;lt;/code&amp;gt;.&lt;br /&gt;
  ** Access is restricted to instructors, admins, and TAs with a mapping for the assignment.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; (bigint foreign key) to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table and &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; (boolean) to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table via migration &amp;lt;code&amp;gt;add_vary_by_topic_and_topic_id_to_assignment_questionnaires&amp;lt;/code&amp;gt;.&lt;br /&gt;
  ** The migration is idempotent — it checks for existing columns and foreign keys before adding them, ensuring compatibility with different database states.&lt;br /&gt;
* Implemented rubric resolution methods in &amp;lt;code&amp;gt;assignment.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
  ** &amp;lt;code&amp;gt;rubric_mapping_for&amp;lt;/code&amp;gt; — resolves the effective rubric for a given questionnaire type, round, and topic; returns topic-specific mapping if one exists, otherwise falls back to the default.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;specific_rubric_mapping_for&amp;lt;/code&amp;gt; — returns a topic-specific &amp;lt;code&amp;gt;AssignmentQuestionnaire&amp;lt;/code&amp;gt; record, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; is disabled or no mapping exists.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;default_rubric_mapping_for&amp;lt;/code&amp;gt; — returns the assignment-level rubric mapping (where &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;).&lt;br /&gt;
  ** &amp;lt;code&amp;gt;assign_topic_rubric!&amp;lt;/code&amp;gt; — upserts a topic-specific rubric mapping; destroys the mapping if &amp;lt;code&amp;gt;questionnaire_id&amp;lt;/code&amp;gt; is blank, preserving all other records.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;clear_topic_rubric!&amp;lt;/code&amp;gt; — removes a specific topic-rubric mapping without affecting other mappings.&lt;br /&gt;
* Implemented topic-level rubric methods in &amp;lt;code&amp;gt;project_topic.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
  ** &amp;lt;code&amp;gt;rubric_for_review(round: nil)&amp;lt;/code&amp;gt; — returns the resolved questionnaire for this topic for a given round, delegating to &amp;lt;code&amp;gt;assignment.questionnaire_for&amp;lt;/code&amp;gt;.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;has_specific_rubric?(questionnaire_type:, round:)&amp;lt;/code&amp;gt; — returns whether this topic has an explicit rubric mapping.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;assign_rubric!&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clear_rubric!&amp;lt;/code&amp;gt; — convenience methods that delegate to the assignment model.&lt;br /&gt;
* Created &amp;lt;code&amp;gt;spec/requests/api/v1/assignments_topics_controller_spec.rb&amp;lt;/code&amp;gt; with request specs covering:&lt;br /&gt;
  ** Topic-specific rubric assignment with fallback to default for unassigned topics.&lt;br /&gt;
  ** Persistence of topic-specific mappings without recreating or modifying the default assignment rubric.&lt;br /&gt;
  ** Independent per-topic, per-round rubric assignments with round-aware fallback behavior.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;spec/factories/assignment_questionnaires.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;spec/factories/signed_up_teams.rb&amp;lt;/code&amp;gt; to support test setup.&lt;br /&gt;
&lt;br /&gt;
== 3. Future Work ==&lt;br /&gt;
* Improve frontend integration&lt;br /&gt;
* Optimize queries&lt;br /&gt;
&lt;br /&gt;
== 4. LLM Design Conversation ==&lt;br /&gt;
* Artificially intelligent LLM models (ChatGPT, Claude.ai) were leveraged to streamline development and consult regarding critical design decisions.&lt;br /&gt;
Here is the link: https://chatgpt.com/share/69c807c8-aa54-8328-bbe0-8bbe7ce89561&lt;br /&gt;
&lt;br /&gt;
== 5. Useful Links ==&lt;br /&gt;
* [https://github.com/PositivelyBookish/reimplementation-back-end&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== 6. Team Information ==&lt;br /&gt;
* Vanaja Binay Agarwal (vagarwa3)&lt;br /&gt;
* Himanshu Agarwal (hagarwa4)&lt;br /&gt;
* Bhargavi Jadhav (brjadha2)&lt;/div&gt;</summary>
		<author><name>Brjadha2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167665</id>
		<title>CSC/ECE 517 Spring 2026 - E2605. Specialized Rubrics for Different Topic Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2026_-_E2605._Specialized_Rubrics_for_Different_Topic_Types&amp;diff=167665"/>
		<updated>2026-03-31T03:04:50Z</updated>

		<summary type="html">&lt;p&gt;Brjadha2: Created page with &amp;quot;= CSC/ECE 517 Spring 2026 – E2605: Specialized Rubrics for Different Topic Types =  == 1. Overview == In the current Expertiza system, each assignment uses a single rubric. This project enables assigning different rubrics to different topics within the same assignment.  == 2. Motivation == Expertiza supports a wide range of project types in CSC/ECE 517, including refactoring, testing, design, and documentation assignments. Each of these project types has different lear...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CSC/ECE 517 Spring 2026 – E2605: Specialized Rubrics for Different Topic Types =&lt;br /&gt;
&lt;br /&gt;
== 1. Overview ==&lt;br /&gt;
In the current Expertiza system, each assignment uses a single rubric. This project enables assigning different rubrics to different topics within the same assignment.&lt;br /&gt;
&lt;br /&gt;
== 2. Motivation ==&lt;br /&gt;
Expertiza supports a wide range of project types in CSC/ECE 517, including refactoring, testing, design, and documentation assignments. Each of these project types has different learning objectives and evaluation criteria. However, the current system restricts each assignment to a single rubric, forcing instructors to evaluate all topics using the same criteria regardless of their differences.&lt;br /&gt;
&lt;br /&gt;
This limitation reduces the effectiveness and fairness of assessment, as a single rubric cannot accurately capture the expectations of diverse project types. For example, a testing-focused project requires evaluation of coverage and correctness, while a design-focused project emphasizes architecture and clarity.&lt;br /&gt;
&lt;br /&gt;
By enabling specialized rubrics for each topic, instructors can align evaluation criteria with the specific goals of each project. This leads to more accurate grading, better feedback for students, and an overall improvement in the quality of assessment within the system.&lt;br /&gt;
&lt;br /&gt;
== Functional Requirements ==&lt;br /&gt;
&lt;br /&gt;
* By default, each assignment uses the rubric configured on the Rubrics tab (the assignment-level default rubric).&lt;br /&gt;
* On the Topics tab of the Assignment Edit page, instructors can assign a different rubric to each topic.&lt;br /&gt;
  ** If no topic-specific rubric is selected, the assignment's default rubric is automatically applied as a fallback.&lt;br /&gt;
  ** Rubric assignments can optionally vary per review round when the assignment has multiple rounds of review enabled.&lt;br /&gt;
* The rubric-selection logic must not reside in any controller.&lt;br /&gt;
  ** Resolution logic is implemented as model instance methods on &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ProjectTopic&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A new column, &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table.&lt;br /&gt;
  ** This links a questionnaire to a specific topic within an assignment.&lt;br /&gt;
* A new boolean column, &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt;, is added to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table.&lt;br /&gt;
  ** This controls whether topic-specific rubric resolution is active for a given assignment.&lt;br /&gt;
&lt;br /&gt;
Supported rubric resolution cases:&lt;br /&gt;
* No variation — assignment default rubric used for all topics and rounds.&lt;br /&gt;
* Round-only variation — different default rubrics per round, no topic distinction.&lt;br /&gt;
* Topic-only variation — each topic can have its own rubric, same across all rounds.&lt;br /&gt;
* Topic + round variation — each topic can have a different rubric per round.&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
* Added two new API routes on the &amp;lt;code&amp;gt;Assignment&amp;lt;/code&amp;gt; resource:&lt;br /&gt;
  ** &amp;lt;code&amp;gt;GET /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — returns the full rubric payload for the assignment, including default rubrics, available rubrics, and per-topic rubric assignments.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;PATCH /assignments/:assignment_id/topics/rubrics&amp;lt;/code&amp;gt; — accepts rubric mapping updates and persists topic-specific rubric assignments.&lt;br /&gt;
  ** Both routes are handled by the &amp;lt;code&amp;gt;rubrics&amp;lt;/code&amp;gt; action in &amp;lt;code&amp;gt;assignments_topics_controller.rb&amp;lt;/code&amp;gt;.&lt;br /&gt;
  ** Access is restricted to instructors, admins, and TAs with a mapping for the assignment.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; (bigint foreign key) to the &amp;lt;code&amp;gt;assignment_questionnaires&amp;lt;/code&amp;gt; table and &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; (boolean) to the &amp;lt;code&amp;gt;assignments&amp;lt;/code&amp;gt; table via migration &amp;lt;code&amp;gt;add_vary_by_topic_and_topic_id_to_assignment_questionnaires&amp;lt;/code&amp;gt;.&lt;br /&gt;
  ** The migration is idempotent — it checks for existing columns and foreign keys before adding them, ensuring compatibility with different database states.&lt;br /&gt;
* Implemented rubric resolution methods in &amp;lt;code&amp;gt;assignment.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
  ** &amp;lt;code&amp;gt;rubric_mapping_for&amp;lt;/code&amp;gt; — resolves the effective rubric for a given questionnaire type, round, and topic; returns topic-specific mapping if one exists, otherwise falls back to the default.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;specific_rubric_mapping_for&amp;lt;/code&amp;gt; — returns a topic-specific &amp;lt;code&amp;gt;AssignmentQuestionnaire&amp;lt;/code&amp;gt; record, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;vary_by_topic&amp;lt;/code&amp;gt; is disabled or no mapping exists.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;default_rubric_mapping_for&amp;lt;/code&amp;gt; — returns the assignment-level rubric mapping (where &amp;lt;code&amp;gt;topic_id&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;).&lt;br /&gt;
  ** &amp;lt;code&amp;gt;assign_topic_rubric!&amp;lt;/code&amp;gt; — upserts a topic-specific rubric mapping; destroys the mapping if &amp;lt;code&amp;gt;questionnaire_id&amp;lt;/code&amp;gt; is blank, preserving all other records.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;clear_topic_rubric!&amp;lt;/code&amp;gt; — removes a specific topic-rubric mapping without affecting other mappings.&lt;br /&gt;
* Implemented topic-level rubric methods in &amp;lt;code&amp;gt;project_topic.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
  ** &amp;lt;code&amp;gt;rubric_for_review(round: nil)&amp;lt;/code&amp;gt; — returns the resolved questionnaire for this topic for a given round, delegating to &amp;lt;code&amp;gt;assignment.questionnaire_for&amp;lt;/code&amp;gt;.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;has_specific_rubric?(questionnaire_type:, round:)&amp;lt;/code&amp;gt; — returns whether this topic has an explicit rubric mapping.&lt;br /&gt;
  ** &amp;lt;code&amp;gt;assign_rubric!&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clear_rubric!&amp;lt;/code&amp;gt; — convenience methods that delegate to the assignment model.&lt;br /&gt;
* Created &amp;lt;code&amp;gt;spec/requests/api/v1/assignments_topics_controller_spec.rb&amp;lt;/code&amp;gt; with request specs covering:&lt;br /&gt;
  ** Topic-specific rubric assignment with fallback to default for unassigned topics.&lt;br /&gt;
  ** Persistence of topic-specific mappings without recreating or modifying the default assignment rubric.&lt;br /&gt;
  ** Independent per-topic, per-round rubric assignments with round-aware fallback behavior.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;spec/factories/assignment_questionnaires.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;spec/factories/signed_up_teams.rb&amp;lt;/code&amp;gt; to support test setup.&lt;br /&gt;
&lt;br /&gt;
== 3. Future Work ==&lt;br /&gt;
* Improve frontend integration&lt;br /&gt;
* Optimize queries&lt;br /&gt;
&lt;br /&gt;
== 4. LLM Design Conversation ==&lt;br /&gt;
* Artificially intelligent LLM models (ChatGPT, Claude.ai) were leveraged to streamline development and consult regarding critical design decisions.&lt;br /&gt;
Here is the link: https://chatgpt.com/share/69c807c8-aa54-8328-bbe0-8bbe7ce89561&lt;br /&gt;
&lt;br /&gt;
== 5. Useful Links ==&lt;br /&gt;
* [https://github.com/PositivelyBookish/reimplementation-back-end&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== 6. Team Information ==&lt;br /&gt;
* Vanaja Binay Agarwal (vagarwa3)&lt;br /&gt;
* Himanshu Agarwal (hagarwa4)&lt;br /&gt;
* Bhargavi Jadhav (brjadha2)&lt;/div&gt;</summary>
		<author><name>Brjadha2</name></author>
	</entry>
</feed>