COMPSCI 879 Teaching Assistants as Tomorrow's Faculty

Reusable Learning Objects

Fall 2021

Instructor: Dr. Neena Thota

TA: Mehmet Savasci

The Probabilistic Dungeon Crawler

Team Members: Alex Scarlatos, Shreyas Chaudhari, Minhao Cui, Uma Pal

Our goal was to gamify material for CS 240: Reasoning Under Uncertainty, to create an engaging learning environment for the course. We designed and built a web-based application where students complete probability problems that are presented as scenarios in a medieval RPG-like setting. Our hopes were that by presenting the material in a medium that students likely enjoy, we could improve engagement levels during problem-solving. We implemented a total of 6 problems that cover a variety of topics from the first half of the course. After completing the game, students filled out a survey that asked them about how difficult, effective, and fun the experience was. The initial results were promising, and we may pursue a more detailed experiment in the future to further gauge this technique’s effectiveness in improving engagement.


Team Members: Ali Naseh, Sri Prakhya

Grasping the fundamentals of data structures can be a daunting task for undergraduates just entering the field of computer science. Incidentally, it is common knowledge that students tend to learn better when there is some sort of incentive or competitive motive involved. As such, we extended a popular game, Jeopardy!, to help review and assess students' knowledge of Java and common Data Structures (DS) for CS187--Programming with Data Structures in Java. Through the game, we were able to promote active learning and test students on a breadth of key concepts covered in the course such as: time complexities, linear data structures, trees, heaps, and sorting algorithms. As originally intended, and evident from our feedback, we found that students appreciated and benefitted from our efforts in trying to gamify studying DS/Java.

Setting up VS Code for Remote Work

Team Members: Brendan Henrich, Dave Dirnfeld, Fabien Delattre, Shreyas Kulkarni

Developing software on remote machines is a common approach in many areas of Software Engineering. In CS 377, Operating Systems, students are introduced to this method by writing their homework on Edlab. To help students set up an environment where they can design, test, and debug their code, we developed a homework to teach students how to set up a local environment suitable for coding remotely. The homework consists of watching a video tutorial on setting up VS Code with SSH compatibility. The benefit of using VS Code is that it's multi-platform, lightweight, with powerful IDE features text editor making it easy for students with different architectures to use the same setup. Students are then asked to answer a quiz on the topics covered in the video. Finally, students are asked to upload a screenshot showing they were able to set up the environment correctly. Feedback showed that the video and the assignment significantly increased students’ ability to set up a working environment for the class.

Pair Programming Activity

Team Members: Emily First, Angela Upreti, Saurabh Bajaj

Students are usually required to work individually on their coursework. However, during the software design process in their future places of work, they are often required to work in a team or pair program. Keeping this in mind, we designed an RLO that enables the students in COMPSCI 220 Programming Methodology to learn the concepts of object oriented programming and streams through pair programming. The students were required to collaborate with peers to complete a set of exercises in JavaScript during their weekly discussion section. We taught the students about pair programming, emphasizing the driver and navigator roles and its benefits. We then had them work in pairs (sharing a laptop between them) to complete the exercises, switching driver/navigator roles after each exercise. We received positive feedback from the students indicating they enjoyed pair programming and thought it was engaging and helpful for learning the concepts.

Dynamic Programming Assignment with Automated Feedback

Team Members: Syle Dandekar, Hasnain Heickal, Zhanna Kaufman

The professors for the CS311 Introduction to Algorithms class wished to have auto graded assignments which would help students strengthen their understanding of concepts through hands-on coding exercises. The team came up with an assignment for one of the more difficult concepts in the class - dynamic programming. The assignment for extra credit assessed students’ ability to come up with a recursion for a problem, add memoization to create a dynamic programming solution, and finally to translate their theoretical approach into actual code. The assignment was submitted via Gradescope, and the team created auto graders in java and python to allow students to use the language they were most comfortable with. The auto graders provided immediate feedback to the students and the team also made itself available through office hours and Piazza to help those students that needed additional support in understanding the concepts or reaching the solution. The feedback showed that the students appreciated the opportunity to apply in practice the theory they learned, and felt that incorporating more coding assignments into the class would be useful.

How does BitCoin work?

Team Member: Boming Zhang

This project was a fun introduction to BitCoin for students in CS597N Introduction to Computer and Network Security. Students were asked to design a rudimentary ledger banking system. As the class progressed, students gradually integrated digital signature and hash functions into the ledger system. Finally, students produced a design of a banking system called UMassCoin, that was similar to BitCoin. Then, the students participated in a psuedo-mining activity where each student played as a GPU and calculated hash values for given transactions. The student with the fastest calculation of the hash value got a reward UMassCoin for each block, which promoted students' engagement with the activity. The students experienced the benefits of using the Digital Signature and hash function through a real-life application.

Optimizing Python Machine Learning Models for low level hardware

Team Members: Sandeep Polisetty, Dhawal Gupta, Mashrur Rashik

Modern deep learning models are hard to deploy due to their size and lack of genric optimization procedures. Through this assignment, we teach students the process and importance of writing generic optimization code for deploying learning models. This assignment is intended for COMPSCI 532: Systems for Data Science. Specifically, the students use the TVM compiler where they write code snippets to optimize models for a specific framework, PyTorch in this case. We provided a ready-to-use docker that the students could use to set up their environment. The students experimented with various optimization approaches and were able to evaluate their code's effectiveness by checking the number of instructions after each execution.

Intro and Setup for ESP32 Makerboard

Team Members: Md Farhan Tasnim Oshim, Riddho Ridwanul Haque, Dong Li

We created a hands-on tutorial video introducing different hardware components of ESP32 Makerboard and a step by step video with instructions for installing the board for different Operating Systems. As ESP32 makerboard is specifically designed for CICS 256: MAKE: Introduction to Physical Computing, the installation and working principles are not readily available online and students often face difficulties following the written instructions for installation and debugging. Separate instructional video and debugging techniques were made for separate operating systems to meet the students’ need. The tutorials were delivered in the form of an interactive questionnaire after each step to ensure the understanding of the students. Lastly students were taught how to run a demo program after successful completion of installation. This way students got themselves familiar with basic hardware concepts related to the ESP32 maker board and gained hands-on understanding of the communication between the board and the Arduino IDE.

COLAB Notebooks for Data Modeling

Team Members: Hadeel Eladawy, Ankita Rajaram Naik, Allison Poh

Data comes in many shapes, forms, and sizes, and knowing how to analyze and model any given dataset is important for research. In this project, students of COMPSCI 682 Neural Networks: A Modern Introduction practiced data analysis, model analysis, and model debugging on image, text, and structured data. During a live tutorial session, students walked through 2 COLAB notebooks, one focused on data analysis and the other on model analysis and debugging. Some skills students acquired include normalizing and greyscaling image data, filtering and cleaning text data, and null checking and calculating statistical measurements on structured data. Students also gained exposure to wandb, a model analysis tool. The goal of this project was to help students with their final course project.

Building a Database From Customers’ Needs

Team Members: Mohammad Hadi Nezhad, Xiao Liu, Zafeiria Moumoulidou, Shifan Zhu

We designed a tutorial for students of CS345: Practice and Applications of Data Management, which is an undergrad level class for databases. The goal of this tutorial is for students to familiarize themselves with the process of designing a relational database as well as using SQL commands to create tables, insert, and delete data from them. The students learn how to interpret customers’ requirements, usually given in natural language. Then, they learn how to translate these needs into a relational database, using tools like Entity-Relationship diagrams. Subsequently, they use SQL commands to create the corresponding tables while they also learn how to insert and delete data from the database. The students really liked the animated approach that enhanced the knowledge they learned from the lectures.

Uncovering Secret Codes

Team Members: Prateek Mantri, Sunjae Kwon, Matthew Jamieson

We designed a short programming assignment for non-CS students learning Python for the first time in CS 119. We present students with a brief introduction to ancient cryptography techniques and then present them with a coded message. We tell them how the code works, and then ask them to write a Python script to break the encryption and uncover the message. We hope that the open-ended nature of assignment will spark their interest in using code to solve problems, and that the nature of secret messages will engage their interest and curiosity. Further, the assignment should test and expand upon the student’s knowledge of lists and loops as well as functions associated with strings and characters. Students should also know how rudimentary cryptography works and understand some basic problem-solving strategies (e.g., ASCII code handing) using programming. The assingment piqued interest in non-CS majors about cryptography, and programming in general.

Reinforcement Learning for Unity

Team Members: Mingji Han, Gopal Sharma

This project aims to provide students the basics of reinforcement learning in Game Programming (COMPSCI 576). Students understand how to use reinforcement learning based agent in the Unity Game Engine. The students can also use Google Colab to train an agent using DQN algorithm in the game.
Learning objective: To give hands on experience on reinforcement learning for Unity.
Taught: Basics of reinforcement learning and hands on experience on training an agent using RL.
Feedback: Most students found the tutorial motivating but harder to understand.