CMSC 132 | |
Sections 020X, 040X | |
Web Accessibility |
05/15/19 Today (Wednesday) will be the last day for office hours. Also, the window for regrade requests has passed. Please focus your attention on preparing for the final exam.
05/12/19 The slides on Algorithm Strategies are here.
05/10/19
Final Exam information:
The final exam is on Friday 05/17 from 4:00PM to 6:00PM. Please arrive
at 3:50PM. All students must
bring a photo ID to the exam. The exam location depends on your section number. If you arrive at the
wrong location you will be directed to go to the correct one.
Sections
Room
020X
ARC 0204
040X
SKN 0200
05/08/19 The slides on I/O Streams are here.
05/06/19 The slides on networking are here.
05/02/19 Fawzi's office hour today (Thursday 5/2) is canceled.
04/29/19 Project #9 has been posted.
04/24/19 TA office hours on Friday 4/26 will be held in room 1112 A.V. Williams instead of the new location in the Iribe Center. This is only for that one day -- next week office hours will resume in the Iribe Center just outside room 1107.
04/20/19 Slides on the "fast" sorting algorithms are here.
04/13/19 Project #8 has been posted.
04/11/19 The slide showing pseudocode for Dijkstra's Algorithm is here.
04/08/19 The slides on Graphs are here.
04/08/19 The slides on Heaps are here.
04/03/19 Project #7 has been posted.
03/26/19 The slides that I presented in class about Trees are here.
03/26/19 The slides that I presented in class about Sets and Maps are here.
03/25/19 Project #6 has been posted.
03/11/19 The TA office hours schedule has changed: There is no longer a TA available on Tuesday from 9:00 to 11:00, and there is no longer a TA available on Friday from 11-12. For the latest schedule, please click the "Contact Us" tab, and scroll to the bottom.
03/05/19 Project #5 has been posted.
03/03/19 I am posting some "study questions" that were developed a few years ago. I hope they are of some use for you this semester. They are here.
02/26/19 Project #4 has been posted.
02/24/19 Slides that were presented in lecture about GUI development are here.
02/20/19 Regarding project #3: There is a method in the GameModel class called getBoard that is oddly missing from the Javadoc. Please implement this method -- it's obviously a "getter". Be sure that your return value doesn't introduce a privacy leak. [I don't have the original sourcecode files, so it would be a lot of work to re-do the Javadoc.]
02/20/19 Project #3 has been posted.
02/12/19 Project #2 has been posted.
02/12/19 The slides about inheritance are here. You'll need to authenticate with the same credentials you use to access projects.
02/09/19 Due to the infamous "CVS Fiasco of Spring 2019", the due date for Project #1 has been extended by 1 day. The due date is now officially Wednesday 2/13 at 11:00PM. (The usual 24 hour late period still applies.)
02/09/19 Since we are no longer using CVS, I will be posting the lecture examples and the examples from the discussion sessions (labs) on the class webpage. I've already posted the old ones. To access them, go to the "Schedule" tab. You'll need to authenticate using the same login ID and password that you were told to use for the projects. (If you don't know what it is, just ask me or any TA.) To import these "projects" into Eclipse, follow these instructions. (Read the section titled "Importing (Projects)".
02/08/19 Important: The CVS repositories are dead! (Long story.) I'll be distributing projects and examples to you using zip files. If you need the project #1 files, you'll need to download the zip file found in the "Assignments" tab. (It's password protected -- come to class to find out what the password is.) Once you've downloaded the zipfile for a project, you'll need to import it into Eclipse. It's very easy. Instructions are here. Read the section titled Importing (Projects).
02/05/19 The Maryland Center for Women in Computing (MCWIC) will be offering free tutoring for all students in this course. Both 1 on 1 and "guided study sessions" are available. Tutoring will be in room 3136 A.V. Williams, starting on February 11th. Guided Study Sessions for this course will be held on Mondays at 6:00PM and Wednesdays at 11:00AM. To sign up for 1 on 1 tutoring go to http://go.umd.edu/TutorRequest
02/05/19 I heard from the TAs that some students were writing poor implementations of yesterday's lab exercise (StringCatalog), so I posted a decent implementation to everyone's CVS repositories. I called it "132Spring19Lab03Solution". Check it out!
02/04/19 Project #1 has been posted to your CVS repository. Click the "Assignments" tab to find a link to the project description.
01/26/19 All students must attend the class sessions for which they are registered! This applies to both the lecture and discussion. The course is quite full and so we will be enforcing this policy strictly. Quizzes or in-class assignments handed in during the wrong class session will not be graded.
01/23/19 This is the class webpage for CMSC132, sections 020X and 040X only. Please check here often (at least once a day) for important class announcements.
This is a second programming course for Computer Science majors with a focus on object-oriented programming. The goal of the course is to continue development of skills in program design, implementation, testing, and debugging, using a graphical IDE. Additionally, this course will introduce abstract data types and data structures, the Java Collection Framework, inheritance, and concurrent programming. All programming will be done in Java.
Course Coordinator:
Fawzi Emad
Recommended Text:
There is no required book for this course. There are many excellent introductory books on programming
in Java. Look for one
that includes material on "data structures". One that
I can recommend is
Data Structures and Abstractions with Java You can find this book for a reasonable price online at various online vendors.
(You can even "rent"
the book, or get an electronic downloadable version.)
There will be eight substantial programming projects as well as numerous shorter in-class assignments to be completed during the lab sessions. Some are considered "closed" assignments which you must complete by yourself and others are considered "open" assignments where some degree of collaboration is permitted. (More information about the open/closed policy will be provided in class and can be found here: Policy Regarding Open/Closed Projects.) There will also be two midterms, a final exam, and occasional quizzes.
All programming assignments can be implemented on the machine of your choice. You are welcome to do the work on a home computer if you have one. There should not be any machine-specific dependencies in your code. If we are not able to run your program because there is a difference between your and our computer environments, you must work with us to get your program to work in our environment. You are expected to use the Eclipse IDE for all programming assignments.
All programming assignments must be submitted before 11pm on the day they are due. They are to be submitted electronically according to instructions given with the assignments. Late assignments will be strictly penalized. Exceptional circumstances will be considered only if discussed with the instructor before the assignment is due. Late assignments will be penalized as follows:
Final grades will be computed according the following weights. (These weights are tentative and subject to future adjustment.)
Percentage | Component | 25% | Projects (8) [The weights of the individual projects will vary. Longer/harder projects will be worth more points.] |
---|---|
15% | Lab assignments (quizzes & exercises to be completed during your discussion sessions) |
15% | Midterm #1 |
15% | Midterm #2 |
30% | Final Exam |
You need to keep backups of your projects as you develop them. No extensions will be granted due to hardware failures or 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. You are allowed to use the Web for reference purposes, but you may not copy code from any website or any other source. 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. Without exception every case of suspected academic dishonesty will be referred to the Office. If the student is found to be responsible of academic dishonesty, the typical sanction results in a special grade "XF", indicating that the course was failed due to academic dishonesty. More serious instances can result in expulsion from the university. If you have any doubt as to whether an act of yours might constitute academic dishonesty, please contact your TA or the course coordinator.
The University of Maryland, College Park has a nationally recognized Code of Academic Integrity, administered by the Student Honor Council.B This code sets standards for academic integrity at Maryland for all undergraduate and graduate students. As a student you are responsible for upholding these standards for this course. 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
Examples of Academic Integrity Violations
The following are examples of academic integrity violations:
The Department of Computer Science takes the student course evaluations very seriously. Evaluations will usually be open during the last few weeks of the course. Students can go to www.courseevalum.umd.edu to complete their evaluations.
Topics Covered | Lecture Examples | Lab Examples | |
---|---|---|---|
Week 01 01/28 |
Course intro, Eclipse intro, review Java interfaces, polymorphism, data and procedural abstraction, encapsulation, Java collections overview, Collections interface, basic generic notation (ArrayList), for-each loops, Iterator interface, Iterable, enumerated types, autoboxing/unboxing |
Lecture01 Lecture02 |
|
Week 02 02/04 |
Inheritance, super, constructors of subclasses, casting, overriding, early vs. late binding, protected visibility, Object class, abstract classes, instanceof, "final", equals method, Comparable | Lecture04 Lecture05 |
Lab03 Lab04 |
Week 03 02/11 |
Comparators, testing, code coverage, programming errors, exception handling, checked vs. unchecked exceptions, throws, inner classes, nested classes, deep vs. shallow copy |
Lecture08 Lecture09 |
Lab05 Lab06 |
Week 04 02/18 |
clone, Cloneable, initialization blocks, static initialization blocks, anonymous inner classes, Intro to event driven programming and GUIs | Lecture10
Lecture12 |
Week 05 02/25 |
Asymptotic complexity, big-O notation, best/average/expected/worst cases, analyzing code fragments, classes with parameterized types, ? extends, overview of linear data structures and data types | Lecture14 Lecture15 | Lab10 |
Week 06 03/04 |
Implementing linked lists, stacks and queues, review for midterm | Lecture16 | Lab12 |
Week 07 03/11 |
Doubly-linked list, Java ArrayList, Java LinkedList, Set (ADT), hash tables, linear probing, hashing with buckets, Java hashCode, HashSet, LinkedHashSet, TreeSet | Lecture 20 | |
Week 08 03/18 |
Spring Break | ||
Week 09 03/25 |
Maps, HashMap, LinkedHashMap, TreeMap, recursion, singleton design pattern |
Lecture 21 Lecture 22 |
Lab15 Lab16 |
Week 10 04/01 |
trees, binary search trees, BST traversals, tree sort, heaps, heapsort | Lecture 24 Lecture 25 |
Lab18 |
Week 11 04/08 |
Priority queue, graphs, graph implementations, depth-first search, depth-first search, Djikstra's algorithm | Lecture 27 | |
Week 12 04/15 |
Sorting (bubble sort, selection sort, mergesort, quicksort, counting sort, radix sort) | Lab22 | |
Week 13 04/22 |
Concurrent programming, threads, Runnable, Thread class, join, begin data races; review for midterm | Lecture 34 | |
Week 14 04/29 |
More data races, synchronization, deadlock, Java I/O streams | Lecture 35 Lecture 36 |
|
Week15 05/06 |
Intro to networking, threaded web server example, overview of algorithm strategies | Lecture 38 | Lab28 |
Week16 05/13 |
Review |
Fawzi Emad
Email:
Office: IRB 2212
Office Hours: Tu/Th 2:10 to 3:10, Fri 11:00-12:00
Responsibilities | Office Hours | ||
---|---|---|---|
Ugur Koc | 0201 & 0202 discussion leader | (See table below) | |
Carolin Arnold | 0203 & 0204 discussion leader | (See table below) | |
Erika Schlunk | 0401 discussion leader | (See table below) | |
Adam Ackerman | 0402 discussion leader | (See table below) | |
Anastasiya Stolyarova | 0403 discussion leader | (See table below) | |
Brendan DeMilt | 0404 discussion leader | (See table below) | |
Paaras Bhandari | Grader | (See table below) | |
Sigurthor Bjorgvinsson | Grader | (See table below) | |
Nick Franzese | Grader | (See table below) | |
Brennan Hula | Grader | (See table below) | |
Masataro Koizumi | Grader | (See table below) | |
Frankie Olmsted | Grader | (See table below) | |
Ananth Penghat | Grader | (See table below) | |
Rohith Prabakar | Grader | (See table below) | |
Peter Thompson | Grader | (See table below) |
Office hours will begin on Wednesday 1/30. All TA office hours take place just outside room IRB 1107. Please note that a TA may need to leave 5 minutes before the end of the hour in order to go to his/her class. Please be understanding of their schedules.
MON | TUE | WED | THU | FRI | |
---|---|---|---|---|---|
9:00 - 10:00 | Rohith | Erika | Ugur | Nick | |
10:00 - 11:00 | Rohith | Erika | Ugur | Rohith | |
11:00 - 12:00 | Ana | Nick | Ana | Nick | |
12:00 - 1:00 | Ana & Ananth | Nick | Ana & Ananth | Ugur | Masa |
1:00 - 2:00 | Peter | Thor | Peter | Ugur | Ananth |
2:00 - 3:00 | Brendan & Peter | Thor | Brendan & Peter | Thor | Brennan |
3:00 - 4:00 | Paaras | Paaras | Paaras | Adam | Erika |
4:00 - 5:00 | Carolin & Paaras | Brennan & Paaras | Carolin & Paaras | Adam | |
5:00 - 6:00 | Masa | Thor | Carolin | Carolin |
The following web pages provide detailed references to information about Java.
In order to complete the projects for this course you must install Eclipse following the instructions in the Eclipse Tutorial. Note: If you already have Eclipse on your computer from taking CMSC131 at UMCP, you don't need to re-install it. But if you have installed Eclipse from some other source, it is important that you follow our installation instructions so that you will be able to submit projects easily. After you get Eclipse installed, you will need to connect Eclipse to your class account. To the right is a screenshot of the information you will need to enter into the CVS connection dialog box during this process. You can cut and paste the following lines into the dialog box:
Be sure to change the connection type to "extssh", as shown. |
To submit a project, go to the "Java" perspective in Eclipse. Right click on the project folder (e.g., p1) and select "Submit Project" from the pull-down menu. If you do not see the "Submit Project" option then your copy of Eclipse does not contain the class plug-ins. In this case, please see the Eclipse installations instructions on the Resources page, or drop by TA office hours for help.
You may submit many times (we grade only the last submission). You can check the status of your submissions by visiting the Submit Server Home Page and entering your University Directory ID and password.
Important: Your grade for each project will be based on the greater value of two scores: (1) The score on the very last submission prior to the deadline; (2) The score minus 20% on the very last submission prior to the late deadline (up to 24 hours late).
Click the name of a project below to see the project specification.
Project Name | Due Date | Zip file |
---|---|---|
Blackjack Game | Wednesday 02/13, 11:00PM | 132Spring19Project1.zip |
Minimum Snippet | Wednesday 02/20, 11:00PM | 132Spring19Project2.zip |
Clear Cell Game | Wednesday 02/27, 11:00PM | 132Spring19Project3.zip |
Interest Calculator GUI | Wednesday 03/06, 11:00PM | 132Spring19Project4.zip |
Linked Lists Project | Friday 03/15, 11:00PM | 132Spring19Project5.zip |
Dense Bag | Wednesday 04/03, 11:00PM | 132Spring19Project6.zip |
Binary Search Tree | Sunday 04/14, 11:00PM | 132Spring19Project7.zip |
Graphs and Mazes | Wednesday 04/24, 11:00PM | 132Spring19Project8.zip |
Hash Table | Friday 05/10, 11:00PM | 132Spring19Project9.zip |