COMPSCI 879 Teaching Assistants as Tomorrow's Faculty

Reusable Learning Objects

Fall 2022

Instructor: Dr. Neena Thota

TA: Sri Prakhya


Team Members: Hamza Elhamdadi, Jarred Bettencourt, Xinzhi Liang

It is often the case in human-centered development that visualization of data is required for an accurate reflection of a process and a system. This fact makes it extremely important to be able to teach data visualization in a general way that stresses accessibility to people who would like to learn data visualization. To remedy the difficulty of teaching data visualization, we have created Margay, which is an asynchronous, web based teaching tool that teaches the fundamentals of D3.js, a popular visualization library for Javascript. Margay was created for the Intro to HCI course at UMass Amherst (CS325), and it is our hope that Margay could be used for students to brush up on D3.js skills alongside the course which is teaching HCI fundamentals. Margay includes textual lessons, problems associated with testing understanding for each lesson, and an integrated web-based IDE that allows students to run D3.js code in the browser to test their understanding of learning. We believe this hands-on approach to learning will help students to remember content with greater longevity compared to other existing D3.js teaching methods.

Socket Practice over the Internet

Team Members: Chaolong Tang, Chang Zeng, Xuming Deng

In modern society, the Internet has become part of everyone’s lives. But how many people understand the principle behind the grand internet map? Keeping this in mind, the goal of our project for COMPSCI 453 Computer Network is to encourage students to learn the basic concepts of the two most commonly used internet communication protocols: Transmission Control Protocol (TCP) and User Datagram Protocol (UDP). In this project, students are expected to build clients using UDP and TCP. We have implemented and hosted both TCP and UDP on a remote server that students could interact with using their client-side implementations. The remote server will run all the time. We have also built a logging website that will log every incoming traffic status. Students could access the website to check their connection status. Teaching faculty could also use this website to assess students' learning outcomes. The students who interact with our project will learn and practice the implementation of UDP and TCP protocols.

Interactive Tutorial for Basics of Applied Machine Learning and Data Analytics

Team Members: Calvin Chai, Yiquan Xiao, Zhangqi Duan

Our project is used for course CS325, Introduction to Human Computer Interaction. The project topic is Interactive Tutorial for Basics of Applied Machine Learning and Data Analytics. The goal of this project is to let the student who takes this course be familiar with HCI and have a basic idea of how the interface reacts when it receives action from outside and response. By studying from this tutorial, our expectation is that the students could have a basic idea of HCI. In addition, they should also have some idea of fundamental machine learning concepts such as linear classification and linear regression and they should be able to explain the reason behind how each model works and why it is efficient. Moreover, we have also designed a quiz to measure how students have learned from the tutorial and we also created a feedback form so that we could have an idea of how helpful this project is. We used Colab to demonstrate the process and the details will be further explained through our website.

Analysis of an interactive review system based on pilot studies

Team Members: Aline Weber, Hochul Hwang

Robotics is a multidisciplinary field and to have a good understanding, it may require more physical and mathematical concepts more than software knowledge. Based on feedback from TA office hours and piazza post, we found that some students needed more support on background knowledge in kinematics, dynamics, and linear algebra. Here, we develop an interactive review system to support students by providing web-based review problems in COMPSCI 403: Introduction to Robotics: Perception, Mechanics, Dynamics, and Control. To analyze the effect of our tutorial, we conducted two pilot studies, where we made improvements based on the feedback from the first pilot study. Overall, we found that our tutorial supported students with their understanding of the lecture content, related equations, and independent problem solving skills.

Feedback Assistant

Team Members: Jake Lee, Hunter McNichols, Dzung Pham

As Teaching Assistants in large classes with many programming assignments, we noticed graders are often too time-constrained to give detailed code feedback to each student. To solve this problem, we built Feedback Assistant – a lightweight cross-platform desktop app that aims to expedite the grading process for GitHub Classroom coding assignments. The tool assists graders (e.g. UCA) with providing well-structured feedback for students’ code while streamlining the required interactions with GitHub Classroom to create a consistent and expedited grading experience. Our customized feedback bank (created by sampling through students’ submissions) can help UCAs develop professional code review skills by showing them not only common students’ mistakes but also well-established best practices. By using this tool, student graders actively learn better programming and code review habits during the process of grading. We piloted Feedback Assistant with our UCAs in COMPSCI 326 Web Programming, but this tutorial asisstant could be easily extended to any course using GitHub Classroom. In our pilot, we had the UCAs use FeedbackAssistant to grade an assignment and surveyed their thoughts on the app’s usability and instructive capability.

A Tutorial for Fair Allocation under Binary Submodular Valuations

Team Members: Fadhil Kurnia, An La, Vignesh Viswanathan, Junda Wang

Game theory algorithms have many interesting real-world applications, but they are hard to understand. This motivated us to visualize a game theory algorithm to demonstrate how theoretical works are applied to solve practical problems. Fair Allocation with the Yankee Swap algorithm is a topic presented in the CS590T (Algorithmic Fairness and Strategic Behavior) course. The problem of fair allocation has difficulties in evaluating the “fairness”, and steps of the algorithm are also hard to understand. This tutorial helps students to not only understand but also analyze and evaluate the algorithm. Moreover, students should have curiosity to learn more about fair allocation or applying algorithms to real-world problems. The tutorial provides visualization for steps of the algorithm with examples. The content is organized as tasks for the purpose of active learning. At the end of the tutorial, students can send their feedback about what they learned after using the tutorial, as well as any suggestions to improve their learning experience.

Software Telephone

Team Members: Chloé Becquey, Paula Navarrete Diaz, Thanathorn Sukprasert

This game was developed for use in COMPSCI 320: Introduction to Software Engineering. Students are tested on their ability to translate a code snippet into a detailed description using words and vice versa, and they will analyze and assess their strengths and weaknesses in their communication process. The game consists of a group activity similar to the game of ‘Telephone’. A student gets a short, English description of what a small program should do, from now on referred to as a specification. The student then has to write a small program down, that does exactly what the specification says. That written program (without the specification) is given to another student in the group, who then has to write a new specification of what the program does. This newly written specification is then passed to a third student, and so on. The idea is that the descriptions will deviate in each round, potentially losing most of the original meaning, just like a game of telephone. The original description should be fairly precise, including some error handling, etc., so that there are details that can be lost to illustrate the point: the difficulty of (and importance of) precisely and unambiguously specifying behavior. The game comes with an instructor's manual.


Team Members: Harrison Geissler, Aman Malali, Sidharth Anupkrishnan

This project aims to analyze and improve the computational thinking skills of students in K2 and beyond, by creating an application to test these skills using the real-world example of cooking recipes. Kids are tasked with arranging the algorithmic steps in a recipe into a coherent recipe. The recipes can be culturally/contextually relevant by adding new ones. The instructor selects the recipes based on the information obtained via the funds of knowledge details collected through interviews with students and parents. Our application would allow the instructor to easily create and add more recipes which is reflected and displayed for the student to see. It should serve as a fun, useful metric for teachers to gauge a student’s ability in this ordering task. Through our project instructors can measure how well a student can apply computational thinking to achieve the best ordering for the recipes. When played in diverse teams, students learn to collaborate in a diverse setting and exchange regional cuisine knowledge among each other thereby creating an inclusive environment that promotes sharing and acceptance of various cultures. Our application is web-based and whose frontend involes HTML, CSS, Javascript and the backend is in Python following a REST API interface. We have hosted the application in a remote server which can be accessed by anyone publicly via a web browser.

Interactive tutorial for PageRank

Team Members: Neha Kennard, Cuong Than, Jake Goldman, Qizheng Yang

Students who learn the iterative PageRank algorithm for the first time in the class in COMPSCI 446 Search Engines, could have a hard time in understanding the concept and calculation, not to speak of how to use it. Consequently, we designed an interactive tool for students in this course, showing them the correct calculations in each iteration and visualizing the changes to enhance students’ comprehension of what is going on in the algorithm. We believe that the tool can serve as a tutorial to benefit both instructors and students. It teaches the workflow of PageRank, the impact of random surfer model and the tradeoffs between combinations of parameters. We assess the objectives by collecting and analyzing responses from students using a questionnaire which contains questions on their understanding of the specific concepts in PageRank, and also general questions on their user experience.

Interactive TCP-based Tic-Tac-Toe Game

Team Members: Roozbeh Bostandoost, Erfan Entezami, Mohammad Mehdi Rastikerdar

A course project based on concepts of computer networks called Tic-Tac-Toe was developed for INFO 203: A networked world. The game is based on TCP which helps students gain broader perspective on the foundation of TCP connection and implementing socket protocols. The project consists of two parts, theoretical with instruction and implementation section. In the first part we provided a tutorial and asked a few questions to involve students. In the implementation section, students should fill in the “To Do” parts of the code. The learning objectives were getting familiar with implementing TCP connection and socket programming, and developing students’ team work ability. Through the game, we were able to promote active learning and test students on a breadth of key concepts covered in the course. As originally intended, and evident from our feedback, we found that students appreciated and benefitted from our efforts to gamify studying computer networks via python.

Membership Inference Attacks on Machine Learning Models

Team Members: Virat Shejwalkar, Rohan Bapat, Ardavan Bozorgi

As part of COMPSCI 660 (Advanced Information Assurance), students are asked to review papers regarding privacy leakage in machine learning (ML). The instructor of the course wanted to have an assignment so that the students implement Membership Inference Attacks (MIAs) themselves and gain practical knowledge about MIAs. We designed our project to be comprised of two Jupyter Notebooks, taking the students through step-by-step questions so that in the end, they can measure the privacy leakage of an MIA, analyze two types of MIAs, and have an understanding of the privacy vs. utility tradeoff in ML models. We provided the model implementations and datasets so that students can focus on the privacy leakage aspect of the assignment. To use this project, the instructor needs to make sure that the students are familiar with the basics of ML. Since a significant amount of the course is about ML privacy and security, this requirement seems appropriate and can be fulfilled with one ML review session. The assignment was then graded and an anonymous questionnaire was shared with the students to receive their feedback. Based on the feedback, we improved the wording of the questions and added more clarifications when needed.

Programming Assignment: The Atomic Nature of Matter

Team Members: Anirudh Sabnis, Ankur Aditya, Hetvi Shastri

The professor of the CS311 Introduction to Algorithms class wished to have an auto graded assignment which could be used as a programming assignment in future CS311 class. In this assignment we have covered very important algorithm topics - Graph Search Algorithms and Recursion. Our programming assignment solves a very famous physics problem of estimating Avogadro's number. The problem can be solved using the concepts learnt by the students in the algorithms class. The assignment can be submitted on Gradescope and there is an autograder setup in both JAVA and Python. Students can submit the assignment in the language of their choice. The autograder gives immediate feedback to students. Also, the designed test cases on gradescope will check the runtime of the code and will fail if the runtime exceeds a certain threshold. This will force students to write the optimized code. We collected feedback from the present course instructors and they appreciated that this assignment will enable students to make use of algorithm concepts learnt in class in a more engaging way.

Interactive Pedagogical Notebook on Graph Algorithms

Team Members: Hieu Tran, Yuefeng Peng, Dilara Tekinoglu, Shangqun Yu

In this project, we developed a tutorial for CS 311: Introduction to Algorithms. CS 311 introduces students to a variety of techniques to design algorithms and graph algorithms are important parts of the course. However, graph algorithms are hard to understand without visualization and difficult to implement in code for beginners. Thus, we created an interactive notebook using Google colab to help students better learn these algorithms. We covered four graph algorithms in our RLO including BFS, DFS, Dijkstra, and Bellman-Ford. Our RLO can be used as an online tutorial where students can run the code and watch the illustration. They can also attempt to edit the code to get different results and answer some quizzes. After students finish the tutorial, we ask them to provide feedback and share their experience of using our tutorial.

Investigating the Dangers of Concurrent Database Access

Team Members: Matthew Weiner, Forsad Al Hossain, Joseph Black, Vikas Thamizharasan

While in the real world websites can have hundreds, thousands, or even millions of concurrent users at any given time, students in CS326: Web Programming will almost never see more than one or two users interacting with their website at the same time. Because of this, we found it important to introduce the topic of database concurrency and demonstrate the problems that can occur if they are not considered when designing a website. With our tool, students will be able to create their own custom visualization by changing the input parameters to be able to experiment and learn on their own or predict and compare the results with classmates. We recommend that instructors gauge learning through the use of the feedback form to help show students’ understanding before and after the activity.