1CMSC 132: Object-Oriented Programming IINelson Padua-PerezChau-Wen TsengDepartment of Computer ScienceUniversity of Maryland, College ParkCourse Catalog DescriptionIntroduction to use of computers to solve problems using software engineering principlesDesign, build, test, and debug medium-size software systems. Learn to use relevant toolsUse object-oriented methods to create effective and efficient problem solutionsUse and implement application programming interfaces (APIs)Programming done in Java2Things You Will LearnObject-oriented software developmentModern software development techniquesObject-oriented designAlgorithms & data structuresLists, trees, graphsProgramming skillsJava API, IDE, testing, debuggingWhy Object-Oriented Programming?Coding is small part of software developmentEstimated % of time35% Specification, design20% Coding, debugging30% Testing, reviewing, fixing15% Documentation, supportObject-oriented approach makes other parts of software development easier3Course Is Not Just About JavaMay seem to focus on JavaAll programming in JavaMany interesting Java language featuresLessons intended to be generalPrinciples should apply to all languages Ways of thinking about designGeneral ideas about softwareCan translate skills to other languagesAssume You Already KnowCoding Variables, operators, loops, arraysBasic object-oriented programmingClasses, methods, inheritanceJavaClass libraries, exceptionsToolsEclipse IDE, debugger4Where does 132 fit in?CMSC 131Basic programming skillsCMSC 132Software design & basic algorithmsCMSC 212Low-level programmingCMSC 250Discrete math & logicCMSC 351Analysis of algorithmsOrganizationPersonnelInstructorsNelson, Chau-WenTeaching assistants3 section leaders2 gradersClassesLecturesLabsOffice hours5TextbookRequired“Modern Software Development Using Java”By Paul Tymann & Michael SchneiderTextbook (cont.)Recommended“Java Precisely”By Peter Sestoft6Projects8 projectsEvaluate design, coding, testing skillsTries to involve interesting application areasNetworking, user interfaces, data compressionLate policyProjects due at 6 pm20% penalty, up to 24 hours lateNo points after 24 hoursGood faith attemptMust attempt all projects to passProjects (cont.)EnvironmentEclipse IDEAutomated submission & testingSubmit serverhttps://submit.cs.umd.eduMaintains record of submissionsCVS repositoryMay use for researchRelease testingCan evaluate project using real test cases7Projects (cont.)Changes from Spring 2005Eclipse 3.1Java 5.0No longer using Dr. Java perspectiveNew Eclipse plugins from Prof. PughGradingBased onProjects, labs, quizzes, midterms, finalPoint distribution (roughly)40% Projects10% Lab assignments & quizzes12% Midterm #112% Midterm #226% Final ExamAvailable on-linehttps://grades.cs.umd.edu8WikiPublicly editable websiteAnnouncementsPost messagesServerhttps://www.csic.umd.edu/wiki/fall2005/cmsc132/Policy on project postingsCan ask about specification, setup, tools, etc.Do not ask about design, implementation, etc.Violators may face penalty for academic dishonesty Academic HonestyAll individual assignments & exams must be done individually (except "open" assignments)Do not copy (or allow others to copy) your work in any waySubmissions will be compared to submissions from current and previous semestersCases of academic dishonesty will be referred to the University's Office of Judicial ProgramsVisit Student Honor Council website for more detailed explanation of academic dishonesty9Excused AbsencesStudents must apply in writing and furnish documentary support for excused absencesSupport should explicitly indicate the dates or times the student was incapacitatedExcused absence does not typically translate into project extensionsStudents requesting reasonable academic accommodations due to a disability must provide a letter from the Office of Disability Support ServicesCourse AdviceStart projects earlyAsk questionsRead bookAttend lecturesAttend sectionsAttend office hours10Topics PreviewObject-oriented software developmentSoftware life cycleRequirements & specificationsDesigning objects & classes Testing & code coverageUnified Modeling Language (UML)Programming paradigmsDesign patternsTopics PreviewAlgorithms & data structuresAsymptotic efficiencyLists, stacks, queuesTrees, tries, heapsSets, maps, graphsRecursion11Topics PreviewProgramming skillsJavadocJunitJava collection frameworkExceptionsThreads, synchronizationJava APIs
View Full Document