computer programming-python

profilestrength
Senior.doc

Senior Project Proposal

WhatsDeWord: Simple chat room application

Friday 9th February 2018

Table of Contents

Summary 1

Significance 2-3

Required Tools and Availability 3

Demonstration plans 3

Qualifications 3

Project Specification 4

Technical Details 4

Timeline 4-5

Future Enhancements 5

Bibliography 5

Summary

WhatsDeWord is a simple chat room application that allows students at DePauw to communicate and network with each other. Subconsciously, students go through DePauw limiting their friend group to individuals that are in the same field of study or individuals that belong to the same organization and clubs. Making friends and acquaintances in college can be quite intimidating especially in your freshmen year. Users will access the system by registering with their DePauw email address/username and a password. The application will include private messaging, broadcast messaging and file sharing features. The system seeks to enhance communication between students and strengthen the DePauw community.

Significance

The scope of this project fits well with the Computer Networking course offered at DePauw. The beginning stages of the course focused on implementing client/server applications using socket programming with UDP and TCP. The code for the application will be written in Python. The chat room application will be implemented as a peer-to-peer network so that whenever the server goes offline another peer in the network can automatically replace it. A P2P connection will be much more complex than a simple client/server network.

Required Tools and Availability

The code for the project will be developed using TextWrangler (text and code editor) and implemented through a terminal window on my laptop.

Demonstration Plans

Some demonstrations will take place in Julian room 260 using my laptop. Other demonstrations that require multiple computers will take place in a classroom. The Timeline section will outline when the classroom demonstrations will take place.

Qualifications

The project is based on the Computer Networks course I took in the spring of 2017.During the course I was instructed to a build client/server socket interaction using UDP and TCP programmed in Python. Additionally knowledge gained from object oriented software development course makes it easy to be able to program in Python. The peer-to-peer socket interaction will require further knowledge from personal research.

Project Specification

The goal of the application is to serve as a simple peer-to-peer chart room where there is no always-on server and arbitrary end systems directly communicate. The students will be able to register with a username and a password, which will be stored in a file. Users will be able to send, receive messages and transfer files. Users will be able to see what other users are logged on to the chat. Users can send messages privately and to other users or respond back to all the peers in the network.

Technical Details

A socket for both the server and client class will be created in order to send and receive messages. The code is going to make use of the threads to allow multiple connections to take place at a time. The program will prompt the user to register with a username and a password. The program will create a log files in the directory to store information. The program will include broadcast, private message and file sharing methods.

Timeline

Checkpoint 1:

· I will demonstrate the implementation of a simple peer-to-peer chat system using TCP in order to show that the application can be used to send and receive messages.

· I will demonstrate the new user registration function.

Checkpoint 2:

· I will demonstrate log in function for returning users.

· I will demonstrate how the interface allows users the option of using commands stored in the program to see who else is online and private message.

Checkpoint 3:

· I will demonstrate the broadcast and file sharing functionality.(Multiple machines)

Checkpoint 4:

· I will demonstrate multi-threading by opening multiple chat sessions with multiple clients.

Future Enhancements

· Writing a GUI using the Tkinter tool to enhance the users experience and give the application less of an archaic feel.

· Modify the code to be able to block invalid entries.

Bibliography

http://www.binarytides.com/code-chat-application-server-client-sockets-python/

https://medium.com/swlh/lets-write-a-chat-app-in-python-f6783a9ac170

PAGE

2