Reusable Learning Objects for Computer Science K-12 Learning & Assessment

FALL 2020 Prof. Ivon Arroyo

Student Projects for the CS890T Class Teams. CICS, University of Massachusetts Amherst VOTE HERE FOR YOUR FAVORITE PROJECT!

  1. An indexed, online resource for teachers

Katherine Thai, Miguel Fuentes, Sam Stern. Advisor: Prof. Rick Adrion

We created a custom content platform to allow teachers to upload lesson plans for a computer science curriculum as a part of the Springfield CSForAll initiative. CS ForAll is a partnership between teachers; school and district leaders; specialists from Springfield Public Schools (SPS); a partnership expert from the Five College Consortium; education, social science and computing researchers from University of Massachusetts Amherst and Rutgers University; and evaluators from SageFox Consulting Group. As a part of the initiative, teachers have developed a curriculum with detailed lesson plans to add computational thinking to K-5 classrooms.

2. A Funds of Knowledge Approach to Computational Thinking in Second Graders

Gabriel Brookman, Tessa Masis, Ishita Dasgupta, Alexandra Camero, Sheshera Mysore.

Advisors: Florence Sullivan, Sandra Botha, Jennifer Randall, Neena Thota

The purpose of this project is to design interactive games that assess computational thinking concepts such as conditional statements, decision making, scheduling, graph traversal, matchings, etc. The games are based on existing cultural knowledge of the 2nd graders that were interviewed by the team from the College of Education. Through these games, the teachers will have a more profound understanding of the students’ computational abilities as well as how they incorporate concepts learned in their daily lives while making these decisions.

To accomplish this task, our team implemented four games: 1. A bus game, in which students choose an optimal route to pick up and drop characters and take them to school. 2. An avatar design game, in which students a) create an avatar that satisfies a given set of constraints, and b) classify abstract face parts into given or self-defined categories. 3. A matching game, in which students match churchgoers to church activities in a way that satisfies their preferences. This is the game that is demonstrated in the video. 4. A calendar game, in which students create a schedule for themselves and the people around them in a way that satisfies scheduling constraints.

3. K-6 Computational Thinking

Anil Kumar Saini, Arisa Tajima, Purity Mugambi, Rajarshi Bhattacharjee, Soumyabrata Pal, Tanya Chowdhury. Advisor: Prof. Neena Thota

The set of projects mentioned here are designed to introduce students of K-6 level to computational thinking through fun and group based activities without using the actual computer.

  1. BinarySearchTree

  2. Private key encryption

  3. Sorting Algorithms

  4. Sequential and binary search

  5. GameTheory

4. BYOD - Build Your Own Device with Raspberry Pi

Mehmet Savasci, Bhawana Chhaglani, Nicolas van Kempen. Advisor: Prof. Neena Thota


Early exposure to Computer Science is known to promote a positive feedback loop of interest, self-efficacy, and persistence. The use of fun activities to teach CS fits with the growing body of STEM research that shows success in ‘hooking’ students’ interest while still at school. This project prepares a course plan that enables students to explore computing by urging them to make fun activities using a Raspberry Pi, which is a low-cost device that enables young people to dive into computing. The target audience of the course is high school students. This course basically aims to teach them how to make activities on Raspberry Pi using Scratch block-based programming language. In the context of the project, students will learn how to connect electronics components such as LEDs and buttons to RPi, how to read input from electronic components, how to define variables and manipulate them, how to write loops and if else statements, and how to use Scratch specific components such as Backdrop while making activities. Students will take self-assessments after each lesson of the course. These self-assessments will be used to check if the objective of the lesson is met. After lessons are completed, students will be expected to complete the assigned course project successfully.

5. DFA -- the Game

Ignacio Gavier, Andrew Malinsky, Hayden Carter, and Cooper Sigrist. Advisor: Prof. Ivon Arroyo


We want to teach 6th graders how to use and understand DFAs and learn it in an engaging and downright enjoyable way. It teaches the kids to intuitively understand the idea of states, transitions and machines that manipulate them. A kid should walk away from playing this game able to approach related problems with a solid foundational intuition or even perhaps a solid visualization.

6. Fun with data structures: Linked-list assignment and grading with VSCode

Hao Shi, Bochen Xu. Advisor: Prof. Neena Thota

Imagine you are an engineer of Tramlaw, a company that deploys drones to deliver life essentials in a post-apocalypse world, where everyone stays home because of biohazards outside. The drones are assigned to different distincts, each with a pre-calculated route to visit all households. In order to provide fast and responsive customer services, the drone will update the route to skip those with no active order. Your goal is to provide a linear data structure that holds the route, and allows fast update, so we can beat our competitor Nozama. Luckily, some insider told us they use arrays for the same job… In this project, you will write a linked-based implementation for the List abstract data type, as specified in structures.ListInterface. The requirement is all methods you implement must use recursion and you are NOT allowed to use any loop (such as for, while, do-while). Finally, you’ll need to write your own tests for the code; we will not be providing a comprehensive test suite.

7. Fun with Data Structures: Prioritizing Streaming Data

Rico Angell, Matheus Guedes De Andrade, and Reilly Noonan Grant. Advisor: Prof. Neena Thota

We designed and implemented a project for CMPSCI 187, the data structures and algorithms course (aka “CS 2”). The project requires students to implement an abstract heap-based priority queue. This priority queue serves as the core of a hypothetical emergency room triage system, a setting designed to be under the umbrella of “Computing for the Common Good” and promote inclusivity amongst all participants enrolled in this course in the future. The learning and assessment objectives are to: implement an efficient abstract priority queue using an array-based heap, write code adhering to the provided style guide, use abstract comparators in a meaningful context, demonstrate ability to read and understand a specification by implementing it, and continue developing the ability to write JUnit test cases from a specification. We provide students with templated code. Students are required to implement the critical components of the abstract priority queue, which we outline in the specification, as well as write tests for their code utilizing the JUnit framework. The student projects will be graded automatically using tests written to work with Gradescope.

8. Tinkering in the Makerspace

Brandon Oubre, Li Ding, Zhenyu Lei, Yuda Feng, and Jade Sheffey. Advisor: Prof. Neena Thota

This RLO is designed as a workshop that introduces students to how computers interact with the physical world. It is targeted at high school students with minimal or no programming or electronics experience and is designed to be completed at home with supplemental remote instruction. It consists of three modules, including one basic module (Simple Sensing and Actuation) and two advanced modules (The Fruit Piano, Toy Car Routine and Obstacle Avoidance). Students complete the basic module and then may choose an advanced module based on their interests. The basic module aims to introduce students to basic electronics, programming (using the ArduBlock language), and computational thinking (including concepts such as variables, conditional execution, and loops). The advanced modules aim to further encourage students to learn multidisciplinary knowledge and apply that in real-world applications. All three modules include detailed worksheets containing explanations, activities with solutions, and creative project ideas. A project-wide form is used to assess how students felt about this RLO and if it aroused their interest in STEM.

9. Programming like a Pro with Python

Kalpesh Krishna, My Phan, ​Prasanna Lakkur Subramanyam. Advisor: Prof. Neena Thota

In this project we designed a short course to use Python for automatic team assignments. We had two learning objectives in this exercise ---(1) show students how simple it is to use Python for real-world applications like automatic team assignment; (2) teach students the importance of computing for the common good. Our course is aimed at beginners, and we hope it makes them excited about Python and solving real-world problems for social good. Lessons 2, 3, and 4 introduce specific concepts in Python and contain coding and written assignments (within each colab notebook) designed to assess the learning outcome for the current lesson. Lesson 5 contains exercises designed to assess the student's ability to leverage all the concepts learned so far to build the code for automatic team assignment, which is the final project.

10. Programming like a Pro in Python

Hui Wei, Lingdong Wang, Sidong Zhang, Thuy Trang Nguyen. Advisor: Prof. Neena Thota

This project was created for high school students in order to promote their interest in computer science. The use of fun activities in this project is aimed to successfully spark interest in CS in the young audience. With help of Jupyter notebooks, the students are introduced to basic coding concepts via Python, the world's fastest growing and most popular programming language. The learning is accompanied by fun and engaging assignments and culminates with a final project. Through the course, the students will learn: (1) concepts and usage: variable, number, string, data structures, control flows, function, class, user interface. (2) programming paradigms: procedure and object oriented programming (3) how to write, debug, organize code and collaborate with others. For the assessment, students will receive several quizzes and assignments throughout the classes. They will also finish two mini-projects and one final project in teams. To evaluate how well the students learn, instructors and TAs will assess the correctness and completeness of assignments and let students give presentations to demonstrate their work.

11. Dip into Data

Kate Avery, Pracheta ​Amaranath​, Purva Pruthi. Advisor: Prof. Neena Thota

In this project, we created a summer workshop that provides an introduction to machine learning and data science to students in grades nine and ten. The workshop includes an initial 90-minute lecture using the Jupyter interactive computing environment, followed by three 60-minute meetings to cover topics more in-depth. The course teaches classification, regression, and clustering and uses real-world, socially-relevant examples. We hope to serve the dual purpose of exhibiting the capabilities of machine learning and how it can be used to address societal challenges. Student activities include hands-on exercises to reinforce key concepts and help us evaluate their understanding. Primary learning objectives include the following: A. Identify an appropriate machine learning method given a problem statement. B. Explain the difference between “training” and “testing” in a machine learning context. C. Build the logic of a simple classification, regression, or clustering algorithm from scratch. D. Explore the outcomes of classification, regression, and clustering algorithms on example data.

12. Dip into Data

Brett Mullins, Aidan O’Neill, Nicholas Perello, Dmitry Petrov. Advisor: Prof. Neena Thota

The goal of our project is to introduce 10th grade students to visualization, data analysis, and data science with Python (Pandas, Plotly/Seaborn) with help of interactive Python notebooks. We will teach students how to do basic exploratory data analysis and teach simple learning techniques such as linear regression, k-nearest neighbors, and k-means clustering to show relationships in data using US Wildfire data in a main Python notebook. In each of these sections in the main notebook students will be given examples of the topic being taught and be given the opportunity to interact with the wildfire data using the corresponding techniques. In the end, students will communicate their findings to other students via presentation usings insights found from provided Python notebooks on traffic collision data from a region of their choosing.

13. Dip into Data

Zhan Xu, Difan Liu, Chen Qu, Zhiqi Huang. Advisor: Neena Thota

Our program aims at teaching students to apply data mining techniques to discover the underlying structure of a dataset. It is designed to uplift talented rising 10th graders of color and economic disadvantage. The main part of the course is a set of carefully designed Python Notebooks served with Google Colab, as well as the corresponding lesson plans.

Students first learn the fundamentals of Python programming, followed by skills for data visualization. Then students learn a series of machine learning and data mining methods, including KNN, linear regression, and K-means clustering. This set of methods are carefully chosen to cover classification, regression, and clustering. Our program is concrete and complete. Future instructors can carry out the lessons without modifications. Our program is also reusable since it is modularized. Its visualization and data preprocessing modules can be reused in other teaching scenarios. Also, the RLO can be reused with different datasets to create different storylines for different groups of students. In addition, our program is engaging. Our courses are designed to be taught interactively with questions, in-class exercises, and group activities to keep the students engaged. Finally, we provide questions, homework, and solutions to assess the students’ understanding of the course.