teaching

Teaching materials and projects created by me.

Computer Science Projects

I try to update this list as frequently as I can, but you should be able to see the latest list of computer science projects I created on my personal Github.

Operating Systems Projects

  1. Understanding Operating System Overhead
    In this assignment, students will explore the cost of context switching and OS invocation by timing System Calls and Signal Handling.
  2. CPU Virtualization: User Level Threads and Scheduler
    In this assignments students will explore CPU virtualization by implementing their own user-level threading library and scheduler.

Distributed Systems Projects

  1. Understanding RPCs: The Bulletin Board Web Service
    In this project, students will explore Remote Procedure Calls using the modern framework of gRPC and Google Protocol Buffers.
  2. Restful Web Services: A Foodie Web Service
    In this project, students will explore RESTful Design by implement a RESTful web service that also makes RESTful requests to external APIs.
  3. MapReduce: Processing Reddit Data
    In this project, students will explore distributed computing programming by using the Map Reduce framework to perform data processing on real Reddit Data in a distributed manner.
  4. Networking: Remote Object Store Service
    In this project, students will explore the complexities of building communication channels as well as remote services by implementing their own remote object storage service.
  5. Spark: Processing Reddit and Netflix Data
    In this project, students will explore distributed computing programming by using the Spark framework to perform data processing on real Reddit and Netflix Data in a distributed manner.

Computer Security Projects

  1. Cryptography Complexity: Cracking Simple Substitution Ciphers
    In this project, students will explore the complexity of simple substitution ciphers and try and come up with programs that can automatically break them using brute force/frequency analysis.
  2. Understanding Encryption: Encrypting Files with Java
    In this assignment, students will explore how to encrypt and decrypt files in Java using public-key cryptography and symmetric key cryptography to carry out secure file sharing.