Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

CS 170Q Final Project Description

You will be implementing a final programming project to demonstrate all of the programming and computer science skills you have mastered throughout the course. This is a chance to work on something that you are interested in. You can work on this project individually or in pairs   (Please talk with Dr. Li if you decide to work in pairs before April 15th). Note that students      working in pairs will be expected to finish a larger project (with GUI). Here are some example questions you might want to work on. If you are going to work on something other projects,    please discuss it with Dr. Li before April 15th .

Work to be done in this project:

1, (90%)Choose a project below, implement it, and show your work. You need to submit the      code, a report, and demo videos(screen recordings). These work are due on May 1st . Your report should cover the design basics, data structures, and critical points/explanations you want the       other to know. There is no length requirement for your report. To be more specific, your work   will be evaluated with whether your code works (60%), programming style(10%), demo videos (10%) and report/description of your project(10%). If working in pairs, each of you needs to      submit a pdf file to show how much work you and your partner contribute to this project.

2. (10%)Peer evaluation is also a vital part of research to give constructive feedback to the others’ work. You need to provide the feedback for two submissions before May 3rd .  Your feedback should be less than 300 words.

Timelines:

April 8th  15th : Discussion with Dr. li about your project if you choose another project not listed here. If you select the work listed here, you can work on it right now.

Nov 15th  May 1st  : Work on final project and presentation on your project. After you finish your project, upload them (codes, demo videos, and report) to Canvas.

May 1st  3rd  : Evaluate your classmates’ work and give feedback.

For any project you chose, you need to think about what data structure could be used and write some test cases for your implementation.

Project 1: Who Should I Hire?

Assume we want to hire a student out of N candidates for the teaching assistant of our course. The students are interviewed one by one in random order. A decision about each particular     candidate is to made immediately after the interview. Once rejected, we cannot recall the        decision. During the interview, we could only rank the candidate among all candidates            interviewed so far. The major problem is to the maximum our probability of selecting the best candidate. You can find more information in the attached slides. In this project, you need to    1) having the Application class. Assume we evaluate a student based on her Grade and         communication ability. Each candidate’s level could be formed as a number. Create a class     Candidate with name and GPA. When a student submit the application, we should have a data structure to hold all candidates’ information.

2) Set the interview bar. In the interview process, you will have the overall evaluation of a         student with her GPA and communication reflected during the conversation. The general             assessment should be the sum of GPA (out of 5) + communication skills(out of 5). In our project,

you could give a random number as communication skills. You need to calculate the sample size give a candidate size as N. Note you cannot use the 1/e directly. Instead, you should iterate all the permutation and conclude.

3) Interview. Assume applications in step 1 comes in random order. After you got the result        from step 2, show the student your program selects and see whether he’s the best in the candidate pool.

Project 2: A Simple Library System

A library is a collection of sources of information and other recourses, including books,          newspapers, manuscripts, files, CDs, and so on. To understand how we maintain a library and improve service quality. There should be at least three classes in your project, include the       Readers, Resource, and Library.

A reader should register with a username and a password. The username should be identical       without duplication, and the password should follow the rules (at least eight characters, one        uppercase letter, one lowercase letter, and one digit). When a user registers at the library system, your need to check whether her username and password are valid or not. When a user logs in,     you need to check whether the username and password match or not. Each reader has a resource list, which records all the resource information he borrowed from the library.

A resource must have name, type (reference sources, books, and articles), ISBN, Search ID (in the current library), the amount of copies, and the readers' list who have it right now.

At the end of this project, you should design a library system which includes the following functions at least: we can search for a certain resource with the resource name, a reader can borrow and return a resource, and we can query the any reader’s information, including the reader’s name, ID, resources he borrowed, and the dates for returning each resources.

Note in this project, you’d better to record the information on some .txt files (for both resources and reader’s information) so that you don’t need to input all the information when you run the  code.

You can extend this project to any administration system, for example, the bike rental system at CHL (center of Healthful Living), where you can borrow a bike for a week, and you need to pay if you want to keep longer.

Project 3: Generate Sudoku Board. For this project, you can think about those three aspects: how to generate a complete board (with unlimited iteration of random function, or some certain strategies), how to check a given board is valid or not, and how to solve a incomplete board.

Project 4: Simulation Percolation. Percolation is the process of a liquid slowly passing through a filter. Now assume that we have a composite systems comprised of randomly distributed          insulating and metallic materials. The question we need to answer is for this project is: what        fraction of the materials need to be metallic so that the composite system is an electrical               conductor? This question is super useful in our daily life, such as having a porous landscape with water on the surface (or oil below), under what conditions will the water be able to drain through to the bottom (or the oil to gush through to the surface)?

Here assume that we have N*N grid of sites (in the following two pictures, left picture shows the system percolates, but right now doesn’t) to model the percolation system . The black sites mean it is blocked. The white site means it’s an open site. All sites on the board should be either           blocked or open. A system is percolation if there is a path full of open sites from top sites to any bottom sites. If each site has an independent probability p being an open site, and (1-p)                probability being a blocked site. Then what we need to do is generating a percolation system       based on p and checking whether it percolates or not. A following step is run your simulation      with different p for multiple times, and generate the probability that a system percolates. The N

could be any value lager than 9.

 

Project 5: Simulate a board game such as Mastermind game or Poker game. An example demo video is attached in this assignment.

Project 6: TTT board with GUI. We have already finished generating the board randomly and checking its validation in our homework for TTT board. Right now, think about simulate a real  TTT game with GUI. Assume there are two users play this games in turns. And what we need to do is check whether there is a winner or draw after each placement of X’ and O’ . The game     should end at when one player wins or no empty space on board (Draw). The last thing is you    need to present this game with GUI, instead of print it in console. An example demo video is     attached in this assignment.

Project 7: A Matrix Calculator. In assignment 9, we have already worked on the basic             calculation for matrices. Of course, you can extend the assignment 9 by adding more calculation for matrix. For example, inverse matrix, find rank for a matrix, Matrix diagonalization, finding

the matrix's eigenvalues and eigenvector, etc. More calculation could be found here.

https://mathworld.wolfram.com/topics/Matrices.html

About Peer Review.

After May 1st, I will assign your classmates' work to you (around 2 submissions), and you are     given 3 days to provide feedbacks. The peer review is anonymous and your name (reviewers)     won’t be seen.  To provide feedback, you can either make comments or upload a file within their submission. Your feedback (strength and weakness, 0 - 10 pts) should include those three            aspects:

1) whether the project works? Are all the situations/scenarios being considered? Is the design of each class is reasonable?

2) Java programming style

3) Whether the report is clear to understand and easy to read?