Object-Oriented Programming II is a second programming course for Computer Science majors with a focus on object-oriented programming. The goal of the course is to develop skills such as program design and testing as well as the implementation of programs using a graphical IDE. All programming will be done in Java.
| Prequisites | CMSC131, MATH140 |
|---|---|
| Credits | 4 |
| Name | Office |
|---|---|
| Nelson Padua-Perez | AVW 1203 |
For office hours and other contact information, visit the staff link.
No required textbooks. The recommended textbook is:
| Title | Authors | ISBN |
|---|---|---|
| Objects, Abstraction, Data Structures and Design Using Java Version 5.0 | Elliot Koffman/Paul Wolfgang | 0-471-69264-6 |
Final grades will be computed according the following weights:
| 28% | Projects |
|---|---|
| 10% | Announced Quizzes |
| 6% | Exercises, Lab, Lecture Work |
| 28% | Midterms(2) (12% and 16%) |
| 28% | Final Exam |
Once we have graded any class material (e.g., exams, projects, etc.) we will post an announcement and a deadline by which you must submit any regrade request (if necessary). It is your responsibility to submit regrade requests by the specified deadline; no regrade requests will be processed afterwards.
Office hours get extremely busy the day before a project deadline. Therefore do not wait to start your projects. Regarding office hours and the TA Room:
You need to keep backups of your projects as you develop them. No extensions will be granted because you accidentally erased your project. Feel free to use the submit server as a backup tool by submitting often. You can also use tools like git, etc. Do not post code in any online system that is accessible to others (e.g., GitHub).
Note that academic dishonesty includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. In short, all submitted work must be your own. Cases of academic dishonesty will be pursued to the fullest extent possible as stipulated by the Office of Student Conduct.
It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit http://www.shc.umd.edu
The following are examples of academic integrity violations:
We will be using (Piazza) for class communication. Regarding Piazza:
Any student who needs to be excused for an absence from a single lecture, recitation, or lab due to a medically necessitated absence shall:
Any student who needs to be excused for a prolonged absence (2 or more consecutive class meetings) or for a Major Scheduled Grading Event, must provide written documentation of the illness from the Health Center or from an outside health care provider. This documentation must verify dates of treatment and indicate the time frame that the student was unable to meet academic responsibilities. No diagnostic information shall be given. The Major Scheduled Grading Events for this course include midterm(s) and final exam.
It is also the student's responsibility to inform the instructor of any intended absences from exams for religious observances in advance. Notice should be provided as soon as possible, but no later than the Monday prior to the exam for both the midterm(s) and the final.
Any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide a letter of accommodation from the Office of Disability Support Services within the first two weeks of the semester.
All course materials are copyright UMCP, Department of Computer Science © 2016. All rights reserved. Students are permitted to use course materials for their own personal use only. Course materials may not be distributed publicly or provided to others (excepting other students in the course), in any way or format.
This schedule is tentative and subject to change. Keep in mind that the slides may not include all the material discussed in lecture. You are responsible for any material we present in lecture, even if it does not appear in the posted slides.
| Week | Topics | Slides/Code | Work |
|---|---|---|---|
| CMSC132 (Secs 040x) Schedule | |||
| Week #1 (Jan 25) |
Course Intro, Introduction to OOP (Abstraction, Encapsulation), Abstract Classes |
CourseIntro.pdf OOPAbstration.pdf OOPAbstrationCode.zip AbsClassesModifiers.pdf AbsClassesModifiersCode.zip |
Eclipse installation |
| Week #2 (Feb 1) |
Java Language Features (Enumeration, Comparable/Comparator Interface)(I/II), Levels of Copying, Cloning, Constructor/Destructor, Initialization Blocks | JavaConstructsI.pdf JavaConstructsICode.zip JavaConstructsII.pdf JavaConstructsIICode.zip | P1 Out (Wed) |
| Week #3 (Feb 8) |
OO Design Intro, Inner Classes | OODesign.pdf InnerClasses.pdf InnerClassesCode.zip |
Q1 (Wed) P1 Due (Thu) |
| Week #4 (Feb 15) |
Event-Driven Programming, GUI, Algorithmic Complexity I, Snow Day Monday | GUI.pdf GUICode.zip AlgorithmicComplexityI.pdf |
P1 Due (Wed) P2 Out (Wed) |
| Week #5 (Feb 22) |
Testing/Program Correctness, Generic Programming, Collections, Linear Data Structures (Linked lists, Stacks, Queues) | ProgramCorrectness.pdf ProgramCorrectnessCode.zip Generics.pdf GenericsCode.zip Collections.pdf LinearDataStructures.pdf LinearDataStructuresCode.zip |
Q2 (Wed) P2 Due (Fri) P3 Out (Fri) |
| Week #6 (Feb 29) |
Hashing and Sets/Maps, Algorithmic Complexity II | Hashing.pdf HashingCode.zip SetsMaps.pdf SetsMapsCode.zip AlgorithmicComplexityII.pdf |
Midterm #1 (Wed) |
| Week #7 (Mar 7) |
Recursion | RecursiveAlgorithms.pdf RecursiveAlgorithmsCode.zip JSIntro.pdf JSIntroCode.zip |
P3 Due (Wed) |
| Spring Break 2016 (Mar 14-Mar 18) | |||
| Week #8 (Mar 21) |
Trees, Polymorphic Lists/Trees, Simplified List Implementation | Trees.pdf LectureBinaryTreeCode.zip PolymorphicListsTrees.pdf LecturePolymorphicListCode.zip | P4 Out (Thu) |
| Week #9 (Mar 28) |
Heaps/Priority Queues, File I/O, Network Basics | HeapsPriorityQueues.pdf JavaIO.pdf JavaIOCode.zip |
Q3 (Wed) |
| Week #10 (Apr 4) |
Effective Java, Software Life Cycle, Software Process Models, Problem Specification & Design, Testing | EffectiveJava.pdf SoftwareDevelopmentSEI.pdf SoftwareProcessModelsSEII.pdf ProbSpecificationSoftArchSEIII.pdf ProgramTestingSEIV.pdf |
P4 Due (Tue) P5 Out (Tue) |
| Week #11 (Apr 11) |
Threads | ThreadsI.pdf ThreadsICode.zip ThreadsII.pdf ThreadsIICode.zip | Midterm #2 (Fri) |
| Week #12 (Apr 18) |
Synchronization I/II, Graphs Intro. | SynchronizationI.pdf SynchronizationICode.zip SynchronizationII.pdf SynchronizationIICode.zip GraphsTraversal.pdf |
P6 Out (Mon)
P5 Due (Wed) |
| Week #13 (Apr 25) |
Graph Traversals, Shortest Paths, Dijkstras, Graph Implementation |
GraphImplementation.pdf DijkstrasAlgorithm.pdf PriorityQueueCode.zip DijkstrasExample.pdf |
P6 Due (Fri) Q4 (Wed) P7 Out (Fri) |
| Week #14 (May 2) |
Sorting, Algorithm Strategies, Design Patterns(I/II) |
Callbacks.pdf
AlgorithmStrategies.pdf
DesignPatternsI.pdf
PizzaDecoratorCode.zip
DesignPatternsII.pdf VisitorCode.zip StateCode.zip Sorting.pdf |
|
| Week #15 (May 9) |
Final Exam Review | MiscReview.pdf JavaWebToyWebServer.zip |
P7 Due (Mon) Course Evaluations Last Day of Classes (Tue May 10) Final Exam (Fri May 13, 4pm - 6pm) |
| Name | Nelson Padua-Perez |
|---|---|
| Office | AVW 1203 |
| Office Hours | Mon, Wed → 1:30 pm - 2:30 pm Thu → 2 pm - 3 pm |
| nelson [AT] cs [DOT] umd [DOT] edu |
Please see Office Hours Guidelines
All TA office hours take place in AVW 1112.
| Name | Pic | |
|---|---|---|
| Melika Abolhassani | melika.abolhasani [AT] gmail [DOT] com | ![]() |
| Qian Wu | wuqian [AT] cs.umd [DOT] edu | ![]() |
| Roozbeh Yousefzadeh | roozbeh [AT] cs.umd [DOT] edu | ![]() |
| Name | Nelson Padua-Perez |
|---|---|
| Office | AVW 1203 |
| Office Hours | Mon, Wed → 1:30 pm - 2:30 pm Thu → 2 pm - 3 pm |
| nelson [AT] cs [DOT] umd [DOT] edu |
Please see Office Hours Guidelines
All TA office hours take place in AVW 1112.
| Name | Pic | |
|---|---|---|
| Melika Abolhassani | melika.abolhasani [AT] gmail [DOT] com | ![]() |
| Qian Wu | wuqian [AT] cs.umd [DOT] edu | ![]() |
| Roozbeh Yousefzadeh | roozbeh [AT] cs.umd [DOT] edu | ![]() |
This schedule is tentative and subject to change. Keep in mind that the slides may not include all the material discussed in lecture. You are responsible for any material we present in lecture, even if it does not appear in the posted slides.
| Week | Topics | Slides/Code | Work |
|---|---|---|---|
| CMSC132 (Secs 040x) Schedule | |||
| Week #1 (Jan 25) |
Course Intro, Introduction to OOP (Abstraction, Encapsulation), Abstract Classes |
CourseIntro.pdf OOPAbstration.pdf OOPAbstrationCode.zip AbsClassesModifiers.pdf AbsClassesModifiersCode.zip |
Eclipse installation |
| Week #2 (Feb 1) |
Java Language Features (Enumeration, Comparable/Comparator Interface)(I/II), Levels of Copying, Cloning, Constructor/Destructor, Initialization Blocks | JavaConstructsI.pdf JavaConstructsICode.zip JavaConstructsII.pdf JavaConstructsIICode.zip | P1 Out (Wed) |
| Week #3 (Feb 8) |
OO Design Intro, Inner Classes | OODesign.pdf InnerClasses.pdf InnerClassesCode.zip |
Q1 (Wed) P1 Due (Thu) |
| Week #4 (Feb 15) |
Event-Driven Programming, GUI, Algorithmic Complexity I, Snow Day Monday | GUI.pdf GUICode.zip AlgorithmicComplexityI.pdf |
P1 Due (Wed) P2 Out (Wed) |
| Week #5 (Feb 22) |
Testing/Program Correctness, Generic Programming, Collections, Linear Data Structures (Linked lists, Stacks, Queues) | ProgramCorrectness.pdf ProgramCorrectnessCode.zip Generics.pdf GenericsCode.zip Collections.pdf LinearDataStructures.pdf LinearDataStructuresCode.zip |
Q2 (Wed) P2 Due (Fri) P3 Out (Fri) |
| Week #6 (Feb 29) |
Hashing and Sets/Maps, Algorithmic Complexity II | Hashing.pdf HashingCode.zip SetsMaps.pdf SetsMapsCode.zip AlgorithmicComplexityII.pdf |
Midterm #1 (Wed) |
| Week #7 (Mar 7) |
Recursion | RecursiveAlgorithms.pdf RecursiveAlgorithmsCode.zip JSIntro.pdf JSIntroCode.zip |
P3 Due (Wed) |
| Spring Break 2016 (Mar 14-Mar 18) | |||
| Week #8 (Mar 21) |
Trees, Polymorphic Lists/Trees, Simplified List Implementation | Trees.pdf LectureBinaryTreeCode.zip PolymorphicListsTrees.pdf LecturePolymorphicListCode.zip | P4 Out (Thu) |
| Week #9 (Mar 28) |
Heaps/Priority Queues, File I/O, Network Basics | HeapsPriorityQueues.pdf JavaIO.pdf JavaIOCode.zip |
Q3 (Wed) |
| Week #10 (Apr 4) |
Effective Java, Software Life Cycle, Software Process Models, Problem Specification & Design, Testing | EffectiveJava.pdf SoftwareDevelopmentSEI.pdf SoftwareProcessModelsSEII.pdf ProbSpecificationSoftArchSEIII.pdf ProgramTestingSEIV.pdf |
P4 Due (Tue) P5 Out (Tue) |
| Week #11 (Apr 11) |
Threads | ThreadsI.pdf ThreadsICode.zip ThreadsII.pdf ThreadsIICode.zip | Midterm #2 (Fri) |
| Week #12 (Apr 18) |
Synchronization I/II, Graphs Intro. | SynchronizationI.pdf SynchronizationICode.zip SynchronizationII.pdf SynchronizationIICode.zip GraphsTraversal.pdf |
P6 Out (Mon)
P5 Due (Wed) |
| Week #13 (Apr 25) |
Graph Traversals, Shortest Paths, Dijkstras, Graph Implementation |
GraphImplementation.pdf DijkstrasAlgorithm.pdf PriorityQueueCode.zip DijkstrasExample.pdf |
P6 Due (Fri) Q4 (Wed) P7 Out (Fri) |
| Week #14 (May 2) |
Sorting, Algorithm Strategies, Design Patterns(I/II) |
Callbacks.pdf
AlgorithmStrategies.pdf
DesignPatternsI.pdf
PizzaDecoratorCode.zip
DesignPatternsII.pdf VisitorCode.zip StateCode.zip Sorting.pdf |
|
| Week #15 (May 9) |
Final Exam Review | MiscReview.pdf JavaWebToyWebServer.zip |
P7 Due (Mon) Course Evaluations Last Day of Classes (Tue May 10) Final Exam (Fri May 13, 4pm - 6pm) |
You must satisfy a minimum set of requirements for each project (Good Faith Attempt) otherwise you will not pass the course (automatic grade of F). Each project defines its own good faith attempt criteria. Notice that you will not receive extra points for completing the good faith attempt. The grade you obtain in the project will be based on your ontime/late submission.
| Project | Good Faith Attempt | Deadline |
| Project #1 | Public Tests | Thu Feb 25 |
|---|---|---|
| Project #2 | Implementing at least one inner class | Wed Mar 9 |
| Project #3 | Four (any) Release Tests | Thu Mar 24 |
| Project #4 | Public Tests | Wed Apr 13 |
| Project #5 | Design Requirement (We expect to see at least five classes/interfaces) Notice you do not need to pass any public tests. | Tue Apr 26 |
| Project #6 | Public Tests | Mon May 9 |
| Project #7 | Two (any) Public Tests | Tue May 10 |
The planned dates when projects will be handed out and due is given in the course schedule. Beware that the exact dates are subject to change, but we will try to give you fair notice of any changes.
Project descriptions can be found at Project Descriptions
A few days prior to each quiz we plan to post a worksheet on this page. The dates for the quizzes are given in the course schedule. Beware that the exact dates are subject to change, but we will try to give you fair notice of any changes.
Worksheets are not turned in and they are not graded. The problems on the worksheet are for your own benefit and are designed to prepare you for the quiz. We will not be giving answers to the worksheet problems, but if you have a question you can talk to the course TA(s).
| Worksheet | Quiz Date |
|---|---|
| Worksheet #1 | Wed Feb 10 |
| Worksheet #2 | Wed Feb 24 |
| Worksheet #3 | Wed Mar 30 |
| Worksheet #4 | Wed Apr 27 |
This page provides information regarding course exams.
| Exam | Date |
| Midterm I | Wed Mar 7 |
|---|---|
| Midterm II | Fri Apr 15 |
| Final | Fri May 13 |
We will be using (Piazza) for class communication. Regarding Piazza:
Object-Oriented Programming II is a second programming course for Computer Science majors with a focus on object-oriented programming. The goal of the course is to develop skills such as program design and testing as well as the implementation of programs using a graphical IDE. All programming will be done in Java.
@2016 niversity of Maryland College Park, MD 20742