CSE 121e: Week 06
Apply Your Learning
A Project
Now it's time to combine what you've been learning with what you have been learning in your classes for your major.
Brainstorm and create a small project that may take about three hours to complete.
Your interests should drive the selection of what you do for this project. Selecting something interesting to you will aid you in completing the project and doing it well.
After you complete your project, create a short video screencast demonstration showing how your code works and how to run it. The demo should be 1-2 minutes long at the most.
Project Ideas
I encourage you to think of a project on your own, but here are some suggestions to help if you're having a hard time thinking of something.
- Revisit an assignment from a previous programming class and complete it in Erlang.
- Create a program that solves a problem you find interesting.
- Create a program that solves a problem in your discipline (Computer Science, Physics, Mathematics, or whatever your discipline might be).
- File I/O: Build an application that can read data from a file, process it, and then write the results to a new file. This could be a log analyzer, a data transformer, or a simple database.
- Explore passing messages between distributed systems: Create a simple system where multiple Erlang nodes can send and receive messages. This could simulate a microservices architecture or a basic chat system between distributed systems.
- A to-do list application: Develop a command-line to-do list application where users can add, view, and delete tasks. The tasks can be persisted in a file or an in-memory data structure.
- A chat application using Erlang processes: Develop a simple chat server where multiple clients can connect and send messages to each other using Erlang's message passing and concurrency features. Focus on creating processes for each client and handling message passing.
- Task Scheduler System: Implement a system that schedules and executes tasks (like sending emails, generating reports, etc.) at specified intervals. This project can leverage Erlang's time-handling and process management capabilities.
- Basic Key-Value Store: Create a simple in-memory key-value store where you can set a value for a key and retrieve it later. This project will help you understand state management in Erlang processes and the concept of message passing.
- File Monitoring System: Build a system that monitors changes in a specific directory (like new files added, files deleted, etc.) and logs these events. This project can utilize Erlang's file handling and process monitoring features.
- Simple Web Server: Develop a basic web server that can handle HTTP requests and serve static content. This will give you exposure to network programming in Erlang and its standard libraries for handling HTTP.
- Data Processing Pipeline: Create a pipeline that processes data (like logs or transaction records) through multiple stages (filter, transform, aggregate) using Erlang processes. This project can demonstrate Erlang's capability in handling parallel data processing tasks.
- Online Voting System: Implement a simple system for online voting, where users can vote for options, and the system tallies the votes. This project can help you understand how to handle user inputs, state management, and concurrency.
- IoT Device Simulator: Simulate an IoT (Internet of Things) environment where multiple devices (like sensors) send data to a central server. This project will allow you to explore Erlang's ability to handle numerous concurrent connections and real-time data processing.