AY21-22Fall assgn1AppDev CSC415Fall2021 Page1of3 Assignment1–ApplicationDevelopment Due:ThursdaySeptember23,2021by11:59p.m....

I attached the assignment


AY21-22Fall assgn1AppDev CSC415Fall2021 Page1of3 Assignment1–ApplicationDevelopment Due:ThursdaySeptember23,2021by11:59p.m. Grade:100pointsaspertherubric;10pointspenaltyforeachdaylate. Youmustcomplete,i.e.,designandimplementthesolutionfor,thisassignmentindividually. Objectives: Themaingoalsofthisassignmentareforyoutodemonstratethatyouhaveagoodunderstandingof prerequisitecomputerscienceconcepts,andtheabilitytodesignandimplementacomputational solutionforaproblembasedontherequirementsprovided.Specifically,youshoulddemonstrate: • Anabilitytosolveaproblem,basedonspecificationsandrequirementsprovided. • Anabilitytoindependentlylearnanewlanguage,specificallyRuby,andimplementaprogram. • Agoodgraspoffundamentalprogrammingconceptslikeabstraction,classes,iteration,etc. • Theabilitytodetermineandimplementtheappropriatedatastructureforapurpose. • Abasicunderstandingoftimeandspacecomplexityofalgorithms. • Abasicabilitytousegit,GitHub,andtheindividualVMassignedtoyou. ProgramRequirements: Assume that you are a software engineer at GF Software Solutions, Inc., and that your company has been awarded a contract to develop a scheduling algorithm. The algorithm is eventually expected to be fairly complex, but to help you understand the problem better, consider the following simplified scenario. All incoming first-year students are required to complete a First Year Seminar (FYS) course (this course used to be called FSP). There are about 1700 students in an incoming class. TCNJ offers a number of courses and sections (about 100), each of which can hold at most 18 students. Each section must have at least 10 students in order to run. Each incoming student is asked to provide six distinct choices of FYS sections, with the intent that students will be placed in one of their six choices. Implementa prototype, in Ruby, of the scheduling algorithm which will place students into a course within the constraints defined above, and ensure that sections are well-balanced so that they will run. Note: There are additional constraints in the real situation, but those are being ignored here to simplify the problem. Your program must allow for integration of these additional constraints in a later iteration. The program must take some information from the user, run the algorithm, and produce the list of course sections and students enrolled in each course section. The input files will contain the FYS course data and student choices. The results should be given to the user in output files. The program requirements are described in more detail below. The program must ask the user for the following input: • Number of FYS courses / sections being offered, e.g., 76. • Number of students in the incoming class, e.g., 1627. • Name of the input file that contains the list of FYS courses being offered. Each row in this file contains data about one course. The columns represent: o The course id, e.g., 82289 o The course number, e.g., FYS 101 01, and o The course title e.g., FIRST SEMINAR:LIT/VIS & PER AR. • Name of the input file that contains the list of students in the incoming class, and their course choices. Each row in this file contains one course choice for one student. The columns represent: o Student Id, e.g., 78504494, and o Chosen FYS course id, e.g., 82489. For example, if a student has selected six courses, there will be six rows for that student, with one course id on each row. CSC415Fall2021 Page2of3 The program must then read data from the input files and run the algorithm to schedule students into one of their chosen courses. If a student provides fewer than six distinct choices (including none), or some of the choices are not in the FYS course file, the missing/incorrect choices are assumed to be “Any”, and the student can be placed into any section that needs to be filled. You may make assumptions about any situation that is not specified in these requirements. Document your assumptions in the appropriate source code file or the readme file (see below). The results of the algorithm execution should be output in three files as described below; the user should be asked to enter the names of each of the output files. • Output file 1 will contain the list of students in each FYS course. Each row in this file contains data about one course and one student. The columns represent: o FYS course id o Student Id. For example, if 17 students have been enrolled in a course, there will be 17 rows for that course, with the student ids; the course id will be replicated on each row. • Output file 2 is more “verbose”, i.e., it provides more details about the enrollments. o For each course, list FYS course id, course number, and course title, followed by student ids of all students enrolled in that course, on different lines. o If a course has fewer than 10 students, there should be a statement to indicate this. • Output file 3 provides a summary of the results, and alerts the user about issues that may have occurred during execution. The following information should be provided in this file: o The number of students enrolled in a course. o The number of students who were not enrolled in a course. o The number of courses that can run because they have 10 or more students. o The number of courses with fewer than 10 students. Theintentoftheassignmentisforyoutodemonstrateyourabilitytolearnanewlanguage(inthis case,Ruby),andimplementasolutiontoaproblemusingthis language.Youarealsoexpectedto demonstrateyourability to learnanduseappropriate technologiesand frameworksrequired for effectivesoftwaredevelopment.Therefore, • TheprogrammustbedevelopedanddemonstratedtoworkontheindividualVMassignedtoyou, inthestudent1account. • Theprogrammustbe implemented inRubywithanappropriatedatastructure, thatyouwill determine.DonotuseRailsoradatabaseforthisassignment. • Usegitforversioncontrol,andGitHubtohosttheremoterepository.AddProfessorPulimood (GitHub id tcnjcs)asacollaboratortotherepositoryonGitHub.Besuretocommitthe sourcecodefrequentlysothatyoudonotinadvertentlyloseanyofyourprogram. • Theremustbeuserinteraction,e.g.,allowtheusertoselectthetaskstobecompleted. • SampleinputfileswillbepostedonCanvas,butyoumustcreateafewsmallerfilesofyourown fordevelopmentandtestingpurposes.Youmaybeexpectedtodemonstratethattheprogram workssuccessfullywithother filesaswell.The input fileswillbe formattedascsv files;CSV standsfor“Comma-SeparatedValues”.Thefirst lineisthe“headerrow”thattheprogramcan safelyignore.Youcanassumethatallinputfileswillbeinthecorrectformat. • Youareencouragedtousethebuilt-inRubyCSVlibrarytoreaddatafromcsvfiles,andwrite dataouttofiles;seehttps://www.rubyguides.com/2018/10/parse-csv-ruby/. • Youarenotallowedtouseanyotherbuilt-inalgorithms,oralgorithms/codeyoufindfromother sources.Youmustimplementanysearchingorsortingalgorithmsyoumightneed. • Youmustgiveconsiderationtotimeandspacecomplexity,useappropriatedatastructures,and implementefficientalgorithms. CSC415Fall2021 Page3of3 • Youmustfollowgoodprogrammingpracticestoensurethatyourprogramismodular,secure, reliable,andefficient.Useagoodcodingstylewithconsistentindentationtoensurethatyour sourcecodeisreadable. • Sourcecodefilesmustincludemaintenanceinformation,andthecodeshouldbedocumentedto explain functionality and design decisions. See the general guidelines for programs and documentation,postedontheCanvaspage“GuidelinesforPrograms”. LearningandDeveloping: Youareencouragedtoaskgeneralquestionsabouttherequirements,programmingconcepts,and errors in classoronSlack.Youareencouraged todiscussquestionsor concerns specific toyour solutionduringofficehours,orthroughdirectmessagestoProfessorPulimoodonSlack.Youcanalso askthecourseassistant,Jenna,fortechnicalhelp.YoumayworkwitheachothertolearntheRuby language,butyoucannothelpeachothertosolvetheassignedproblemandimplementtheprogram. Seeking assistance from any source other than Dr. Pulimood and course assistant, or providing inappropriateassistancetootherstudents,areviolationsofTCNJ’sAcademicIntegritypolicy. UsefulresourcestolearnRuby: • LinkedInLearning–FreewithyourTCNJidandpassword;accessitfromtheTCNJToday pageathttps://today.tcnj.edu/. • codecademy.com–agoodplacetostartishttps://www.codecademy.com/learn/ruby. • https://www.rubyguides.com/ – a library of in-depth guides to explain programming topics,withRubycodeexamples. • http://ruby-doc.org/–DocumentationfortheRubyprogramminglanguage. ProgramDemonstrationandGrading: Aftertheduedatehaspassed,youmustmeetwithProfessorPulimoodforatechnicalreviewofyour program,i.e.,todemonstrateyourRubyapplicationonyourVM,anddiscussyourdesign.Duringthis time,youwillbegivenverbalfeedbackaboutyourprogram,thatyouwillbeexpectedtoutilizefor futureassignmentsinthisclass.Youshouldbepreparedtotakenotesonfeedbackprovided. Make an appointment using the link provided on the Canvas page for this assignment. Each appointmentslotisfor30minutesthoughtheactualtimeneededwillbeabout20minutes. Deliverables: OnCanvasinthe“Assignment1”dropbox,submitafilecalled“readme.pdf”thatspecifies: • YourVMnameandpasswordforthestudent1account. • ThefullfilepathnamefortheprogramonyourVM. • TheurlfortheGitHubrepository. • Instructionsforrunningtheprogram. • Knownbugs,issuesorlimitations. OnyourVM,inanappropriatesubdirectory: • Allthesourcecodefiles. • Alltheinputandoutputfilesyouusedandcreatedduringdevelopmentandtesting. • ThesamplefilespostedonCanvasforfinaltesting. OnGitHub,inanappropriaterepository: • Allthesourcecodefiles. • Instructionsforrunningtheprogram. • Knownbugs,issuesorlimitations. Labeleachsourcecodefileandthereadmefilewithyournameandassignmentnumber.
Sep 21, 2021
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here