Gurjeevan Bains, Waylin Wang
Advisor: Dr. Lubomir Stanchev
Table
of
Contents
Abstract 2
Background/Motivation 2
Introduction 5
UserStories 7
SwiftVs.ObjectiveC:OurChoice 9
FirebaseBackground 10
Quarter1Goals 11
Quarter1ProgressReport 12
Quarter2Goals 14
WeeklyProgress 16
Architecture 22
IndividualContributions 37
TechnicalDifficultiesFaced 38
Conclusion 39
FutureGoals 40
Abstract
Miscommunicationisacommonstrugglethatmanystudentsfaceintoday’s world,despitethe significanttechnologicalprogressthatwehavemade.With NoteIt,weaimedtosolvethisissue, byallowingstudentstojoingroupsbasedoffofthecoursesthattheyare enrolledinduringthe currentquarter.Withintheapp,theycansend andreceivemessagesandeventsfromeveryone elseinthegroup,orpostprivatereminderstothemselves.Communication canrangefrom assignmentclarificationtoexampreparationtips.Overallthedevelopmentoftheapplication wentrelativelywell,despitesomeroadblocksalongthe way.Weweresatisfiedwiththeprogress wemadeandplanoncontinuingtoworkonitafterthequarterends, byaddingevenmore
functionalitytoit.
Background/Motivation
thatthewholeideaofusingseparateapplicationsforsettingreminders andinteractingwith classmatesisinefficient.
Inaddition,moststudentshavebetweenzeroand twocontactsinanygivencoursethat theyareenrolledin.Assumingtheyhaveacommonquestion,thosestudentswouldbeoutof luck,withnoothercontactsinthecourse.However,accordingto PsychCentral,collegestudents spendabout“eighttotenhoursperday”ontheir cellphones.Bybeingabletoreceivehelpand getquestionsanswereddirectlyontheirsmartphones,students willbelesslikelytoforgetabout theirhomeworkassignments,andmorelikely tounderstandassignmentspecificationscorrectly. Inaddition,weplanonintegratinga“community”aroundeachcoursebeingoffered.Bythiswe meanthatweplantohavedifferentgroupstylechatsbasedoffofthe coursesthatstudentsare currentlyenrolledin.Thiswouldhelpeliminatetheawkwardnessstudentsmay feelwhenasking forarandomclassmate’scontactinformationduringthefirstfewdays ofthecourse.
Whenweaskedthesamegroupof30 studentswhethertheywouldusethismobile application,anastounding26outofthe30students(87%)saidthattheywould indeeduseit.A mobileapplicationwouldbemucheasiertouse,asaquestioncouldbeasked totheentireclass withafewtaps.Webelievethatthese twofeaturestogetherwouldprovideanincredible
Reallywhenitcomesdowntoit,wewanted ourseniorprojectto bedirectlybeneficialto ourpeersatCalPoly.Wedidnotwanttosimplymimicanalready existingapp,butcreate somethingofvaluethatwecouldbeproudof;somethingCalPolystudentscould stillbeusing5 to10yearsdowntheline,wellafterour graduationdate.Thereis absolutelynothingthatoffers thiscombinationoffeaturesonthemarket,whichis whatwillmakethe developmentofthisapp soexcitingandchallenging.
Introduction
WedecidedtogoaheadanddevelopourapplicationontheIOSplatform.Wespenta considerableamountoftimedebatingbetweendevelopingtheapplicationonIOSversus Android,andafterdoingsomeresearchandtaking ourownpersonalmotivesforcreatingthe applicationintoconsideration,feltthatthiswasthebestchoice.Accordingtoastudydoneby Nationwide,53%ofusersintheUnitedStatesuseAndroidphoneswithonly44%usingiPhones. However,amongstcollegeagedstudents,65%use iPhones,withonly 35%usingAndroid
phones.DespiteAndroidholdinganedgewiththeUSmarketasawhole,we feltthatsinceour applicationwasgoingtobeusedbycollege studentsandpossiblyhighschoolstudents,we wouldcapturealargeraudienceby developingtheapplicationonIOS.
havingasmallerinitialtestgroupwasnottoobig ofadownside.Wealsocametotheconclusion thatwewouldratherhaveitworkingon oneplatformcompletelyratherthanpartiallyon
multipleplatforms.Ultimately,theAndroidimplementationis somethingwewill completeata laterdate.
Asfarasdeliverablesgo,thereareseveralthatwehaveplanned,toensurethatthe projectisbeingcompletedinatimelymanner.Sinceneitherofushaveanymobileapplication developmentexperience,ourfirstdeliverablewillbea simplehomescreen,thatasksforthe student’slogincredentials,orallowsthem toregisterfortheapp.
Thenextbigdeliverablewilladdingthecurrent quarter’sclassofferingstotheappso thatstudentswillbeabletoselectwhichcourses theyareenrolledin. Thismaybesomewhat difficult,aswewillnotbeabletogetastudent’scourseinformationdirectly fromtheCalPoly site,sowewillhavetofindsomeotherwaytogetthisinformation.Allofthis willbeaddedtoa NoSQLdatabaseandwillbeupdatedonce atthebeginning ofeachquarter.
Thisisjustaroughoutlineofwhatweplan ondoing.Asadisclaimer,wemaydecideto addnewfeatures,modifyexistingones,orremovethem altogetherifwedecide thatthereisa betteralternativeavailable.
User
Stories
1. Asastudent,Iwanttobeableto askquestionsaboutassignments andclasslogistics,and receiveresponsesintheformofreplies,so thatwhenIwon’tbeconfusedor
2. Asastudent,Iwanttohavetheabilitytoaddanddeletecourses, toaccountforcourses thatIhavedroppedandadded afterthequarterhasbegun.
3. Asaninstructor,Iwanttobeabletosendoutremindersaboutclass changesinamore speedyfashionthanemail,sothatmystudents willbemorequicklyinformedofchanges. 4. Asastudent,IwanttobeabletogivetipstootherstudentsonthingsIfoundusefulin
completingassignments,sothatnootherstudentisstuckfeelinglost inthecourse. 5. Asastudent,Iwanttobeabletocreateanaccountandregister, sothatmypreferences
andcourseswillbesaved.
6. Asastudent,Iwanttheaddcoursesscreen tofeaturethecurrent quarter’scourses,sothat Icancontinueusingthe application,quarterafterquarter.
7. Asaninstructor,Iwanteventstohaveastudent’s userIDattachedtoit,sothatIcan addressthestudentinprivateviaemail,ifthereisneed forfurtherdiscussion.
8. Asaninstructor,Iwanttheaddcoursesscreen togivetheability toenrollfordifferent sectionsofthecourse,sothatIcanbesuretoaddressthedifferent sectionsofmycourses appropriately.
9. Asastudent,Iwanttheeventsscreento listeventslistedfrom soonesttofurthestdue date.
10. Asastudent,Iwanttheability tomakeevents publicorprivate 11. Asastudent,Iwanttheabilitytodeleteeventsthat Ihavecreated.
12. Asastudentandinstructor,IwanttheeventsscreentorefreshinrealtimesothatIdonot havetoreloadthescreenmyselfwhen Isuspectthat eventshavechanged.
Swift
Vs.
Objective
C:
Our
Choice
UpondecidingtodevelopourapplicationontheIOSplatform,wehadadecisiontomake inregardstowhichprogramminglanguagewewoulddevelopitin.Ononehand,therewas ObjectiveC,whichisthelanguagethathasexisted sincethedawnof IOSdevelopment,andon theotherhandtherewasSwift,anewlanguage thatApplewaspushing forIOSdevelopersto beginusing.
Afterdoingsomeresearchwefoundthattherewereseveraladvantages thatbothSwift andObjectiveChadoveroneanother.Forstarters,SwiftrunsmorequicklythanObjectiveC, andinfact,fasterthanC++.Inaddition,Swift usestheLLVMcompiler, whichisusedby modernlanguagessuchasPythonandScala,andis morefriendlytodevelop on.Swiftalsogot ridoftheuseofpointers,whichalsomakesit“safer”todevelopon. UnlikeObjectiveC,Swift supportsAutomaticReferenceCounting,whichhelpstopreventmemoryleaks,and allowstothe developertobemoreproductive.Ontheotherhand,ObjectiveC,beingmuchmoremature,has manymoreestablishedconventionsthanSwift,beingonlyafewyearsold.Onecouldalsoargue thatObjectiveCismorefriendlytolearn,with themyriadoftutorials availableonlineforit.
overall.Theskillsetit’dprovideuswithwouldbe morebeneficialthanthe extraworkwe’dget donewithObjectiveC.
Firebase
Background
Wehadseveralchoicestochoosefromwhendecidinghowto hostourapplication’s databaseandhandleuserauthentication.UltimatelywefoundthatFirebaseprovided uswitha widevarietyoffeaturesthatwouldnotonlycomeinhandyinthenearterm,butalsoasourapp scalestothousandsofusers.Wealsoconsideredgoing withAWSmobile,but feltthatitwas gearedmoretowardslargerenterprisemobileappsratherthanonesonasmallerscalelikeours.
Oneofthebiggestreasonswechosetogo withathirdparty hostingplatformratherthan ourowninfrastructurewasbecauseofscalingand efficiency.Wesimplydonotknowhow quicklythisappwilltakeoff,andhavingto orderandmaintainhardware becausewechoseto hostthesiteonourownwouldnotserveasthebestuseofourresources.Inaddition,wefound thatFirebasehadeverythingthatweneededandmore,forafractionofthe initialcostthatit wouldbeforustocreateourownsmalldatacenter,asitspaymentsystem isbasedonusage.
applicationinordertoprovidethebestvaluefor studentsandprofessors.This tiesinwithits crashreportingsystem,whichcanbeusedtogrouptogetheruserswhofacesimilarissuesin ordertosendautomatednotificationstothoseusers,or getabetteridea ofthedemographicsof thoseaffected.Italsofeaturesarobustauthentication systemthatwouldotherwisetakeupto monthstodeveloponourown.Thisauthentication systemfeaturesthesamesecurityusedin GoogleSign-In,meaningthatweasdeveloperscanleveragethemanpower ofthousandsof Googleemployeesinsteadofusingourowntime andresources.Overall,wefoundthatFirebase wouldallowusasdeveloperstofocusondevelopmentofnewfeaturesratherthanhavingto manageinfrastructure.Especiallyfortheshortamountof timethatwehadtodevelopthis application,thiswasitssellingpoint.Hadwehostedourownserveranddevelopedourown authenticationsystem,wewouldnothavecompletednearlyas muchaswewere abletodoby usingFirebase.
Quarter
1
Goals
● LearnthebasicsofSwiftdevelopmentinordertogetabetterunderstandingofwhatwe willbeabletoaccomplishwithinourtimeline
● Decideonwhetherwe willhosttheapplication ourselvesoruseathirdpartyhosting platform
● CompleteadetailedlistofuserstoriesandUI diagramsthatwillgive usagoodidea abouthowourapplicationwilllookandbehave
● Completeworkontheregistrationandloginscreen ● Havetheschemafor ourdatabasecompleted
● Addincapabilityto listthecoursesthat aloggedinuserhasenrolledin ● Decideonanicon fortheapplicationaswellasa nameforit
● Addtheabilityto removecoursesfromtheapplicationthatyou arepersonallynot interestedinbeingingroupsfor
● Beginworkonthe calendarscreen,whichwe arestilldecidingonanappropriatelayout for
Quarter
1
Progress
Report
Duringthefirstquarterofourseniorproject,wehavemetallofthe goalsthatweset forthatthebeginningofthequarter.Ourmaingoalsduringthesepastfew monthsweretotest thewaters,inthesensethatwewantedtomakesurethatwehadthepiecesnecessaryinorderto createthisapplication.Forone,weneededtobe surethatwehad accesstoeitherstudents’ portalsoralistingofallcourses.Ouroriginalgoalwastohavestudents signintotheapplication withtheirCalPolycredentials,butwerealizedthat doingsowasnot possiblewithoutmonthsof planningandapprovalsthatwedidnothavethetimetogothroughfor theproject.Sowe
Wealsogotourinfrastructureintactduringthis quarter.Wedecidedtousefirebaseto hostourapp,andproceededtosetupuserauthentication, andgotthedatabasesetupforit.We thenmadeUIsketchesforwhatwewantthevariousscreensoftheapplication tolooklike.After thatwecreatedtheusecasesfortheapplicationthatwewillcontinueto updateduringournext quarter.
Atthispoint,webegantoactuallywork ontheapplicationitself.Thisentailedfirst creatingtheloginscreen,andthenworkingonallowinguserstoaddcoursestheywereenrolled in.Thesechangeswerethenplacedintothereal timeNoSQLdatabasethat ishostedonFirebase.
Thusfartherehavenotreallybeenanychanges toourplansfor theapplicationexceptfor thefactthatwearenotusingCalPolyauthenticationforuseraccounts.We donotanticipateany futurechangestoourfinalgoalfortheapplicationatthispointeither,but thisisofcourse
subjecttochange.
Sofar,Gurjeevanhasworkedontheparsingscripttogetallofthedatafrom
schedules.calpoly.eduandintotheFirebaseDatabase.He alsoworkedon highlightingofcourses onthecourseadderpageandthepushingof thisdataontothe FirebaseDatabase.Waylinworked onsettingupourFirebaseinstance,theuser registration/login,andondisplayingcoursesonthe courseadderpagefromthefirebasedatabase.Webelieve thatasateam wehaveworkedwell.
Ourplanforwhenweworkontheprojectnextremainsthesame.We stillwantthisapp tobeadaptedbyCalPolycampuswide.Thisiswhat wouldmaketheappmostusefultoall.With eachstudentusingit,everyonewiththeappwill benefit.Thiswillget themostnumberof