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.
Prerequisite → C- or better in CMSC131 and MATH 140
Credits → 4
| Name | Office |
|---|---|
| Nelson Padua-Perez | AVW 1203 |
| Pedram Sadeghian | AVW 3267 |
For office hours and other contact information, visit the staff link.
| Title | Authors | ISBN-13 |
|---|---|---|
| Data Structures and Abstractions with Java, 4th Edition | Frank M. Carrano Timothy M. Henry |
978-0-13-374405-7 |
Final grades will be computed according the following weights:
| 26% | Projects |
|---|---|
| 3% | In-lecture Exercises |
| 15% | Quizzes, Exercises, Lab 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 CS Department takes academic integrity seriously. Information on how the CS Department views and handles academic integrity matters can be found at Academic Integrity.
The following are examples of academic integrity violations:
Additional information can be found in the sections titled "Academic Integrity" and "Code of Student Conduct" available at Course Related Policies.
We will be using (Piazza) for class communication. You will not be able to register to Piazza yourself. Your instructor will register you using the e-mail you have in the school system.
See the section titled "Attendance, Absences, or Missed Assignments" available at Course Related Policies.
See the section titled "Accessibility" available at Course Related Policies.
All course materials are copyright UMCP, Department of Computer Science © 2017. 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 | Textbook (Carrano/Henry) |
|---|---|---|---|---|
| CMSC132 Schedule | ||||
| Week #1 (Aug 28) |
Course Intro, Abstraction/Encapsulation, Enumerated Types, Comparable, Debugger |
CourseIntro.pdf OOPAbstraction.pdf OOPAbstractionCode.zip JavaConstructsI.pdf JavaConstructsICode.zip |
Eclipse installation P1 Out (Thu) |
Appendix A, B, C |
| Week #2 (Sep 4) |
Inheritance |
InheritanceOne.pdf InheritanceCode.zip InheritanceTwo.pdf InheritanceTwoCode.zip |
Quiz (Wed) P1 Due (Thu) |
Appendix D, Java Interlude 7 |
| Week #3 (Sep 11) |
Inheritance, Abstract Classes, Testing, Correctness, Exceptions |
InheritanceThree.pdf InheritanceThreeCode.zip TestingCorrectness.pdf Exceptions.pdf ExceptionsCode.zip |
P2 Out (Mon) Quiz (Wed) |
Java Interlude 2, 5 |
| Week #4 (Sep 18) |
Comparator Interface (Lab), Inner Classes, OO Design Intro Levels of Copying, Cloning, Constructor/Destructor, Initialization Blocks |
InnerClasses.pdf InnerClassesCode.zip OODesign.pdf JavaConstructsII.pdf JavaConstructsIICode.zip |
P2 Due (Tue) P3 Out (Tue) Quiz (Debugging) (Wed) |
Prelude, Java Interlude 6, 9 |
| Week #5 (Sep 25) |
Event-Driven Programming, GUI, UML (Lab), JavaFX, Lambda Expressions, Algorithmic Complexity |
GUI.pdf GUICode.zip AlgorithmicComplexityI.pdf |
P3 Due (Thu) P4 Out (Thu) |
|
| Week #6 (Oct 2) |
Dynamic System/State Design Pattern (Lab), Iterator/Marker/Observer Design Patterns (Lab), Generic Programming, Collections, Linear Data Structures |
Generics.pdf GenericsCode.zip Collections.pdf LinearDataStructures.pdf LinearDataStructuresCode.zip |
Midterm #1 (Wed) |
Chapter 4, Java Interlude 1, 3, 8 |
| Week #7 (Oct 9) |
Linear Data Structures, Recursive Algorithms, Memory Maps |
RecursiveAlgorithms.pdf RecursiveAlgorithmsCode.zip |
P4 Due (Mon) P5 Out (Wed) Mid-Term Grades (Thu, Oct 12) |
Chapters 3, 6, 7, 12, 13, 14, 15, 16, 17 |
| Week #8 (Oct 16) |
Hashing, Sets/Maps, Simplified List Implementation, File I/O, Singleton and Decorator Design Patters (Lab) |
Hashing.pdf HashingCode.zip SetsMaps.pdf SetsMapsCode.zip JavaIO.pdf JavaIOCode.zip |
P5 Due (Fri) P6 Out (Thu) |
Chapters 21, 22, Appendix E |
| Week #9 (Oct 23) |
Trees, Algorithmic Complexity II, Heaps/Priority Queues Network Basics (Lab) |
Trees.pdf LectureBinaryTreeCode.zip AlgorithmicComplexityII.pdf HeapsPriorityQueues.pdf |
Quiz (Wed) |
Chapters 23, 24, 25, 26 |
| Week #10 (Oct 30) |
Polymorphic Lists/Trees |
PolymorphicListsTrees.pdf PolymorphicListsTreesCode.zip |
Quiz (Wed) P6 Due (Wed) P7 Out (Thu) |
|
| Week #11 (Nov 6) |
Trees, Threads |
ThreadsI.pdf ThreadsICode.zip ThreadsII.pdf ThreadsIICode.zip |
Midterm #2 (Wed) |
|
| Week #12 (Nov 13) |
Synchronization I/II, Graphs Intro/Graph Traversals |
SynchronizationI.pdf SynchronizationICode.zip SynchronizationII.pdf SynchronizationIICode.zip GraphsTraversal.pdf |
P7 Due (Wed) P8 Out (Wed) |
Chapters 28, 29 |
| Week #13 (Nov 20) |
Dijkstras, Thanksgiving (no class Wed, Fri) |
DijkstrasAlgorithm.pdf DijkstrasExample.pdf PriorityQueueCode.zip |
Thanksgiving | |
| Week #14 (Nov 27) |
Sorting, Effective Java, Graph Implementation (Lab), Algorithm Strategies |
Sorting.pdf EffectiveJava.pdf GraphImplementation.pdf AlgorithmStrategies.pdf |
P8 Due (Tue) P9 Out (Wed) |
Chapters 8, 9 |
| Week #15 (Dec 4) |
Advanced Tree Structures (Lab), Software Life Cycle, Software Process Models, Problem Specification & Design, Testing |
SoftwareDevelopmentSEI.pdf SoftwareProcessModelsSEII.pdf ProbSpecificationSoftArchSEIII.pdf ProgramTestingSEIV.pdf |
P9 Due (Fri) Course Evaluations |
Chapter 27 |
| Week #16 (Dec 11) |
Final Exam Review |
MiscReview.pdf |
Last Day of Classes (Mon Dec 11) Final Exam (Thu Dec 14, 4pm - 6pm) |
|
| Name | Nelson Padua-Perez |
|---|---|
| Office | AVW 1203 |
| Office Hours | Mon, Wed → 4 pm - 5:30 pm |
| nelson [AT] cs [DOT] umd [DOT] edu |
| Name | Pedram Sadeghian |
|---|---|
| Office | AVW 3267 |
| Office Hours | MWF 2-3PM |
| pedram [AT] cs [DOT] umd [DOT] edu |
Please see Office Hours Guidelines. Also, please be aware of the TA room usage policy.
All TA office hours take place in AVW 1112.
| Name | Pic | |
|---|---|---|
| [AT] cs.umd [DOT] edu | ![]() |
This class is supported by the new Academic Peer Mentoring Program (AMP). Tutors are former cmsc132 students that will help you with the course. Keep in mind they will not be able to address grading concerns. Tutors will hold tutoring hours in the TA room. Additional information about this program can be found at http://tltc.umd.edu/amp.
| Name | Pic | |
|---|---|---|
| [AT] cs.umd [DOT] edu | ![]() |
| Name | Nelson Padua-Perez |
|---|---|
| Office | AVW 1203 |
| Office Hours | Mon, Wed → 4 pm - 5:30 pm |
| nelson [AT] cs [DOT] umd [DOT] edu |
| Name | Pedram Sadeghian |
|---|---|
| Office | AVW 3267 |
| Office Hours | MWF 2-3PM |
| pedram [AT] cs [DOT] umd [DOT] edu |
Please see Office Hours Guidelines. Also, please be aware of the TA room usage policy.
All TA office hours take place in AVW 1112.
| Name | Pic | |
|---|---|---|
| [AT] cs.umd [DOT] edu | ![]() |
This class is supported by the new Academic Peer Mentoring Program (AMP). Tutors are former cmsc132 students that will help you with the course. Keep in mind they will not be able to address grading concerns. Tutors will hold tutoring hours in the TA room. Additional information about this program can be found at http://tltc.umd.edu/amp.
| Name | Pic | |
|---|---|---|
| [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 | Textbook (Carrano/Henry) |
|---|---|---|---|---|
| CMSC132 Schedule | ||||
| Week #1 (Aug 28) |
Course Intro, Abstraction/Encapsulation, Enumerated Types, Comparable, Debugger |
CourseIntro.pdf OOPAbstraction.pdf OOPAbstractionCode.zip JavaConstructsI.pdf JavaConstructsICode.zip |
Eclipse installation P1 Out (Thu) |
Appendix A, B, C |
| Week #2 (Sep 4) |
Inheritance |
InheritanceOne.pdf InheritanceCode.zip InheritanceTwo.pdf InheritanceTwoCode.zip |
Quiz (Wed) P1 Due (Thu) |
Appendix D, Java Interlude 7 |
| Week #3 (Sep 11) |
Inheritance, Abstract Classes, Testing, Correctness, Exceptions |
InheritanceThree.pdf InheritanceThreeCode.zip TestingCorrectness.pdf Exceptions.pdf ExceptionsCode.zip |
P2 Out (Mon) Quiz (Wed) |
Java Interlude 2, 5 |
| Week #4 (Sep 18) |
Comparator Interface (Lab), Inner Classes, OO Design Intro Levels of Copying, Cloning, Constructor/Destructor, Initialization Blocks |
InnerClasses.pdf InnerClassesCode.zip OODesign.pdf JavaConstructsII.pdf JavaConstructsIICode.zip |
P2 Due (Tue) P3 Out (Tue) Quiz (Debugging) (Wed) |
Prelude, Java Interlude 6, 9 |
| Week #5 (Sep 25) |
Event-Driven Programming, GUI, UML (Lab), JavaFX, Lambda Expressions, Algorithmic Complexity |
GUI.pdf GUICode.zip AlgorithmicComplexityI.pdf |
P3 Due (Thu) P4 Out (Thu) |
|
| Week #6 (Oct 2) |
Dynamic System/State Design Pattern (Lab), Iterator/Marker/Observer Design Patterns (Lab), Generic Programming, Collections, Linear Data Structures |
Generics.pdf GenericsCode.zip Collections.pdf LinearDataStructures.pdf LinearDataStructuresCode.zip |
Midterm #1 (Wed) |
Chapter 4, Java Interlude 1, 3, 8 |
| Week #7 (Oct 9) |
Linear Data Structures, Recursive Algorithms, Memory Maps |
RecursiveAlgorithms.pdf RecursiveAlgorithmsCode.zip |
P4 Due (Mon) P5 Out (Wed) Mid-Term Grades (Thu, Oct 12) |
Chapters 3, 6, 7, 12, 13, 14, 15, 16, 17 |
| Week #8 (Oct 16) |
Hashing, Sets/Maps, Simplified List Implementation, File I/O, Singleton and Decorator Design Patters (Lab) |
Hashing.pdf HashingCode.zip SetsMaps.pdf SetsMapsCode.zip JavaIO.pdf JavaIOCode.zip |
P5 Due (Fri) P6 Out (Thu) |
Chapters 21, 22, Appendix E |
| Week #9 (Oct 23) |
Trees, Algorithmic Complexity II, Heaps/Priority Queues Network Basics (Lab) |
Trees.pdf LectureBinaryTreeCode.zip AlgorithmicComplexityII.pdf HeapsPriorityQueues.pdf |
Quiz (Wed) |
Chapters 23, 24, 25, 26 |
| Week #10 (Oct 30) |
Polymorphic Lists/Trees |
PolymorphicListsTrees.pdf PolymorphicListsTreesCode.zip |
Quiz (Wed) P6 Due (Wed) P7 Out (Thu) |
|
| Week #11 (Nov 6) |
Trees, Threads |
ThreadsI.pdf ThreadsICode.zip ThreadsII.pdf ThreadsIICode.zip |
Midterm #2 (Wed) |
|
| Week #12 (Nov 13) |
Synchronization I/II, Graphs Intro/Graph Traversals |
SynchronizationI.pdf SynchronizationICode.zip SynchronizationII.pdf SynchronizationIICode.zip GraphsTraversal.pdf |
P7 Due (Wed) P8 Out (Wed) |
Chapters 28, 29 |
| Week #13 (Nov 20) |
Dijkstras, Thanksgiving (no class Wed, Fri) |
DijkstrasAlgorithm.pdf DijkstrasExample.pdf PriorityQueueCode.zip |
Thanksgiving | |
| Week #14 (Nov 27) |
Sorting, Effective Java, Graph Implementation (Lab), Algorithm Strategies |
Sorting.pdf EffectiveJava.pdf GraphImplementation.pdf AlgorithmStrategies.pdf |
P8 Due (Tue) P9 Out (Wed) |
Chapters 8, 9 |
| Week #15 (Dec 4) |
Advanced Tree Structures (Lab), Software Life Cycle, Software Process Models, Problem Specification & Design, Testing |
SoftwareDevelopmentSEI.pdf SoftwareProcessModelsSEII.pdf ProbSpecificationSoftArchSEIII.pdf ProgramTestingSEIV.pdf |
P9 Due (Fri) Course Evaluations |
Chapter 27 |
| Week #16 (Dec 11) |
Final Exam Review |
MiscReview.pdf |
Last Day of Classes (Mon Dec 11) Final Exam (Thu Dec 14, 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 / Exercise | Good Faith Attempt | Deadline |
| Project #1 | Public Tests | Thu Sep 14, 8 pm |
|---|---|---|
| Project #2 | Public Tests | Tue Sep 26, 8 pm |
| Project #3 | Public Tests | Mon Oct 9, 8 pm |
| Project #4 | No Good Faith Attempt | None |
| Project #5 | Release tests score of at least 10 pts | Fri Oct 27, 8 pm |
| Project #6 | 6 public tests | Sat Nov 11, 8 pm |
| Project #7 | Public tests | Tue Nov 28, 8 pm |
| Project #8 | Public tests | Thu Dec 7, 8 pm |
| Project #9 | Public tests | Mon Dec 11, 8 pm |
After any class material is graded, you have a period to address any grading concerns. Unfortunately we will not be able to address any grading concerns after the specified deadline.
| Class Material | Grading Concerns Deadline |
|---|---|
| Project #1 | Thu Sep 28 |
| Project #2 (Part a) | Thu Sep 21 |
| Project #3 (Part a) | Wed Oct 4 |
| Project #2 | Wed Oct 11 |
| Project #3 | Thu Oct 19 |
| Quiz #1, #2, #3 | Thu Oct 19 |
| Exercise #1 | Thu Oct 19 |
| Midterm #1 | Mon Oct 23 |
| Project #4 | Thu Nov 2 |
| Project #5 | Thu Nov 16 |
| Quiz #4, #5 | Mon Nov 27 |
| Project #6 | Thu Nov 30 |
| Midterm #2 | Thu Nov 30 |
| In-lecture Exercise | Thu Nov 30 |
| Project #7 | Tue Dec 12 |
| Project #8 | Wed Dec 13 |
| In-lecture Exercise #2 | Wed Dec 13 |
| Project #9 (Graphs) | Tue Dec 12 |
The planned dates when projects/exercises 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/exercise descriptions can be found at Project/Exercise Descriptions.
A few days prior to each quiz (except pop quizzes) 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 Sept 6 |
| Worksheet #2 | Wed Sept 13 |
| Debugging Quiz (Quiz #3) | Wed Sep 20 |
| Worksheet #4 | Wed Oct 25 |
| Worksheet #5 | Wed Nov 1 |
The planned dates when exercises 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.
This page provides information regarding course exams.
| Exam | Date |
| Midterm I | Wed Oct 4 |
|---|---|
| Midterm II | Wed Nov 8 |
| Final | Thu Dec 14 |
| Week | Material |
| Week #1 | Review.zip, Debugging.zip |
| Week #3 | TVCode.zip, IntroHTML.pdf, IntroHTMLCode.zip |
| Week #4 | ComparatorCode.zip |
| Week #5 | UMLIntro.pdf |
| Week #6 | StatePatternDynSystems.pdf, StateCode.zip, IteratorMarkerObserverPatterns.pdf |
| Week #7 | CodeReviewExercise.pdf |
| Week #8 | TimeCode.zip, StringExample.java, SimplifiedListImplementation.pdf SingletonDecoratorPatterns.pdf, PizzaDecoratorCode.zip |
| Week #9 | Networking.pdf, NetworkingCode.zip |
| Week #10 | RegExpDateCode.zip |
| Week #14 | CompressionHuffman.pdf |
| Week #15 | AdvancedTreeStructures.pdf |
We will be using (Piazza) for class communication. Regarding Piazza:
Note: In Panopto you can reduce the time you spend watching a video with some of the speed options.
The goal of the course is to convey the fundamental concepts that enable programs to execute on real hardware. Those concepts include how the operating system virtualizes the hardware to provide basic services and abstractions to enable a user program to effectively use the available hardware resources. The course also addresses how different programming constructs and idioms work.
The basic abstraction of a program running as one or more threads of control in a single flat address space (a Unix process) is the key to the course. Emphasizing that abstraction as the underlying model for understanding how a program works, from both the user program and hardware perspective (with the OS in between), run as a theme through all topics in the course. Examples include C pointers (to data and functions), function calls and runtime stack management, dynamic memory management in the heap, and the fork/exec system calls.
@2017 University of Maryland College Park, MD 20742