raymondEDS commited on
Commit
556462f
Β·
1 Parent(s): 2bd6e33

Week 3 content

Browse files
Files changed (3) hide show
  1. Reference/W3 - Debate hwo .md +330 -0
  2. src/main.py +5 -6
  3. src/views/week3.py +252 -0
Reference/W3 - Debate hwo .md ADDED
@@ -0,0 +1,330 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Week 3: How to Do a Case
2
+
3
+ # **Learning Objectives**
4
+
5
+ ### **🎯 What You’ll Learn Today:**
6
+
7
+ * What an **Affirmative (AF)** case is
8
+ * What a **Disadvantage (DA)** is
9
+ * How both are structured and used to win debates
10
+
11
+ ---
12
+
13
+ # Lecture Materials
14
+
15
+ ### **🏁 The Case**
16
+
17
+ In debate, the **case** is the main prepared argument that a debater presents to support their side.
18
+
19
+ * The **Affirmative (AF)** side **supports** the resolution and gives a plan to fix a problem. They have a full 6 minutes in their first speech to explain their case.
20
+
21
+ * The **Negative (Neg)** side **opposes** the AF plan. In their first speech (called the 1NC), they usually get **3.5 to 4.5 minutes** to explain why the plan is bad and start responding to the AF.
22
+
23
+ ###
24
+
25
+ ### **βœ… Affirmative Case (AF)**
26
+
27
+ The **Affirmative Case** (AF) is usually where the team introduces a **specific plan** to fix a real-world issue. Instead of talking about the resolution in a general way, they make it **more specific** by focusing on a certain part of it.
28
+
29
+ **Example**: If the resolution is β€œStates should ban nuclear weapons,” the AF might say **India and Pakistan** should can nuclear weaponsβ€”not every country.
30
+
31
+ **πŸ“Œ Why limit the resolution?**
32
+
33
+ * It helps the AF **prepare better** because they know what arguments might come up.
34
+
35
+ * It makes the debate **more focused and deeper**.
36
+
37
+ * It lets the AF **β€œcontrol the round”** by surprising the Neg with a unique or new plan.
38
+
39
+ This strategy is sometimes called β€œ**breaking new**”—using a plan the Neg hasn’t heard before, which makes it harder for them to respond.
40
+
41
+ ### **🧩 Structure of an AF Case**
42
+
43
+ Remember: A strong AF case includes these five parts, known as the **stock issues**. Use the acronym **SHITS** to remember them.
44
+
45
+ #### **S – Significance**
46
+
47
+ πŸ—£οΈ **What is it?**
48
+ Significance explains **why the issue is important** and **why people should care**.
49
+
50
+ βœ… **Why it matters:**
51
+ If the judge doesn’t think the problem is serious, they won’t care about solving it. You need to show that the issue has big consequences.
52
+
53
+ πŸ” **Example:**
54
+
55
+ β€œIf India and Pakistan don’t reduce their nuclear weapons, a nuclear war could happen and harm millions of people.”
56
+
57
+ #### **H – Harms**
58
+
59
+ πŸ—£οΈ **What is it?**
60
+ Harms are the **bad things happening right now** because the problem hasn’t been solved yet.
61
+
62
+ βœ… **Why it matters:**
63
+ This shows the **urgency** of the problem. Without clear harms, your plan might seem unnecessary.
64
+
65
+ πŸ” **Example:**
66
+
67
+ β€œRight now, there is rising tension between India and Pakistan. One small conflict could turn into a nuclear war.”
68
+
69
+ #### **I – Inherency**
70
+
71
+ πŸ—£οΈ **What is it?**
72
+ Inherency explains **why the problem still exists** and **what’s stopping it from being fixed**.
73
+
74
+ βœ… **Why it matters:**
75
+ If the problem is already being solved or the plan already exists, then there's **no reason to vote for your plan**. You have to prove change won’t happen unless the plan is passed.
76
+
77
+ πŸ” **Example:**
78
+
79
+ β€œEven though nuclear war is dangerous, there are **no current agreements** that force India and Pakistan to disarm. Each country is waiting for the other to go first.”
80
+
81
+ #### **T – Topicality**
82
+
83
+ πŸ—£οΈ **What is it?**
84
+ Topicality shows that your plan actually fits the **debate topic (resolution)**.
85
+
86
+ βœ… **Why it matters:**
87
+ If your plan isn’t related to the resolution, the judge **can’t vote for you**. You need to prove you’re sticking to the topic everyone agreed to debate.
88
+
89
+ πŸ” **Example:**
90
+
91
+ **Resolution**: β€œStates ought to reduce their nuclear weapons.”
92
+ **Plan**: β€œIndia and Pakistan will reduce their nuclear weapons.”
93
+ βœ… This is topical because the plan matches the resolution.
94
+
95
+ #### **S – Solvency**
96
+
97
+ πŸ—£οΈ **What is it?**
98
+ Solvency is where you show **how your plan fixes the problem** you talked about.
99
+
100
+ βœ… **Why it matters:**
101
+ If your plan doesn’t work, it doesn’t matter how serious the harms are. You need to **prove your plan can solve them**.
102
+
103
+ πŸ” **Example:**
104
+
105
+ β€œIf India and Pakistan sign a mutual disarmament treaty, it reduces the chance of war. Our evidence shows that when countries disarm together, trust increases and conflict decreases.”
106
+
107
+ ### **❌ Offense and Disadvantages (DA)**
108
+
109
+ On the **Negative side**, offense comes from arguments **against** the AF case. These arguments are called **off-case**β€”they don’t directly respond to the AF's stock issues but instead show why the plan causes **new problems**.
110
+
111
+ These are often called **Disadvantages (DAs)**.
112
+
113
+ Use this Resolution as an example: *The U.S. federal government should increase its investment in public transportation.*
114
+
115
+ #### **1\. Uniqueness**
116
+
117
+ πŸ—£οΈ **What it is:** What’s going well right now?
118
+
119
+ πŸ” **Example:**
120
+
121
+ β€œRight now, the U.S. is keeping its debt under control. Inflation is slowing down, and interest rates are stabilizing.”
122
+
123
+ βœ… **Why it matters:**
124
+ If things are stable, you can argue that the AF plan will mess things up.
125
+
126
+ #### **2\. Link**
127
+
128
+ πŸ—£οΈ **What it is:** How does the AF plan change that?
129
+
130
+ πŸ” **Example:**
131
+
132
+ β€œThe AF plan spends $10 billion more, which increases federal debt and pushes inflation back up.”
133
+
134
+ βœ… **Why it matters:**
135
+ This shows the AF causes something bad to happen.
136
+
137
+ #### **3\. Internal Link**
138
+
139
+ πŸ—£οΈ **What it is:** What happens because of that change?
140
+
141
+ πŸ” **Example:**
142
+
143
+ β€œWhen inflation rises, the Federal Reserve raises interest rates, which slows down borrowing and weakens the economy.”
144
+
145
+ βœ… **Why it matters:**
146
+ This helps the judge understand the chain reaction that leads to the final impact.
147
+
148
+ #### **4\. Impact**
149
+
150
+ πŸ—£οΈ **What it is:** What is the bad outcome?
151
+
152
+ πŸ” **Example:**
153
+
154
+ β€œA weaker economy means job loss, especially for small businesses and low-income familiesβ€”ironically hurting many of the people the AF wants to help.”
155
+
156
+ βœ… **Why it matters:**
157
+ Impacts are how you win debates. If your impact is worse than the AF’s benefits, you win the round.
158
+
159
+ #### **5\. Terminal Impact**
160
+
161
+ πŸ—£οΈ **What it is:** What is the super bad impact that is extinction level
162
+
163
+ πŸ” **Example:**
164
+
165
+ Nuclear war
166
+
167
+ Extinction
168
+
169
+ Climate collapse
170
+
171
+ βœ… **Why it matters:**
172
+ Impacts are how you win debates. If your impact is worse than the AF’s benefits, you win the round.
173
+
174
+ ---
175
+
176
+ # **🎯 Activity: β€œBuild It and Break It”**
177
+
178
+ **Objective:** Students will build their own mini AF case (using SHITS) and respond with a DA from the negative side.
179
+
180
+ ### **Part 1: Build the AF Case**
181
+
182
+ **Instructions:**
183
+ Each group will **build a mini affirmative case** using the SHITS structure. They must write **1–2 sentences for each part**:
184
+
185
+ * **S – Significance**: Why this issue matters
186
+
187
+ * **H – Harms**: What’s wrong right now
188
+
189
+ * **I – Inherency**: Why the problem isn’t being fixed already
190
+
191
+ * **T – Topicality**: How their plan matches the resolution
192
+
193
+ * **S – Solvency**: How their plan solves the problem
194
+
195
+ πŸ“ **Optional Support**: You can give them a template like this:
196
+
197
+ **Plan Text**: The U.S. federal government will invest $10 billion to expand clean-energy public buses in urban areas.
198
+
199
+ ### **Part 2: Build a DA to Challenge a Plan**
200
+
201
+ Once every group has made their plan, **they trade plans with another group**. Their new job is to **write a DA** against the plan they received. They should include:
202
+
203
+ * **Uniqueness**: What’s good/stable about the world right now?
204
+
205
+ * **Link**: What does the plan change?
206
+
207
+ * **Internal Link** (optional): What does that lead to?
208
+
209
+ * **Impact**: What’s the bad thing that happens?
210
+
211
+ ### **πŸ—£οΈ Optional Extension: Present & Respond (5–10 mins)**
212
+
213
+ * Each group presents **their AF plan** (2 mins max).
214
+
215
+ * The opposing group presents their **DA response** (2 mins max).
216
+
217
+ * If time allows, let the original group give a short **rebuttal** (1 min).
218
+
219
+ ### **πŸ“š Learning Goals:**
220
+
221
+ * Practice **building strong, complete AF cases**
222
+
223
+ * Learn to **critically respond** using structured DAs
224
+
225
+ * Gain **confidence speaking and thinking on both sides**
226
+
227
+ # **🎯 Homework: Start your debate case**
228
+
229
+ * Start writing your debate case using the proper case structure.
230
+ * Turn in a google doc in
231
+ *
232
+
233
+ Notes for Sophie
234
+ **The Case**
235
+ The "case" is the prepared argumentation that a debater presents as a complete argument in support of or in opposition to a resolution. The affirmative has a full six minutes to present the affirmative case in the first speech. The negative case, however, is usually only three and a half to four and a half minutes long (the Negative needs to present his/her case and refute the affirmative's arguments in the 1NC).
236
+
237
+ **Disadvantage (DA)**
238
+ A disadvantage (DA or disad) has the same function as a contention in circuit debate; it is offense for the negative and a reason why the plan is bad: quite literally a disadvantage to the affirmative. It is slightly different from a more traditional contention in that it is a direct consequence of passing the plan, or a policy action, as opposed to a reason why the resolution is independently bad.
239
+ A disadvantage is a policy argument that illustrates the disadvantages of passing the affirmative through a consequentialist-style link chain.
240
+
241
+ **Affirmative Case (AF)**
242
+ Policy ACs, like other types of ACs, set up the majority of offense for the round. These ACs typically, though not always, parametrize the resolution, proposing a β€œplan:” a specific course of action.
243
+
244
+ For example, on the topic resolved: states ought to ban their nuclear arsenals, instead of defending the resolution in general, a policy AC might defend that only India and Pakistan should eliminate their nuclear weapons.
245
+
246
+ Limiting the resolution is strategic for two reasons: first of all, it limits the arguments that the negative may read, e.g. a negative argument about US or Russian nuclear arsenals now becomes irrelevant, since the affirmative is only defending the removal of nuclear arsenals by India and Pakistan. The legitimacy of the affirmative in specifying a policy proposal is debated in topicality. Secondly, limiting the resolution allows for greater depth of research, allows the debate round to focus on the major arguments from the beginning, begetting more nuance, and gives the affirmative an idea of what negative arguments will be, allowing greater β€œcontrol” over how the round plays out and better pre-round preparation. This strategic utility is increased when the affirmative β€œbreaks new,” or debuts a plan that has not been read before. This forces the negative to attempt to adapt when much of their prep and argumentation may not apply to the part of the resolution the affirmative is defending.
247
+
248
+ Structure
249
+
250
+ A policy AC must include the 5 stock issues:
251
+
252
+ **S**ignificance
253
+ **H**arms
254
+ **I**nherency
255
+ **T**opicality
256
+ **S**olvency
257
+
258
+ A helpful (school appropriate) acronym to remember this is SHITS.
259
+
260
+ **Significance**
261
+
262
+ Significance is just the reason the judge and debaters should care about the issue \--- the benefits and disadvantages of the policy proposal will intrinsically prove significance.
263
+
264
+ **Harms**
265
+
266
+ Harms are the problems with the status quo, i.e. what is the problem that will happen absent the plan’s enactment. For example, a common harm for a policy AC that India and Pakistan should eliminate their nuclear arsenals would be an argument that nuclear war between the two states is inevitable in the status quo absent the removal of nuclear weapons.
267
+
268
+ **Inherency**
269
+
270
+ Inherency is the cause of the status quo. An affirmative must be β€œinherent,” which just means that the plan proposed by the affirmative is not already in existence. For example, an affirmative plan could be β€œthe United States federal government ought to implement a carbon tax at $43 per ton of CO2.” Since there is currently no such policy in place, this AC is inherent. However, if the AC were to propose β€œPlan: the United States federal government ought to enact income taxes,” this would not be inherent since such a policy is already in existence. Absent inherency, there is no reason to vote affirmative since the policy is already in place.
271
+
272
+ There are three types of inherency \- existential/gap, structural, and attitudinal.
273
+
274
+ *Existential/gap* inherency refers to the absence of a law that would cause the aff. As of 2021, "Resolved: The United States should provide universal basic healthcare," is inherent because there is no current policy for it.
275
+
276
+ *Structural* inherency refers to the existence of a law that is preventing the aff. With the healthcare example, if there was a law preventing the government from giving any kind of welfare/benefits to the people, it would prevent universal basic healthcare from being passed.
277
+
278
+ *Attitudinal* inherency refers to an attitude that is preventing the aff from happening. People may perceive it in a negative light, and push back so it can't happen. An example is universal basic income (UBI) which is widely disputed over its ability to solve poverty.
279
+
280
+ Affs may have a combination of these types of inherencies or all three β€” they aren't mutually exclusive.
281
+
282
+ **Solvency**
283
+
284
+ Solvency is the ability of the affirmative to rectify the harms it talks about. Absent the affirmative solving for the harms, there is no reason to vote affirmative since the plan does not work. Solvency is established through a β€œsolvency mechanism,” which is a piece of evidence that explains how the policy proposal (plan) would work and its effects. For example, a policy AC about inequality might propose a plan to raise the minimum wage. This AC would then read evidence about how raising the minimum wage would rectify inequality and lift people out of poverty.
285
+
286
+ **Topicality**
287
+
288
+ Topicality is whether the affirmative is affirming the resolution. All topicality shells technically amount to this argument: "Interpretation: affirmatives must defend the resolution. Violation: The affirmative did not defend the resolution."
289
+
290
+ However, a topicality argument like this would not be particularly useful because the affirmative likely agrees with you that it should defend the resolution, but disagrees with your claim that it has not defended the resolution. Because of this, it is important that topicality arguments make clear what their criteria for "topical affirmatives" are, and why the affirmative has not met that criteria. An example on the resolution "States ought to increase production of chocolate" might be:
291
+
292
+ "Interpretation: States is a plural noun. Therefore, the affirmative must defend that multiple states ought to increase production of chocolate. Violation: The affirmative has only defended increasing chocolate production in Germany."
293
+
294
+ ###
295
+
296
+ **Offense and Disadvantages (DA)**
297
+
298
+ Offense for the negative comes in the form of β€œoff case” positions. In a traditional debate, the 1NC has contentions that explain why the resolution as a broader principle is bad. However, when debating a policy AC, this offense becomes specific reasons why the affirmative’s policy is bad. These can be very similar, e.g. on a topic about a US federal jobs guarantee, a traditional contention that says a federal jobs guarantee is bad for the economy will be nearly identical to a policy argument about the economic impacts of a jobs guarantee. In policy debate, however, these are called β€œoff case” because they are arguments that are not directly responsive to the affirmative’s argumentation. Off case arguments often come in the form of disadvantages (DA).
299
+
300
+ **Structure**
301
+
302
+ A DA has 3-4 parts: uniqueness, link, internal link, and impact.
303
+
304
+ **Uniqueness**
305
+
306
+ Uniqueness is a description of what’s going on in the status quo, or world currently. For example, uniqueness might be that a person is standing on the edge of a cliff or that the economy is doing well.
307
+
308
+ **Link**
309
+
310
+ The link is something the affirmative changes about the world. For example, a link might be that the plan pushes a person 10 feet forward on a cliff edge, or that it causes inflation.
311
+
312
+ **Internal Link**
313
+
314
+ The internal link is not a necessary part of a disadvantage (and in fact, the more internal links, the worse the DA tends to be since it becomes more attenuated), but is something the link then causes to happen. It can be thought of as a domino effect: A (the link) causes B (the internal link). An internal link could be something like inflation harms the economy.
315
+
316
+ **Impact**
317
+
318
+ The impact is what happens at the end of the disadvantage that matters. An example might be falling off a cliff (death), or economic collapse causing poverty or war.
319
+
320
+ students will understand parts (the structure) of the disadvantage ([Source](https://ld.circuitdebater.org/w/index.php?title=Disadvantages&mobileaction=toggle_view_desktop))
321
+ Affirmative constructive and policy AFs \-\> Framing ([Source](https://ld.circuitdebater.org/w/index.php/Policy#Policy_ACs))
322
+
323
+ [https://huggingface.co/spaces/raymondEDS/debate\_LMS](https://huggingface.co/spaces/raymondEDS/debate_LMS)
324
+
325
+ Scenario to be less abstract, more like a debate round
326
+ E.g. In a debate round…you have document everywhere
327
+
328
+ Only time to do one activity (from NSDA)
329
+
330
+ Skip quizzes
src/main.py CHANGED
@@ -3,11 +3,10 @@ from datetime import datetime
3
 
4
  # Import our modules
5
  from auth import show_login_page, handle_logout, is_authenticated
6
- from views.dashboard import show_dashboard
7
  from views.week1 import show_week1_content
8
  from views.week2 import show_week2_content
 
9
 
10
- from views.assignments import show_assignments
11
  from views.resources import show_resources
12
  from views.user_management import show_user_management
13
  from views.instructor_notes import show_instructor_notes
@@ -65,7 +64,7 @@ def show_main_application():
65
  # Navigation
66
  page = st.selectbox(
67
  "Course Navigation",
68
- ["Dashboard", "Week 1: Introduction to Debate", "Week 2: Research & Evidence", "User Management", "Instructor Notes"]
69
  )
70
 
71
  st.markdown("---")
@@ -81,12 +80,12 @@ def show_main_application():
81
  st.rerun()
82
 
83
  # Main content area
84
- if page == "Dashboard":
85
- show_dashboard()
86
- elif page == "Week 1: Introduction to Debate":
87
  show_week1_content()
88
  elif page == "Week 2: Research & Evidence":
89
  show_week2_content()
 
 
90
  elif page == "User Management":
91
  show_user_management()
92
  elif page == "Instructor Notes":
 
3
 
4
  # Import our modules
5
  from auth import show_login_page, handle_logout, is_authenticated
 
6
  from views.week1 import show_week1_content
7
  from views.week2 import show_week2_content
8
+ from views.week3 import show_week3_content
9
 
 
10
  from views.resources import show_resources
11
  from views.user_management import show_user_management
12
  from views.instructor_notes import show_instructor_notes
 
64
  # Navigation
65
  page = st.selectbox(
66
  "Course Navigation",
67
+ ["Week 1: Introduction to Debate", "Week 2: Research & Evidence", "Week 3: How to Do a Case", "User Management", "Instructor Notes"]
68
  )
69
 
70
  st.markdown("---")
 
80
  st.rerun()
81
 
82
  # Main content area
83
+ if page == "Week 1: Introduction to Debate":
 
 
84
  show_week1_content()
85
  elif page == "Week 2: Research & Evidence":
86
  show_week2_content()
87
+ elif page == "Week 3: How to Do a Case":
88
+ show_week3_content()
89
  elif page == "User Management":
90
  show_user_management()
91
  elif page == "Instructor Notes":
src/views/week3.py ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from supabase import create_client, Client
3
+ import os
4
+ import json
5
+ from datetime import datetime
6
+
7
+ # Helper functions (assume these are defined elsewhere as in week1.py/week2.py)
8
+ def init_supabase():
9
+ try:
10
+ url = st.secrets.get("SUPABASE_URL")
11
+ key = st.secrets.get("SUPABASE_KEY")
12
+ except:
13
+ url = os.getenv("SUPABASE_URL")
14
+ key = os.getenv("SUPABASE_KEY")
15
+ if not url or not key:
16
+ st.error("Supabase credentials not found.")
17
+ return None
18
+ return create_client(url, key)
19
+
20
+ def save_submission(username, week_number, submission_type, submission_data, score=None, max_score=None):
21
+ pass # Implement as in week1.py/week2.py
22
+
23
+ def get_existing_submission(username, week_number, submission_type):
24
+ pass # Implement as in week1.py/week2.py
25
+
26
+ def get_all_submissions(username, week_number, submission_type):
27
+ pass # Implement as in week1.py/week2.py
28
+
29
+ def show_week3_content():
30
+ """Show Week 3 content"""
31
+ st.title("πŸ—οΈ Week 3: How to Do a Case")
32
+ st.markdown("---")
33
+
34
+ # Check if user is authenticated
35
+ if not st.session_state.get('authenticated', False):
36
+ st.error("Please log in to access this content.")
37
+ return
38
+
39
+ # Get username for submissions
40
+ username = st.session_state.get('username')
41
+
42
+ # Debug: Show user information
43
+ st.sidebar.markdown("---")
44
+ st.sidebar.markdown("**Debug Info:**")
45
+ st.sidebar.write(f"Username: {username}")
46
+
47
+ if not username:
48
+ st.error("Unable to retrieve user information. Please try logging in again.")
49
+ return
50
+
51
+ # Week overview
52
+ st.markdown("""
53
+ ## 🎯 Learning Objectives
54
+ - Understand the structure of an Affirmative (AF) case using SHITS (Significance, Harms, Inherency, Topicality, Solvency)
55
+ - Understand the structure of a Disadvantage (DA) and how to challenge a plan
56
+ - Practice building and critiquing debate cases
57
+ """)
58
+
59
+ # Content tabs
60
+ tab1, tab2, tab3, tab4 = st.tabs([
61
+ "🎯 Opening Activity", "πŸ“– Lecture Materials", "πŸ“ Activities", "πŸ“š Homework"
62
+ ])
63
+
64
+ with tab1:
65
+ st.subheader("🎯 Opening Activity: What Makes a Good Case?")
66
+ st.markdown("""
67
+ **For Individual Study:** Think about a time you tried to convince someone of something important. What made your argument strong or weak? Write down your thoughts.
68
+
69
+ **For Classroom Use:** Discuss in pairs or small groups: What do you think makes a debate case effective? Share examples of strong and weak arguments you've heard.
70
+ """)
71
+ st.markdown("---")
72
+ st.markdown("**Reflection Questions:**")
73
+ reflection_questions = [
74
+ "What do you think is the most important part of a debate case?",
75
+ "Have you ever heard a debate case that was especially convincing or unconvincing? Why?",
76
+ "What do you hope to learn about case writing this week?"
77
+ ]
78
+ reflection_answers = []
79
+ for i, question in enumerate(reflection_questions, 1):
80
+ answer = st.text_area(f"Question {i}: {question}", key=f"week3_reflection_{i}", height=100)
81
+ reflection_answers.append(answer)
82
+ if st.button("Submit Reflection", key="week3_reflection_submit"):
83
+ if all(reflection_answers):
84
+ submission_data = {
85
+ "questions": [
86
+ {
87
+ "id": f"reflection_{i+1}",
88
+ "type": "textarea",
89
+ "question": question,
90
+ "student_answer": answer,
91
+ "max_length": 500
92
+ }
93
+ for i, (question, answer) in enumerate(zip(reflection_questions, reflection_answers))
94
+ ]
95
+ }
96
+ if save_submission(username, 3, 'reflection', submission_data):
97
+ st.success("βœ… Reflection submitted successfully!")
98
+ st.rerun()
99
+ else:
100
+ st.error("❌ Failed to submit reflection. Please try again.")
101
+ else:
102
+ st.warning("Please answer all reflection questions before submitting.")
103
+
104
+ with tab2:
105
+ st.subheader("πŸ“– Lecture Materials")
106
+ st.markdown("""
107
+ ## The Affirmative (AF) Case Structure: SHITS
108
+ - **Significance:** Why is the issue important? Why should people care?
109
+ - **Harms:** What bad things are happening now because the problem isn't solved?
110
+ - **Inherency:** Why does the problem still exist? What's stopping it from being fixed?
111
+ - **Topicality:** How does your plan fit the debate topic (resolution)?
112
+ - **Solvency:** How does your plan fix the problem?
113
+
114
+ ### Example (Resolution: "States should ban nuclear weapons")
115
+ - **Significance:** "If India and Pakistan don't reduce their nuclear weapons, a nuclear war could happen and harm millions."
116
+ - **Harms:** "Rising tension between India and Pakistan could lead to nuclear war."
117
+ - **Inherency:** "No current agreements force India and Pakistan to disarm. Each is waiting for the other."
118
+ - **Topicality:** "Our plan is for India and Pakistan to reduce nuclear weapons, which matches the resolution."
119
+ - **Solvency:** "A mutual disarmament treaty reduces the chance of war. Evidence shows joint disarmament builds trust."
120
+
121
+ ## The Disadvantage (DA) Structure
122
+ - **Uniqueness:** What's good or stable about the world right now?
123
+ - **Link:** How does the AF plan change that?
124
+ - **Internal Link:** What does that change lead to?
125
+ - **Impact:** What's the bad thing that happens?
126
+ - **Terminal Impact:** What is the worst-case scenario (e.g., extinction)?
127
+
128
+ ### Example (Resolution: "The U.S. federal government should increase its investment in public transportation.")
129
+ - **Uniqueness:** "U.S. debt is under control; inflation is slowing."
130
+ - **Link:** "The plan spends $10B more, increasing debt and inflation."
131
+ - **Internal Link:** "Higher inflation leads to higher interest rates, slowing the economy."
132
+ - **Impact:** "A weaker economy means job loss, especially for vulnerable groups."
133
+ - **Terminal Impact:** "Economic collapse or worse."
134
+ """)
135
+
136
+ with tab3:
137
+ st.subheader("πŸ“ Activities: Build It and Break It")
138
+ st.markdown("""
139
+ ### πŸ“„ Example Debate Case
140
+ **Before starting the activities, please review this example debate case:**
141
+ """)
142
+ st.markdown("[πŸ“‹ View Example Debate Case](https://docs.google.com/document/d/1J8Unkklwhk778jcARshISK0AdBZ34XikQpeBDAWAxY0/edit?tab=t.3t21ivxifp52#heading=h.vsxctn9u5gyw)")
143
+ st.markdown("---")
144
+ st.markdown("""
145
+ ### Part 1: Build the AF Case (SHITS)
146
+ **Instructions:** Write 1–2 sentences for each part of the SHITS structure for a plan of your choice.
147
+ """)
148
+ st.markdown("**Plan Text Example:** The U.S. federal government will invest $10 billion to expand clean-energy public buses in urban areas.")
149
+ st.markdown("---")
150
+ st.markdown("**Submit your AF Case (SHITS):**")
151
+ shits_fields = [
152
+ ("Significance", "Why this issue matters"),
153
+ ("Harms", "What’s wrong right now"),
154
+ ("Inherency", "Why the problem isn’t being fixed already"),
155
+ ("Topicality", "How your plan matches the resolution"),
156
+ ("Solvency", "How your plan solves the problem")
157
+ ]
158
+ shits_answers = []
159
+ for label, help_text in shits_fields:
160
+ answer = st.text_area(f"{label}", help=help_text, key=f"week3_shits_{label}")
161
+ shits_answers.append(answer)
162
+ if st.button("Submit AF Case (SHITS)", key="week3_shits_submit"):
163
+ if all(shits_answers):
164
+ submission_data = {
165
+ "questions": [
166
+ {
167
+ "id": f"shits_{label.lower()}",
168
+ "type": "textarea",
169
+ "question": label,
170
+ "student_answer": answer,
171
+ "max_length": 500
172
+ }
173
+ for (label, _), answer in zip(shits_fields, shits_answers)
174
+ ]
175
+ }
176
+ if save_submission(username, 3, 'af_case', submission_data):
177
+ st.success("βœ… AF Case submitted successfully!")
178
+ st.rerun()
179
+ else:
180
+ st.error("❌ Failed to submit AF Case. Please try again.")
181
+ else:
182
+ st.warning("Please complete all fields before submitting.")
183
+ st.markdown("---")
184
+ st.markdown("### Part 2: Build a Disadvantage (DA)")
185
+ st.markdown("**Instructions:** Write a DA (Disadvantage) against a plan you received or choose. Include as many parts as you can.")
186
+ da_fields = [
187
+ ("Uniqueness", "What's good/stable about the world right now?"),
188
+ ("Link", "How does the plan change?"),
189
+ ("Internal Link", "What does that lead to? (optional)"),
190
+ ("Impact", "What's the bad thing that happens?"),
191
+ ("Terminal Impact", "What is the worst-case scenario?")
192
+ ]
193
+ da_answers = []
194
+ for label, help_text in da_fields:
195
+ answer = st.text_area(f"{label}", help=help_text, key=f"week3_da_{label}")
196
+ da_answers.append(answer)
197
+ if st.button("Submit DA", key="week3_da_submit"):
198
+ if any(da_answers):
199
+ submission_data = {
200
+ "questions": [
201
+ {
202
+ "id": f"da_{label.lower().replace(' ', '_')}",
203
+ "type": "textarea",
204
+ "question": label,
205
+ "student_answer": answer,
206
+ "max_length": 500
207
+ }
208
+ for (label, _), answer in zip(da_fields, da_answers) if answer
209
+ ]
210
+ }
211
+ if save_submission(username, 3, 'da', submission_data):
212
+ st.success("βœ… DA submitted successfully!")
213
+ st.rerun()
214
+ else:
215
+ st.error("❌ Failed to submit DA. Please try again.")
216
+ else:
217
+ st.warning("Please complete at least one field before submitting.")
218
+
219
+ with tab4:
220
+ st.subheader("πŸ“š Homework: Start Your Debate Case")
221
+ st.markdown("""
222
+ **Assignment:** Start writing your debate case using the proper case structure (SHITS for AF, DA for Neg). Turn in a Google Doc link.
223
+ """)
224
+ st.markdown("---")
225
+ st.markdown("**Submit your homework assignment:**")
226
+ google_docs_link = st.text_input(
227
+ "Paste your Google Docs link here:",
228
+ placeholder="https://docs.google.com/document/d/...",
229
+ key="week3_homework_link"
230
+ )
231
+ if st.button("Submit Homework Assignment", key="week3_homework_submit"):
232
+ if google_docs_link.strip():
233
+ if "docs.google.com" in google_docs_link:
234
+ submission_data = {
235
+ "questions": [
236
+ {
237
+ "id": "google_docs_link",
238
+ "type": "text_input",
239
+ "question": "Google Docs Link",
240
+ "student_answer": google_docs_link
241
+ }
242
+ ]
243
+ }
244
+ if save_submission(username, 3, 'homework', submission_data):
245
+ st.success("βœ… Homework assignment submitted successfully!")
246
+ st.rerun()
247
+ else:
248
+ st.error("❌ Failed to submit homework. Please try again.")
249
+ else:
250
+ st.error("❌ Please provide a valid Google Docs link.")
251
+ else:
252
+ st.warning("Please provide your Google Docs link before submitting.")