|Sections 010X, 020X|
12/10/13 There was an error on slide #15 of the inheritance slides that I posted earlier today. I corrected the problem and posted the slides again. If you downloaded them before 3:40PM today then you should re-acquire them now.
12/10/13 Final exam information: The final exam will be on 12/17/13 from 4:00PM to 6:00PM. There are two different rooms, depending on which section you are in. Both rooms are in the Armory building. If you are in the honors section, or if you are in sections 0201/0202/0203/0204 then your exam is in ARM 0126. If you are not in the honors section, but are in sections 0101/0102/0103/0104 then your final exam is in ARM 0131. Please arrive at 3:50 so that we can get started on time. Bring pencils and erasers.
12/10/13 Here are the slides that I used while covering inheritance in class. We will finish this material on Friday.
12/02/13 Regarding Lab #6: Unfortunately, the linuxlab system was malfunctioning during some of the lab sessions, but is working normally now. The assignment will still be graded, but I have extended the deadline to Wednesday 12/04 at 6:00PM. If you were not able to get this done during the lab, please finish it and submit it. The instructions are included in the comments of the sourcecode.
11/26/13 Project #7 has been posted.
11/16/13 Project #6 has been posted. Please note that the due date for this project is the last day of the Thanksgiving break, but we will be posting project #7 (the last project) on the first day of the Thanksgiving break. We hope that this overlap will give you flexibility in how you choose to manage your time. As always, we recommend starting the projects immediately and finishing as early as possible.
11/01/13 Project #5 has been posted!
11/01/13 Reminder: To see where you lost points on project "style" grading, just go to the submit server and look at the source code from your last submission. You will see comments from the grader within your code indicating what you've done wrong and how many points you've lost.
10/30/13 Regarding JUnit code submitted with projects: We will not be grading your JUnit test code for "style". Of course you are encouraged to use proper style for your own benefit, but style on JUnit tests will not be part of your grade.
10/23/13 Project #4 has been posted!
10/22/13 Project #3 note: A small bug was found in one of the release tests. I think it only affected one student, but you might want to check the status of your most recent release tested submission to see if the results have changed.
10/21/13 Regarding today's lab exercise, "Lab03": The due date has been moved to Tuesday 10/22 at 6:00PM due to a technical problem. The project was distributed with the JUnit 3 jar file, but we are using JUnit 4 this semester. It is okay if you used JUnit 3 for this assignment, but if you are trying to use JUnit 4 and you get a message saying "Access restriction...", try the following:
1. Right-click the project folder and select "properties". Click the item on the left that says "Java Build Path". Select the "Libraries" tab. Click the item "JUnit 3". Click the Remove button. Click OK to exit this dialog box.
2. Right-click the project folder and select "New, JUnit test case". Make sure "JUnit 4" is selected at the top. Create a test class with any name you want. When asked about adding the JUnit4 jar file, select "perform the following action". Click OK.
10/10/13 Project #3 has been posted. Note that this is a CLOSED project!
10/05/13 The linuxlab system was down for a while this morning. The problem has been corrected. I have extended the deadline on project #2 until Monday at 11:00PM.
10/05/13 Please do not forget that Midterm #1 will be on Wednesday during your discussion section. We will have lecture on Wednesday as usual so be sure to attend!
09/27/13 Project #2 has been posted! Note that the due date is Sunday 10/6.
09/21/13 There is a way to have Eclipse automatically draw a vertical line in the editor at exactly the 80th column. (That way you can easily check that your lines are all less than 80 characters long, which is a requirement for project submissions.) Try this: Right-click inside the editor, then choose Preferences, General, Editors, Text Editors. You'll see a checkbox called "show print margin". Check this box, and enter the value 80 in the box below that says Print margin column.
09/21/13 If you have a laptop, please bring it with you to the discussion sessions on Mondays, including Monday this week. You will be doing practice problems in class on Mondays, many of which will be submitted for a grade. If you don't have your own laptop, we can loan you one, but it saves time if you have your own.
09/18/13 Project #1 has been posted! Click the Projects tab for the link to the project description.
09/12/13 Examples from yesterday's lecture have been distributed to your CVS repository. We will continue to distribute all coding examples from the lectures in this way. Please go to CVS perspective and "check out" the project called 131Fall2013Lec04Examples. The best way to learn this material is to experiment with our examples and then to try coming up with similar things on your own.
09/08/13 Wednesday's lab (discussion section) will be dedicated to helping students who are having trouble with Project #0. If you have already successfully submitted the project then you are excused from this lab session.
09/08/13 The due date for Project #0 has been moved to Wednesday 9/11.
08/31/13 The first lecture will be on Wednesday of this week, but the discussion session that day is cancelled.
08/27/13 All CMSC131 students are required to attend the discussion session in which they are officially registered.
08/27/13 Note that this website is for sections 0101, 0102, 0103, 0201, 0202, 0203, and 0204 ONLY.
08/27/13 Welcome to CMSC 131 (sections 010X and 020X) for the Fall 2013 Semester. Important announcements will appear here as the semester goes on. Be sure to look every day.
This is a first 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.
Course Coordinator: Fawzi Emad
There will be eight programming projects and other 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 collaboration is permitted. (More information about the open policy will be provided in class and can be found in the Policy Regarding Open/Closed Projects.) There will also be two midterms, a final exam, and occasional quizzes.
All assignments can be done on the machines 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 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 have points deducted as follows:
Final grades will be computed according the following weights. (These weights are tentative and subject to future adjustment.)
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.
|Introduction to course; Course tools||Demo of Eclipse IDE; Computer systems overview; Hardware; Memory|
|Operating systems; Software languages; What is Object Oriented Programming?||Why Java? Simple coding examples; Text output; Variables and assignment||Primitive types; Strings; Arithmetic operators; Comparison operators|
|Last day for schedule adjustment
Input via the Scanner; If and if/else statements; Logical operators
|More details on if and if/else statements; Rules for Java identifiers||Camel case convention; Symbolic constants; while loops; do-while loops|
|For-loops; Blocks; Nesting of loops||Writing static methods; Increment/decrement; Other assignment operators||Rules of precedence; Short-circuiting; Widening/narrowing conversions; Intro to design|
|Intro to objects and classes; Instance members||Java memory model (call stack and heap); Garbage collection; equals method; Begin example of detailed Java class ("Student")||Continue "Student" example; Constructors; toString; equals|
|Review for Midterm||Midterm #1 in Lab
More about static members vs. instance members
|Variable initialization; JUnit testing|
|Commenting; Call stack (frames, etc.); Java keyword "this"||Visibility; Encapsulation; "API"||Round-off errors; Intro to Java packages; Java libraries|
|Details of String class; Math class; break; continue||Exception handling (throw, try/catch)||More exception handling (finally); Begin review example: "Password" class|
|Continue "Password" example; Mutability; StringBuffer||Eclipse debugger||Arrays|
|More details on arrays; Arrays of references||Privacy leaks; Copying arrays (reference/shallow/deep copies); Two-dimensional arrays (ragged)||Rectangular two-dimensional arrays; Java interfaces; Polymorphism|
|Last day to drop with a 'W'
Wrappers; Examples using Java interfaces
|Complexity (Big-O)||Project design; Method overloading|
|Review for Midterm||Midterm #2 in Lab
Continue method overloading; Ternary conditional operator
|Switch statements; Command-line Java; Javadoc|
|Data structures; Syntax for using Java generic collections; Stack; ArrayList||"Fun Day" (Topics to be announced...)||Thanksgiving Break|
|For-each loops; Java packages; package visibility||Overview of inheritance||Inheritance (with conceptual example)|
|More about inheritance (Memory model; "super", etc.)||Even more about inheritance (dynamic binding, etc.); Why no multiple inheritance?||Review for final exam|
Office: 1201 A.V. Williams
Office Hours: MWF 8:00-8:50
|Victoria Cepeda||Grader||(See table below)|
|Mohamed Guenady||Grader||(See table below)|
|Isaac Julien||Honors section||(See table below)|
|Byung (Eddie) Kim||Sections 0101, 0102||(See table below)|
|Hitesh Maidesani||Sections 0201, 0202||(See table below)|
|Meethu Malu||Sections 0103, 0104||(See table below)|
|Nathan Yang||Section 0204||(See table below)|
|Joan Zhang||Section 0203||(See table below)|
|Hao Zhou||Grader||(See table below)|
Students in sections 010X and 020X may visit
All TA office hours take place in room 1112 A.V. Williams. 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.
|3:00||Joan & Hitesh||Joan & Hitesh||Mohamed|
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 that if you install Eclipse from some other source then you will not be able to submit your 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.
Below are collections of questions and practice problems that are designed to help you to learn the course material. These exercises are not being collected or graded. Answers are provided, but please try your best to solve each problem before looking at the solution! The list will be updated as the semester progresses.
Disclaimer: Your primary resource for studying should be the notes that you have taken during lectures! There will be questions on quizzes and exams that are not in any way represented in this study list. There will be questions on this study list that are not in any way represented on quizzes or exams. Please be aware that exam questions tend to combine more elements into a single question and many of the questions on the list are simpler than questions you will see on your exams. You may discuss these questions openly with anyone, including your classmates. If you are unsure about how the answer to any particular question is obtained, please drop by office hours for help. That's why we're here!
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|
|Hello World!||Wednesday 09/11, 11:00PM|
|Maryland Football||Saturday, 09/28, 11:00PM|
|Flags of the World||Monday 10/07, 11:00PM|
|Medieval Soldiers||Tuesday 10/22/13, 11:00PM|
|Mandelbrot Set||Sunday 11/03/13, 11:00PM|
|Poker Simulator||Friday 11/15/13, 11:00PM|
|Cafe 131||Sunday 12/01/12, 11:00PM|
|Fish Club||Thursday 12/12/13|