05/07/16 The final exam room locations currently listed on Testudo are INCORRECT! The correct room assignments are listed below. Be sure you are in the right room!
Sections Room 0101, 0102, 0103, 0104 ARM 0126 0201, 0202, 0203, 0204 ARM 0131 0301, 0302, 0303, 0304 ARM 0135
05/06/16 The final exam will be on Friday 5/13 from 4:00PM to 6:00PM. Please arrive at 3:50. Be sure to bring pencils and working erasers. The exam location depends on your section number.
04/15/16 Project #7 has been posted. This is the last project, so do a good job!
04/15/16 The final exam will be on Friday May 13th from 4:00PM to 6:00PM. The location(s) will be announced later.
04/13/16 Exam #2 grades are now visible. The median score on the exam was 74. Grades for students who took the test with DSS are not available, because the exams have not been graded yet.
04/13/16 Project #6 has been posted.
04/09/16 Note about Project #5 release tests: The test called testDeckCopyConstructor also relies on your "deal" method. If your deal method is not working correctly you will also fail the copy constructor test.
04/01/16 Project #5 has been posted.
03/21/16 Project #4 has been posted.
03/20/16 The deadline for Project #3 has been extended to Wednesday night to give students who are stuck more opportunities to visit during office hours. Project #4 will still be posted on Monday, and the deadline for project #4 (and subsequent projects) will not be extended.
03/20/16 To see where you have lost points for "style" on projects, go to the submit server and navigate to your most recent project submission. Click the link that says something about "code review". You will be able to see comments from the grader that have been placed throughout your source code.
03/04/16 Project #3 has been posted.
03/03/16 Project #3 will be posted tomorrow (Friday). I still need to teach you about "constructors" before you are ready for this assignment!
02/29/16 The first midterm will be in your discussion section on Wednesday. The lecture on Wednesday is also mandatory! During the lecture I will be presenting material that is very important; if you aren't there then you are likely to be very lost in the class later. Come to both class sessions on Wednesday!
02/29/16 For students in the 1:00 lecture: There ARE, in fact, other ways to solve the GCD question, which are also reasonable. Some students in your lecture had found an alternate solution that was actually fine (I wasn't understanding what they were trying to describe). My apologies to those students for dismissing their idea. On Wednesday I'll show you guys an even more elegant solution that students in my 2:00 lecture came up with!
02/21/16 Project #2 has been posted.
02/21/16 Project #2 has been posted.
02/19/16 New study questions have been posted!
02/16/16 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 in this course.) 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.
02/12/16 Project #1 has been posted.
02/04/16 The "drop/add" period has been extended to Tuesday 2/9. If you are on the waitlist, please continue to "check in" and speak with me on Monday if you are still not registered.
01/28/16 All students must attend the class sessions for which they are registered! This applies to both the lecture and discussion. The course is overbooked 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/26/16 The first day of classes this semester will be Wednesday 01/28. The discussion sessions that day are being canceled, but we will have the lecture as usual; please be sure to attend.
01/26/16 Welcome to CMSC 131 for Spring 2016. Note that this website is for sections 010X/020X/030X only. If you are in one of the 040X sections then you have a completely separate website here. Important announcements will appear here as the course moves along. 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 is no required book for this course. There are many excellent introductory books on programming in Java. One that I can recommend is Java Foundations Older editions of this book are nearly identical to the latest edition, and you can find them sold cheaply online.
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||Last day for schedule adjustment
Primitive types; Strings; Arithmetic operators; Comparison operators
|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"||Fun day -- topics TBA|
|Spring break||Spring break||Spring break|
|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)|
Last day to drop with a 'W'
Review for Midtern
| Midterm #2 in Lab
Rectangular two-dimensional arrays; Java interfaces; Polymorphism
|Wrappers; Examples using Java interfaces|
|Complexity (Big-O)||Project design; Method overloading||Continue method overloading; Ternary conditional operator|
|Switch statements; Command-line Java; Javadoc||Data structures; Syntax for using Java generic collections; Stack; ArrayList||For-each loops; Java packages; package visibility|
|Review for final exam|
Office: 1201 A.V. Williams
Office Hours: M 11:30-12:30, W 11:30-12:30, F 4:00-5:00
|Karthik Sankararaman||Discussions 0101 and 0304||(See table below)|
|Alejandro Flores||Discussions 0102 and 0203||(See table below)|
|Mingfei Gao||Discussions 0204 and 0301||(See table below)|
|Pallabi Ghosh||Discussions 0202 and 0103||(See table below)|
|Tak Yeon Lee||Discussions 0104 and 0302||(See table below)|
|Janani Gururam||Discussion 0201||(See table below)|
|David Sekora||Discussion 0303||(See table below)|
|Ahmed Ghoneim||Grader||(See table below)|
|Shuo Li||Grader||(See table below)|
|Han-Chin Shing||Grader||(See table below)|
|Rotem Katzir||Grader||(See table below)|
Students in sections 010X/020X/030X may visit
If you are in sections 040X then you must see a TA who has been assigned to your sections -- see your class webpage or talk with your instructor.
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.
|9:00||Shuo||Shuo and Mingfei||Janani and Karthik||Shuo||Rotem|
|10:00||Shuo||Ahmed and Mingfei||Mingfei and Karthik||Ahmed and Mingfei||Rotem|
|12:00||Pallabi||Pallabi and Karthik||Ahmed||Alejandro and Janani|
|1:00||Tak||Mingfei||Ahmed and Alejandro||Han||Han|
|4:00||David||Pallabi and Tak||Karthik||Rotem|
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!||Tuesday 02/09, 11:00PM|
|Orioles Baseball||Sunday 02/21, 11:00PM|
|Flags of the World||Monday 02/29, 11:00PM|
|Medieval Soldiers||Wednesday 03/23, 11:00PM|
|Mandelbrot Set||Thursday 3/31, 11:00PM|
|Poker Simulator||Sunday 04/10, 11:00PM|
|Cafe 131||Tuesday 04/26, 11:00PM|
|Fish Club||Tuesday 05/10, 11:00PM|