Académique Documents
Professionnel Documents
Culture Documents
Instructors
AndrewDeOrio
awdeorio@umich.edu
Contact
PleasedirecttechnicalquestionstoourPiazzaforums.Forotherquestions,youcanreachthe
coursestaffateecs280staff@umich.edu.
Schedule
Forofficehoursanddiscussionsections,pleaserefertothecalendaronthecoursewebsite.
Textbook
Required:C++Primer,byLippman,LajoieandMoo.5thedition.
Ourtextbookisavailableinprintform,electronicKindleedition,andforfreethroughthe
UniversityLibrary.Ifyoudecidetorelyonthelibraryversion,pleasebeawarethatthenumberof
simultaneoususersislimited,andsometimestheremaybeawaittoaccessit.
Overview
Thiscourseprovidesafoundationforprogramming,thescienceofhowtoasadiscipline.
Studentswilllearnavarietyoftechniquesandprinciplestoquicklywritecorrectprogramsthat
areeasyforotherstounderstandandadapttonewpurposes.Thiscoursefocuseson
programminginthesmall,writingshortprogramsorprogramcomponentsthatareeasily
understoodbyasingleprogrammer.TheconceptscoveredinthiscoursearenotjustaboutC++
programming,butwewillseehowtheycanbeconcretelyrealizedintheC++language.
Bytheendofthiscourse,asuccessfulstudentwillbeableto:
Takeaproblemandconsidervariouspossibleapproachesforsolvingit
Selectanapproachoralgorithmthatprovidesforasimple,clean,wellstructuredsolution
ConvertthealgorithmintoC++code,usinggooddesignandstyle
Testanddebugtheprogramusingrigoroustechniques
Understandtheconceptsoftopdowndesign,dataencapsulation,informationhiding,and
proceduralanddataabstraction
Design,implementandusecompleteclasses,includingconstructors,destructors,and
operatoroverloading
Implementdynamicdatastructuresforstacks,queuesandlists
Beabletoquicklydesign,implement,testanddebugalargescaleprojectindependently
(1000+linesofcode).
Topics
Functionalabstraction
1. Specification
2. Recursion
3. Therecursion/iterationduality
4. Recursive/iterativeinvariants
5. Functionalgeneralization
Dataabstraction
1. Formalnotionsoftypeandtypehierarchies
2. Simpleandaggregatetypes
3. AbstractDataTypes:ADTs
4. Abstractionfunctionsandrepresentationinvariants
Dynamicresourcemanagement
1. Creationanddestruction
2. Rulesofsafety
3. Containertypes
4. Containeriteration
5. Polymorphism
Inourexplorationofthesetopics,wewilldiscussmanyelementsoftheC++language,suchas:
Arrays(1dimensionalandmultidimensional)
FileI/O
Structs,classes,andobjects
Overloadingoffunctionsandoperators
Friends
Strings(CstyleandC++stringclass)
Pointersanddynamicarrays
Templates
Linkedlists,stacks,andqueues
Iterators
Exceptions
Recursion
Functors
Prerequisites
TheprerequisiteforEECS280isEECS182orEECS183orENGR101orENGR151or
permissionofinstructor.Thefirstprojectshouldbesimpleifyouvesatisfiedtheprerequisites.
Website
Mostcoursematerialsaremadeavailableonthecoursewebsite,andareconsideredrequired
reading.Adetailedschedule,includinglecturetopics,assignmentduedatesandexamdates,is
alsoavailableonthecoursesite.
Forum
WewillbeusingPiazzatohostacourseforum.Youarerequiredtoreadthisregularlyitisthe
venuewewilluseforimportantcourseannouncementsandprojectclarifications.Inaddition,it
willbeasignificantsourceofhelpandhintsontheprojects.
Wedonotanswertechnicalquestionsviaemail.Inordertosaveeveryonetime,wewantall
studentstohavethebenefitofseeingeachquestionanditsanswer,sopleaseusetheforum.
Weaskthatyoudonotpostyourownsolutions,projectcode,testcases,oroutputtotheforum.
Also,pleasesearchtheforumbeforepostingtoavoidquestionsthathavealreadybeenasked
andanswered.
Projects
Overthecourseofthesemester,wewillassignfiveprogrammingprojects.Thefirstwillbeshort
andisbasedonlyonthingsweassumeyouhavecoveredinprerequisites.Theotherprojects
willbelongerandcovermajorcoursetopics.
ProgrammingEnvironment
Forthiscourse,youmusthaveaCAENaccount.AnyoneenrolledinEECS280iseligiblefor
one,butittakesalittlewhiletogetitsetup.WewillgradeyourprogramsintheCAENLinux
environmentandtheymustbesubmitted,compile,andruncorrectlyinthisenvironment.Atthe
timeofthiswriting,thisisversion4.4.7oftheg++compiler.
Youarefreetodevelopyourprogramsonanyplatformyoulike,butyoumayuseonlyANSI/ISO
standardC++,andareresponsibleforanydifferencesbetweenyourpreferredplatformandthe
gradingplatform.Tobesafe,though,werecommendyoudevelopintheCAENenvironment,
usingthemachinepoolloginlinux.engin.umich.edu.Thefirstdiscussionsectioncoversdifferent
waystoconnecttoCAENlinux.
SuccessfullyCompletingtheProjects
Wehavefoundthroughmanyyearsofteachingexperiencethatthemostcommonreasonfor
poorprojectperformanceisnotstartingearlyenough.Plantodosomeworkontheproject
everydayandtrytohaveitfinishedafewdaysaheadoftheduedate,becausemany
unexpectedproblemsariseduringtesting.Inaddition,thecomputingsitescanbecomevery
crowded,makingitdifficulttogetacomputertouse,soplanforthesethingstohappen.
Thesecondmostcommonreasonfornotdoingwellontheprojectsisnotaskingforhelpwhen
youneedit.Weofferhelpinofficehoursandontheclassforums.Whenyoucometooffice
hours,pleasebereadytoprovideaccesstoyourcode,preferablyelectronic.Anothergoodway
togethelpistopostaquestiontothecourseforum.Remember,ifyoufindthatyouarestuck
onapieceofyourprojectforanundueamountoftime,pleaseseeus!
Onemajorgoalofthiscourseisforyoutolearntotestanddebugyourprogramsindependently.
Wewillnotdebugthemforyou.Instead,wewillhelpyoutrytofigureouthowtotestanddebug
yourprogramyourself.Wewillalsoaskyoutodemonstratewhattestinganddebugging
techniquesyouhavealreadytried,andwhattheresultswere,beforeprovidinganyadvice.
Finally,alwaysmakemultiplebackupcopiesofyourwork!Ifyousomehowloseyourwork,itis
yourresponsibility.
ProjectEvaluationandGrading
Eachprojectwillbeevaluatedforbehavioralcorrectness,adherencetocourseprinciples,and
generalstyle.Someprojectsmayalsobeevaluatedonthequalityoftestcasesyousupply.
Aprogramiscorrectifitbehavesasspecifiedintheprojecthandout,forexample,bygenerating
thecorrectoutput.Aprogramadherestocourseprincipleswhenitusestechniquestaughtin
lectureandaskedforinthespecification.Forexample,inProject2,wewillaskyoutowrite
recursivefunctions.Afunctionthatusesaloopinsteadofrecursionwouldnoadheretocourse
principles,evenifitproducesthecorrectanswer.Finally,aprogramshouldbereadableby
otherprogrammers.Wehavepostedgeneralguidelinesforgoodstyleonthecoursewebsite.
DueDatesandExtensions
Programsturnedinaftertheexacttimeanddateontheassignmentwillreceiveazero.Wedo
notgenerallyofferextensions.Forexample,wedonotofferextensionsduetocrowded
computingsites,internetaccessproblems,accidentalerasureorlossoffiles,oroutside
conflictingcommitments.
Wewillconsiderextensionrequestsmadeinpersonandatleast2weeksinadvance,for
example,forreligiousholidays.Additionally,wewillconsiderrequestsfordocumented,
unanticipatedmedicalorpersonalemergencies.Ifyoucan'tseetheinstructorinadvancedueto
theemergency,thenseehim/herassoonasyoupossiblycan.Inallcases,werequireto
writtenproofoftheemergency.
AcademicIntegrity
Youmustcompleteprogrammingassignment1alone.Youmaycompleteprogramming
assignments25eitheraloneorwithapartner.Allprogrammingassignmentsinthiscourse
aretobedonebyyouoryourpartnership.
Youmaygiveorreceivehelponanyoftheconceptscoveredinlecture,discussion,orthe
textbook,andonthespecificsofC/C++syntax.Youareallowedtoconsultwithotherstudentsin
theclasstohelpyouunderstandtheassignmentspecification(thedefinitionoftheproblem).
Youmaynotcollaborateinanywaywithpeopleoutsideyourpartnershipwhenconstructingyour
solutionyourpartnershipworkingalonemustgeneratethesolutiontoaprogramming
assignment.Youarenotallowedtoworkouttheprogrammingdetailsoftheproblemswith
anyoneoutsideyourownpartnershiportocollaboratetotheextentthatyourprogramsare
identifiablysimilar.Youmaynotderiveyoursolutioninanywayfrompriorsolutions.Ifyouhave
anyquestionsastowhatconstitutesunacceptablecollaboration,pleasetalktotheinstructor
rightaway.Youareexpectedtoexercisereasonableprecautionsinprotectingyourownwork.
Donotletotherstudentsborrowyouraccountorcomputer,donotleaveyourprograminpublicly
accessibledirectory,andtakecarewhendiscardingprintouts.
WereportsuspectedviolationstotheEngineeringHonorCouncil.Toidentifyviolations,weuse
bothmanualinspectionandautomatedsoftwaretocomparepresentsolutionswitheachother
andwithpriorsolutions.TheHonorCouncildetermineswhetheraviolationofacademic
standardshasoccurred,aswellasanysanctions.ReadtheHonorCodefordetaileddefinitions
ofcheating,plagiarism,andotherformsofacademicmisconduct.
DOs
DoREADTHESEGUIDELINESCAREFULLYbeforeprogrammingwithanotherstudent.
Youmustfollowtheseguidelines,orriskbeinginvestigatedforanHonorCodeViolation.
Dochooseapartnerfromthecurrentsemesterofthiscourse.
Doputbothyouruniqnameandtheuniqnameofyourpartnerinthecommentsatthetop
ofallcodefiles.Thisisimportanttoavoidreferraltothehonorcouncil.
Dosubmityourowncopyoftheproject.
DONTs
Donotprogramwithsomeonewithoutunderstandingtheseguidelines.
Donotpartneronanassignmentwithsomeonewhohasalreadysolvedtheproblem.
Studentswhodothiswillnotlearnasmuchasthosewhopairwithsomeoneatasimilar
skilllevel.
Donotsharecodewithanyoneotherthanyourpartner,orastaffmember.
Donotsplittheworkinhalf.Itisimportantthatbothpartnersworkonallpartsofthe
program.Splittingtheworkmayharmyouroryourpartner'sunderstandingofthatpartof
thesolution.
Donotpartnerwithanyonewhoisnotcurrentlyenrolledinthecourse.
DiscussionSections
Indiscussionsections,youwillgainpracticewiththematerialfromlecture,withanemphasison
shortprogrammingtasksinsmallgroups.Theexercisesassignedduringdiscussionsection
areintendedtobecompletedduringdiscussiontime.Theworkfromdiscussionwillbeturned
in,andgradedforcompleteness.Weencouragegroupworkduringdiscussion.
GradingandExams
Yourfinalgradeisbasedonscoresfromprogrammingprojects,participationindiscussion
sectionsandtwoexams.Thetentativepointdistributionisincludedinthefollowingtable.Itis
notlikelythatthiswillchange,butcircumstancesmightoccurwhichwouldmakechanges
necessary,atthediscretionoftheinstructor.
Discussionexercises
5%
Programmingprojects(p14%,p2p59%)
40%
Midtermexam
25%
Finalexam
30%
Therearenolettergradesforindividualprojectsorexams.Thefinalcourselettergradeis
basedonthetotalweightedscoreearned.Finalgradeswillbeassignedbasedonthe
distributionofearnedscores,consistentwithpastincarnationsofEECS280.Inthepast,the
medianstudenthasreceivedagradeinthelowBrange,andstudentswithinonestandard
deviationofaveragecangenerallyexpecttopass.Wemayadjustourdistributionupordownif
thissemestersgroupdoesparticularlywellorparticularlypoorlyincomparisontopastgroups.
Inparticular,ifeveryonedoesgreatwork,wellassigneveryoneagreatgrade!Pleasenote,we
donotoffertheopportunityformakeuporextracreditworktoimproveyourgrade.
Exams
Weexpectyoutotakebothexamsatthescheduledtimes.Ifyoumissanexam,andamedical
orpersonalemergencyisnotinvolved,youwillreceiveazeroforthatexam.Ifyouanticipatean
examinanothercourseorareligiousholidaywhichconflictswithourexamtime,youmustnotify
theinstructoratleasttwoweeksbeforetheexamdate.Theexamdatesaregivenatthe
beginningofthetermsothatyoucanavoidschedulingjobinterviewsorothercommitmentson
examdayshencejobinterviews,etc.arenotconsideredvalidreasonsformissinganexam.
Midterm:
Wednesday,26February2014,7:00pm8:30pm
Final:
Monday,28April2014,10:30am12:30pm
RegradeRequests
Whileweworkhardtogradeaccurately,butwesometimesmakemistakes.Ifyoubelievewe
gradedanassignmentofyoursincorrectly,youcansubmitaregraderequestnolaterthanone
weekafterthegradedworkisoriginallyreturned.Wewillthenregradeyourentireassignment,
whichcancauseyourgradecangoup,butitcanalsogodown.
Submitprojectregraderequestsbyemailtotheinstructor.Submitdiscussionregraderequests
byemailtoyourGSI.Forexams,stapleawrittendescriptionofthegradingerrortotheexam
andgiveittoyourinstructor.
TipsforDoingWellintheClass
Youwillmaximizeyourgrade,andlearnalotatthesametime,ifyou:
Attendalllecturesanddiscussionsections(notethatmanytipsandhintsaboutprojects
aregivenduringclass!)
Readtheassignedreadings(textbooks,handouts,forum,webpages)
Handinyourworkontime(evenifaprogramdoesnotwork,turninwhateveryouhave
done)
Starttheprogrammingprojectsearlyandcomeforhelpassoonasyouneedit
Followtheprogramspecificationscarefully
AccommodationsforStudentswithDisabilities
Ifyouthinkyouneedanaccommodationforadisability,pleaseletyourinstructorknowatthe
beginningofthesemesteroratleast2weeksinadvance.Someaspectsofthiscoursemaybe
modifiedtofacilitateyourparticipationandprogress.Assoonasyoumakeusawareofyour
needs,wecanworkwiththeServicesforStudentswithDisabilities(SSD)officetohelpus
determineappropriateacademicaccommodations.SSD(7347633000http://ssd.umich.edu)
typicallyrecommendsaccommodationsthroughaVerifiedIndividualizedServicesand
Accommodations(VISA)form.Anyinformationyouprovideisprivateandconfidentialandwillbe
treatedassuch.