From b8f5dc461037c7001744992aa70ec94fc4011232 Mon Sep 17 00:00:00 2001 From: Bersekas Tully <89333694+BoxiYu@users.noreply.github.com> Date: Tue, 27 Oct 2026 21:00:05 +0000 Subject: [PATCH] Add CSC3100 Data Structures to the courses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - New course card for CUHK–Shenzhen CSC3100 (Tianshu Yu, Mengmeng Liu, Li Jiang): 25 lectures, L00–L15 linked, L16–L24 marked "opens later" until the instructors' feedback, as on boxi-cs/csc3100. - 8-second loop from the L14 video (a BST search for 13), 33 KB. - Seven courses -> eight on Home, Courses and Teaching; credit line names CSC3100 among the co-designed notes. Co-Authored-By: Claude Opus 5.5 --- assets/video/courses/csc3100-poster.jpg | Bin 0 -> 17983 bytes assets/video/courses/csc3100.mp4 | Bin 0 -> 32576 bytes src/components/CourseShowcase.astro | 4 +- src/data/courses.ts | 48 +++++++++++++++++++++++- src/pages/courses.astro | 6 +-- src/pages/index.astro | 4 +- src/pages/teaching.astro | 2 +- 7 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 assets/video/courses/csc3100-poster.jpg create mode 100644 assets/video/courses/csc3100.mp4 diff --git a/assets/video/courses/csc3100-poster.jpg b/assets/video/courses/csc3100-poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f327c49670da7bfbafb26f98567ff9041e12404c GIT binary patch literal 17983 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 lpaVc8> literal 0 HcmV?d00001 diff --git a/src/components/CourseShowcase.astro b/src/components/CourseShowcase.astro index 3b460a8eb7f7a..0f9d3274ce132 100644 --- a/src/components/CourseShowcase.astro +++ b/src/components/CourseShowcase.astro @@ -132,8 +132,8 @@ const number = (n: number) => String(n).padStart(2, '0'); Interactive notes and videos built with Peiyu Zhineng (培玉智能). I designed AI for All and LA101, teach DM101 - with Mingtao Xia and Data Structures with Yintong Huo, and co-designed the AIE1001, DDA3020, and - CSC4801 notes; their slides and course content belong to each instructor. + with Mingtao Xia and Data Structures with Yintong Huo, and co-designed the AIE1001, CSC3100, + DDA3020, and CSC4801 notes; their slides and course content belong to each instructor.

diff --git a/src/data/courses.ts b/src/data/courses.ts index 2c102e180566c..68195a94fe678 100644 --- a/src/data/courses.ts +++ b/src/data/courses.ts @@ -4,7 +4,7 @@ * program, discrete mathematics, data structures, linear algebra and machine learning, to coding * agents. Boxi Yu * designed AI for All (AI 通识课) and LA101, and teaches Data Structures with - * Yintong Huo, and DM101 with Mingtao Xia; AIE1001, DDA3020 and CSC4801 are + * Yintong Huo, and DM101 with Mingtao Xia; AIE1001, CSC3100, DDA3020 and CSC4801 are * CUHK–Shenzhen courses taught by their own instructors, with notes and * videos co-designed by Boxi Yu. Lecture titles follow the published sites * under https://boxi-cs.github.io/, https://boxi-ai.github.io/ and @@ -172,6 +172,52 @@ export const featuredCourses: Course[] = [ ], tone: 'teal', }, + { + id: 'csc3100', + clip: true, + badge: 'CSC3100', + name: 'Data Structures', + level: 'Core · Java', + context: 'CUHK–Shenzhen', + role: 'Instructors', + people: [{ name: 'Tianshu Yu' }, { name: 'Mengmeng Liu' }, { name: 'Li Jiang' }], + summary: + 'From abstract data types and Java basics through sorting, lists, stacks and queues, to binary search trees, AVL and red-black trees, heaps, hashing, and graph algorithms. Step through each structure as it changes, predict what the code prints, and run every Java example yourself.', + detail: 'Notes and four 8–12 minute videos per lecture, with English and Chinese subtitles', + href: 'https://boxi-cs.github.io/csc3100/', + // Lectures 16–24 open after the instructors' feedback (boxi-cs/csc3100 PUBLISHED). + published: 16, + unit: 'lectures', + firstLecture: 0, + lectures: [ + 'Course Introduction', + 'Introduction and ADTs', + 'Java Basics', + 'Arrays', + 'Insertion Sort and Merge Sort', + 'Asymptotic Notations', + 'Divide and Conquer, Recursion', + 'Lists', + 'List Applications', + 'Stacks', + 'Queues', + 'Quicksort', + 'More Sorting Algorithms', + 'Trees and Binary Trees', + 'Binary Search Trees', + 'AVL Trees', + 'Red-Black Trees', + 'Heaps', + 'Hashing', + 'Graphs, BFS and DFS', + 'Minimum Spanning Trees', + 'Shortest Paths: Dijkstra', + 'Shortest Paths: Floyd', + 'Shortest Paths: Bellman-Ford', + 'Java Data Structures', + ], + tone: 'moss', + }, { id: 'la101', clip: true, diff --git a/src/pages/courses.astro b/src/pages/courses.astro index 1ffc5204c67b7..13f2aac1ca2b2 100644 --- a/src/pages/courses.astro +++ b/src/pages/courses.astro @@ -5,21 +5,21 @@ import CourseShowcase from '../components/CourseShowcase.astro';

Courses · interactive lecture notes and videos

Interactive notes for every lecture.

- Companion sites for seven courses, from AI literacy for everyone to building software with + Companion sites for eight courses, from AI literacy for everyone to building software with coding agents. Each lecture walks through its ideas one step at a time, asks you to predict before it shows you, and ends with a self-check.

Agentic SE open course ↓
-
+
diff --git a/src/pages/index.astro b/src/pages/index.astro index 4256ac4bb1660..1f090faa30486 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -103,12 +103,12 @@ const latest = [

Courses · interactive lecture notes

-

Seven courses with interactive lecture notes

+

Eight courses with interactive lecture notes

All courses

- For seven courses, I build or co-build one interactive page per lecture: from AI literacy for + For eight courses, I build or co-build one interactive page per lecture: from AI literacy for everyone, through a first Python program, discrete mathematics, data structures, linear algebra, and machine learning, to building software with coding agents. Every program and interactive check has been run, and every output shown is genuine. diff --git a/src/pages/teaching.astro b/src/pages/teaching.astro index 34feae63e8ff7..62b3c21c129e6 100644 --- a/src/pages/teaching.astro +++ b/src/pages/teaching.astro @@ -54,7 +54,7 @@ const mentees = [ concept, build a small artifact, and test what it can actually do.