CS 4485: Computer Science Project

Course Information

Title: CS 4485: Computer Science Project
Course Registration Number: 10227
Times: F 12:30-3:15
Location: ECSS 2.305
Instructor: Dr. Kevin Hamlen (hamlen AT utdallas)
Instructor's Office Hours: ECSS 3.704, Fri 3:15-5:15
Teaching Assistant: Ajay Kulkarni (ajay.kulkarni AT student DOT utdallas DOT edu)
TA's Office Hours: ECSS 4.213-4.214, Mon & Wed 5:00-6:00, Fri 12:30-3:15

Stage 4 Demo Timeslots

As announced in class, there will be a Stage 4 product demo during class on Friday 12/11. THE DEMO WILL BE IN MY OFFICE (ECSS 3.704) not in the classroom. You need only be present for your demo timeslot. Your demo may be conducted on your laptop in my office or at a nearby lab. The timeslots are as follows:

  1. 12:30-12:50 - Team Steel Share
  2. 12:55-1:15 - Team Smile
  3. 1:20-1:40 - Team CPNet
  4. 1:45-2:05 - Team DaMaStaS
  5. 2:10-2:30 - Team Chord P2P Solutions
  6. 2:35-2:55 - Team KennyG

Course Summary

Students will work in teams of 3 or 4 to design and implement an advanced peer-to-peer file-sharing client over the course of one semester. The course objectives are:

Prerequisites: Data Structures (CS/SE 3345), Software Engineering (CE/CS/SE 3354), and at least 3 CS 43XX classes including at least 1 elective


Development of the product will take place in four one-month stages. Each stage will conclude with a written report and an in-class demo of the product completed to-date.

There will be no exams or homework assignments in the course.

Project Deliverables

At the deadlines of stages 1, 2, 3, and 4 (listed above), each team will submit a written progress report and demonstrate their software in-class for the instructor. The final project submission will consist of:

Academic Integrity Policy

Each team will complete their own individual design and implementation of the product. Sharing of code or documentation between teams is prohibited, though members of different teams may discuss general design strategies and questions if they wish. Within teams, full collaboration is both permitted and required. All team members may work on all components of the project or they may each work separately on the various components. All members of each team will receive the same final grade for the course except in cases of academic integrity violations, absence, etc.

Teams may make use of low-level support libraries and code developed by others, but not to the point of reverse-engineering or otherwise drawing upon code from any existing peer-to-peer client or simulator. Any third-party code must, of course, be used in compliance with any relevant legal requirements. The identity and licenses of all such code used either in development or in the final version of the product must be fully documented in the final write-up with appropriate citations of authors, organizations, etc.

Incomplete Grade Policy

A grade of incomplete will only be granted to a student if his team has already completed and demonstrated all of Stages 1, 2, and 3 of the project, but a documented illness or other emergency prevents him/her from completing the final 30% of the course work. Incomplete grades will NOT be granted on the basis of insufficient time, poor team coordination, harddrive failure, or similar difficulties. One of the goals of the course is to teach students to meet hard deadlines in the development of a medium-to-large sized software system, so be sure to manage your time well!


Students may choose to implement their product in any programming language(s), using any development environment, and using any method of version-tracking. However, here are some links to resources that may prove helpful:

Tentative Course Schedule

Date Topic
Fri 8/21 Lecture: Project introduction and description
Lecture Slides
Fri 8/28 Lecture: Stage 1 description and requirements
Stage 1 Requirements
Email instructor with:
  • names and email addresses of all group members
  • short (1 page) description of work plan, including programming language(s) chosen, development environment and versioning systems to be used, and tentative allocation of work to team members
Fri 9/4 Lecture: Threads and Sockets programming
Lecture Slides
Fri 9/11 Lecture: Stage 2 description and requirements
Instructor Q&A for Stage 1
Stage 2 Slides
Fri 9/18 Stage 1 Demo
Fri 9/25 Lecture: P2P Security Issues
Fri 10/2 No Lecture (meet in teams)
Fri 10/9 Lecture: Stage 3 description and requirements
Stage 3 Slides
Fri 10/16 Stage 2 Demo
Fri 10/23 Lecture: P2P Security Issues (cont)
Fri 10/30 Lecture: Using this class to further your career
Lecture Slides
Fri 11/6 Lecture: Stage 4 description and requirements
Stage 4 Slides
Fri 11/13 Stage 3 Demo
Fri 11/20 Course Evaluations
Fri 11/27 No class (Thanksgiving break)
Fri 12/4 Lecture: Course summary and wrap-up
Final Submission Requirements
Fri 12/11 Stage 4 demo (in lieu of final exam)
Come to my office (ECSS 3.704) instead of the classroom.
Tue 12/15 Final Project Submission Deadline
Bring a cd/dvd with all required materials to my office between 11:00 and 1:00