Online Computer Science (CS) Program – Summer 2025

Youth in CS project

Welcome to Your Daily CS Hub!
Welcome back to the Virtual Intro to Computer Science Summer Program! This page is your go-to spot each day — here you’ll find the Zoom link for live sessions, today’s agenda, links to slides and recordings, activities to complete, and helpful tools like the AI chatbot. Everything you need to stay organized and engaged is right here. Let’s dive in!

Schedule: July 2, 2025 – August 15, 2025
Mondays-Wednesdays-Fridays Pacific Daylight Time (California) 9 AM – 12 PM
Central Daylight Time (Minnesota) 11 AM – 2 PM
Eastern Daylight Time (New York)
12 PM – 3 PM

Zoom Meeting Information

Yeshi is inviting you to a scheduled Zoom meeting.
Join Zoom Meeting
https://buffalo.zoom.us/j/94717093821?pwd=TKzJBqUYxYiJ69MfcwgaZTamNOH06Z.1

Meeting ID: 947 1709 3821
Passcode: 124649

Please Share your email id using this form

Week 1

Day 1 (Wednesday, July 2, 2025)
  • Introduction of the program and research by Yeshi (10 mins)
  • Member introduction (10 mins)
  • Icebreaker (40 Mins)
  • Break (10 mins)
  • Social Contract (Norms, working together, asking/sharing, grouping) (30 mins)
  • Discussing AI Use (20 mins)
  • Break (5 mins)

Code for your Identity Pie Activity (45 mins)
// 🎨 My Identity Pie – Interactive & Editable p5.js Sketch
// Students can add identity slices by clicking OR by editing the code manually.
// If manual slices are defined, click input will be disabled but download/reset will still work.

let identityLabels = [];
let identityColors = [];
let resetBtn, saveBtn;

// 📝 BONUS: Manually define identity slices (uncomment and edit below to customize your pie)
// Uncomment the lines below and modify them with your identity pieces and color names

let manualIdentity = [
//{ label: "Tibetan", color: "orange" },
];

function setup() {
createCanvas(400, 500); // Space for pie and buttons
angleMode(DEGREES);
textAlign(CENTER, CENTER);
textSize(12);
noLoop();

// ✅ Load manual entries if defined
for (let i = 0; i < manualIdentity.length; i++) {
identityLabels.push(manualIdentity[i].label);
identityColors.push(color(manualIdentity[i].color));
}

if (identityLabels.length > 0) {
redraw(); // Draw pre-filled pie
} else {
drawInstructions(); // Show start message
}

// 🔁 Reset Button
resetBtn = createButton("🔄 Reset Pie");
resetBtn.position(30, height - 40);
resetBtn.mousePressed(resetPie);

// 💾 Download Button
saveBtn = createButton("💾 Download Pie");
saveBtn.position(280, height - 40);
saveBtn.mousePressed(savePie);
}

function draw() {
background(255);

// 🧠 Heading and Info
fill(0);
textSize(18);
text("🧩 My Identity Pie", width / 2, 20);
textSize(12);

if (identityLabels.length === 0) {
text("Click anywhere to start adding parts of your identity.", width / 2, 50);
return;
} else {
if (manualIdentity.length === 0) {
text("Click again to add more slices!", width / 2, 50);
} else {
text("This pie was generated from your custom entries.", width / 2, 50);
}
}

// Draw Pie
translate(width / 2, height / 2 + 25);
let anglePerSlice = 360 / identityLabels.length;
let lastAngle = 0;

for (let i = 0; i < identityLabels.length; i++) {
fill(identityColors[i]);
stroke(0);
arc(0, 0, 300, 300, lastAngle, lastAngle + anglePerSlice, PIE);

// Labels
let midAngle = lastAngle + anglePerSlice / 2;
let x = cos(midAngle) * 100;
let y = sin(midAngle) * 100;
fill(0);
noStroke();
text(identityLabels[i], x, y);

lastAngle += anglePerSlice;
}
}

// 🖱️ Only allow clicking if not using manualIdentity
function mousePressed() {
if (manualIdentity.length > 0) return;

if (mouseY > height - 50 || mouseX < 0 || mouseX > width) return;

let newLabel = prompt("What’s one part of your identity?");
if (newLabel) {
identityLabels.push(newLabel);
identityColors.push(color(random(100, 255), random(100, 255), random(100, 255)));
redraw();
}
}

// 📌 Default instruction text
function drawInstructions() {
fill(0);
textSize(16);
text("Click to add pieces of your identity", width / 2, height / 2);
}

// 🔄 Clear everything
function resetPie() {
identityLabels = [];
identityColors = [];
redraw();
}

// 💾 Save canvas as PNG (works even if manually entered)
function savePie() {
if (identityLabels.length === 0) {
alert("Please add at least one part of your identity before downloading.");
return;
}
saveCanvas("my_identity_pie", "png");
}
Please complete this brief exit reflection before you leave.
Day 2 (Friday, July 4, 2025)
  • Guest interaction with Mr. Lobsang Gyatso la (30 Mins)
  • Setting up your first webpage on Github (40 mins)
  • Break (10 mins)
  • Draw a Tibetan Avatar Activity (40 mins)
  • Break (10 mins)
  • Draw your ancestry MAP using JavaScript (40 mins)
Please complete this brief exit reflection before you leave.

Week 2

Day 1 (Monday, July 7, 2025)
  • Introduction of the research by Yeshi and sharing Digital Assent Form (15 mins)
  • Guest Speaker Geshe Tashi Dorjee la (30 mins)
  • Break (10 mins)
  • Form Groups (Assigned)
  • Reflection on the hopes, aspirations and needs of OUR community (20 mins)
  • Make a story using the values, identity aspects and CS to address these hopes, aspirations and needs of OUR community (30 mins)
  • Break (10 mins)
  • Heather Presents a Sample Map Story (10 mins)
  • Coding Activity Using Tracing Map Snippet (40 mins)
  • Yonten Melong Demo (10 mins)
An example of the webpage we created but more standardized
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Welcome Page</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #f9f9f9;
color: #2c3e50;
margin: 0;
padding: 0;
}

.container {
max-width: 800px;
margin: auto;
padding: 40px 20px;
}

h1, h2 {
color: #34495e;
}

code {
background: #eee;
padding: 2px 6px;
border-radius: 4px;
font-family: monospace;
}

img {
width: 100%;
max-width: 300px;
border-radius: 8px;
margin-top: 10px;
}

a {
color: #2980b9;
text-decoration: none;
}

a:hover {
text-decoration: underline;
}

button {
background-color: #27ae60;
color: white;
border: none;
padding: 10px 20px;
font-size: 16px;
border-radius: 6px;
cursor: pointer;
margin-top: 10px;
}

button:hover {
background-color: #2ecc71;
}

footer {
text-align: center;
font-size: 14px;
color: #777;
margin-top: 40px;
}
</style>
</head>
<body>

<div class="container">
<h1>Welcome to My Sample Webpage</h1>
<p>This page shows basic HTML elements like headings, paragraphs, images, links, and JavaScript interactivity.</p>

<h2>HTML Elements</h2>
<ul>
<li><code>&lt;h1&gt;</code> creates a main heading</li>
<li><code>&lt;p&gt;</code> is used for paragraphs</li>
<li><code>&lt;ul&gt;</code> and <code>&lt;li&gt;</code> create lists</li>
<li><code>&lt;a&gt;</code> is a hyperlink:
<a href="https://tibetanjournal.com" target="_blank">Visit Tibetan Journal</a>
</li>
<li><code>&lt;img&gt;</code> shows images</li>
</ul>

<img src="one-monastery.jpg" alt="A beautiful Tibetan monastery">

<h2>Interactive JavaScript Example</h2>
<p>Click the button below and enter your name:</p>
<button onclick="greetUser()">Say Tashi Delek</button>

<script>
function greetUser() {
const name = prompt("What's your name?\nཁྱེད་རང་གི་མིང་ལ་ག་རེ་རེད།");
if (name) {
alert("Tashi Delek བཀྲ་ཤིས་བདེ་ལེགས།, " + name + "! 👋");
} else {
alert("You didn't enter a name.");
}
}
</script>
</div>

<footer>
&copy; 2025 Web Design Class | Created by Students
</footer>

</body>
</html>

Please complete this brief exit reflection before you leave.
Day 2 (Wednesday, July , 2025)
  • Fun quiz about Tibetan values taught by the Dalai Lama (15mins)
  • Storytelling Workshop by Dr. Sameer Honwad (20 mins)
  • Groups continue to form their stories (45 mins)
  • Groups share their students with prompts from Dr. Shakuntala Devi (20 mins)
  • Break (5 mins)
  • Students start putting their stories on the website – The starter webpages are now required to be transformed into a well formed webpage following step by step guide from Yeshi
Please complete the exit reflection before you leave
Please use this link to upload any recordings you may have