代做CSc 335 Spring 2025 Final Project代做Java程序

CSc 335

Spring 2025

Final Project

For the final project in this class, you must complete a large software project in a group of 3 or 4 people. Your project will be graded based on functionality, complexity, collaboration, design, and documentation. What follows in this document are the general expectations for the project based on those four categories. There are also documents provided for specific project ideas, but you do have the opportunity to come up with your own idea if you choose as long as you get it approved and it meets the general requirements.

I. Functionality

This means that you produce working software and evidence that it works as intended. This means that you have to not only submit code that compiles and runs but you have to submit evidence that it runs. This includes

●   a suite of unit tests that run, pass, and provide at least 90% coverage for each class in the backend

●   a fully functional project where fully functional depends on the expected functionality of your specific project

●   evidence that the unit tests pass and that the project is fully functional – meaning you actually run the code and show all the functionality with complex enough test cases

Note that providing evidence is required in addition to submitting the code. How you provide this evidence depends on how you choose to be graded, which will be discussed in a later section.

II.      Complexity

There is no line number expectation because often shorter code is better than longer code, so I do not want you writing more code just for the sake of writing more code.

Instead, here are some guidelines for gauging the complexity of your project.

●   The complexity of the whole project should be about the same as the complexity of LA 1 + LA 2 + the required additional advanced feature that will be explained   later.

The backend code should involve multiple classes interacting with each other.

The backend code should also utilize Java features and data structures.

●   This gets into the design portion, but the backend code should show thoughtful design based on the things discussed in class.

●    Each person in the group should put in approximately 40 hours on this project (over the course of the approximately 5 weeks you have to work on it).

In addition to the basic requirements, you must include at least one more advanced feature.

Although your backend code should mostly be your own code, you may use Generative AI to assist in implementing these more advanced features. (You are also allowed to use Generative AI to implement the user interface code, whether it is a text-based UI or a GUI). Here are some ideas for more advanced features, which will require some research on your end as well as a thoughtful approach to how it fits with your project. I strongly recommend that you decide on this before deciding fully on a project idea because not all of these fit with all the projects.

●   a high-quality graphical user interface that correctly utilizes the OBSERVER design pattern – you can use either Swing or JavaFX for this

concurrent programming with threads

●    network programming – e.g. sending data over sockets

●   advanced security features – this would have to go well beyond the simple salting and hashing that was required for LA 2

●    use of more advanced design patterns, such as COMPOSITE or DECORATOR (keep in mind that these are context-dependent, and should not be forced)

●    metaprogramming

Note: Some of these would likely require you to design a project that fits. If you are interested in one of these advanced features and need help coming up with a project, come see me.

Make sure you include an explanation of whatever additional features you include in your video or grading session.

III.      Collaboration

This is a group project, and you are required to work in groups of 3 or 4 people. The preference is for groups of 4. You are strongly encouraged to find your own group, and if you submit a group of 3, please note that you may get another member added. Here are the general expectations for encouraging and assessing collaboration:

●   You must email mramoshernandez@arizona.edu with your group members by the deadline listed below. (Note: only one email per group is required.)

●   You must use Github to collaborate on your code, and we will check your repo and commit histories to make sure that all members have been contributing to the project the whole time. Procrastination is not acceptable for this project. You also need to make sure you’re using Github properly.

●   You are expected to utilize some of the principles of Agile development, including using “sprints” to plan manageable tasks that can then be checked.

●   You are expected to meet with your grader once in the third or fourth week for a   15-minute “standup” to discuss how the project is going. This can be in person or on Zoom, but every member of the group must participate. Your grader should contact you early in Week 2 to schedule that meeting.

●   You will be asked to provide a rating for each of your team members at the end in order to let us know how the collaboration went. Specific guidelines for this are provided in a separate document, and it’s important to note that these ratings do affect your grade on the project.

IV. Design

This part is really important. Do not ignore this part! It’s not enough for you to just produce working code. You need to provide evidence that you have thought about the design (especially of the backend). Again, how you provide that evidence depends on how you choose to be graded, which will be discussed later, but you need to be able to explain and justify your design decisions. We will also be looking at your design and your source code, looking for issues in the design. Here are some guidelines for good design  based on the course content:

Clear separation of concerns between front and backend code

all UI functionality should be in the View

○    in other words, you should be using MVC in a correct and clear way

Thoughtful use of data structures and Java library features

○    provide a valid justification for the data structures you use – e.g. if you choose to use ArrayLists for everything, you need to give a valid justification for that decision

○   you also need to show that you have looked at the options in Java and used what is available in a thoughtful way – e.g. if you’re writing your own sorting method for a collection, that isn’t a good sign when you can easily use the Comparator interface and Collections.sort method to do the same thing

●   Correct and thoughtful use of composition, inheritance, and/or interfaces – Your backend code needs to have multiple classes that interact with each other, and  you need to be able to explain the design of each class and the choices you made with respect to how they interact.

●    Encapsulation –

○    Make sure you have well-encapsulated classes in the backend and can explain how they are well-encapsulated.

○   Avoid escaping references as much as you possibly can. If there are any in your code, make sure you can justify leaving them in.

Avoidance of antipatterns –

We will look for obvious antipatterns in your code.

○   We also want to hear about your process for avoiding them. For example, if you chose to use an enum in order to avoid PRIMITIVE OBSESSION, be prepared to explain that.

●    Use of design patterns –

These are context-specific, but you should use them when appropriate.

○   We will look for obvious places where you should have used a design pattern and didn’t.

○   We will also want to hear about your process for utilizing a design pattern, and we will look to see if you used it appropriately and correctly.

○    Note: Although MVC is sometimes called a design pattern, everyone should be doing this already, so don’t focus on that one in this part.

●    Input validation – be able to explain how you do any appropriate input validation and justify the type of input validation you choose to use.

●    Explain what any AI-generated code does.

V.      Documentation

●   You need to provide at least one UML diagram showing the overall design of your backend code. This needs to include correct use of the connectors between classes. The UML diagram cannot be handwritten. The purpose of this diagram is to show the interaction of the classes in the backend, so you do not need to include every detail of every class in the diagram.

Your code should be well-documented using helpful, explanatory comments.

●    Provide a README document explaining the design of your code (See Part V for the expectations). We will use this in order to fill in gaps that may be missing in the main grading method as explained below. The README should also explain  how to run your code.

●   All AI-generated code must be documented, and you need to be prepared to explain what it does.

GRADING.

Here is the general breakdown for points for each category above.

Functionality

40 points

Complexity

25 points

Collaboration

20 points

Design

40 points

Documentation

25 points

Providing Evidence for Functionality and Explaining Design

In addition to the items you need to submit, which are detailed below, you have two options for how to provide evidence for the functionality of your code and for explaining your design.

Option 1 – Provide a video in .mp4 format that is no longer than 25 minutes. Note that this would be a major artifact we use to grade functionality and design, so it will need to be of good quality, well-organized, and very thorough. The graders will not go in and try to run your code themselves in order to fill in the gaps. All members of the group need to be involved.

Option 2 – Make an appointment with your grader (no longer than 30 minutes) to show and explain your project. Particularly, you would need to run the code for them, showing them all the functionality and explaining the design. Make sure you prepare for this as the graders do not have time to spend longer than 30 minutes, so you need to plan and practice. All members of the group must be present and involved.



热门主题

课程名

mktg2509 csci 2600 38170 lng302 csse3010 phas3226 77938 arch1162 engn4536/engn6536 acx5903 comp151101 phl245 cse12 comp9312 stat3016/6016 phas0038 comp2140 6qqmb312 xjco3011 rest0005 ematm0051 5qqmn219 lubs5062m eee8155 cege0100 eap033 artd1109 mat246 etc3430 ecmm462 mis102 inft6800 ddes9903 comp6521 comp9517 comp3331/9331 comp4337 comp6008 comp9414 bu.231.790.81 man00150m csb352h math1041 eengm4100 isys1002 08 6057cem mktg3504 mthm036 mtrx1701 mth3241 eeee3086 cmp-7038b cmp-7000a ints4010 econ2151 infs5710 fins5516 fin3309 fins5510 gsoe9340 math2007 math2036 soee5010 mark3088 infs3605 elec9714 comp2271 ma214 comp2211 infs3604 600426 sit254 acct3091 bbt405 msin0116 com107/com113 mark5826 sit120 comp9021 eco2101 eeen40700 cs253 ece3114 ecmm447 chns3000 math377 itd102 comp9444 comp(2041|9044) econ0060 econ7230 mgt001371 ecs-323 cs6250 mgdi60012 mdia2012 comm221001 comm5000 ma1008 engl642 econ241 com333 math367 mis201 nbs-7041x meek16104 econ2003 comm1190 mbas902 comp-1027 dpst1091 comp7315 eppd1033 m06 ee3025 msci231 bb113/bbs1063 fc709 comp3425 comp9417 econ42915 cb9101 math1102e chme0017 fc307 mkt60104 5522usst litr1-uc6201.200 ee1102 cosc2803 math39512 omp9727 int2067/int5051 bsb151 mgt253 fc021 babs2202 mis2002s phya21 18-213 cege0012 mdia1002 math38032 mech5125 07 cisc102 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 math21112 efim20036 mn-3503 fins5568 110.807 bcpm000028 info6030 bma0092 bcpm0054 math20212 ce335 cs365 cenv6141 ftec5580 math2010 ec3450 comm1170 ecmt1010 csci-ua.0480-003 econ12-200 ib3960 ectb60h3f cs247—assignment tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 math350-real math2014 eec180 stat141b econ2101 msinm014/msing014/msing014b fit2004 comp643 bu1002 cm2030
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图