CMSC 131 | |
Sections 0201, 0202, 0203, 0204 | |
Web Accessibility |
05/01/18 Final exam information: The final exam will be on Monday 05/14 from 4:00PM to 6:00PM in room ARC 0204. You must bring a photo ID to the final exam. Please plan to arrive 10 minutes early so that we can get situated and begin on time. ID cards will be checked at the door and students without one will be turned away.
04/26/18 Project #7 has been posted! This is the last project, so do a good job!
04/13/18 Project #6 has been posted.
04/01/18 Project #5 has been posted.
03/26/18 Fawzi's office hours tomorrow (3/27) are cancelled due to an emergency. I'm sorry about this -- if there is something you need to discuss with me (that cannot be handled by a TA), please email me and we'll try to work something out.
03/14/18 Project #4 has been posted.
03/03/18 Project #3 has been posted.
03/02/18 Even though campus was closed today, we will still have the exam on Monday, as scheduled. Be sure you are there! Please be on time, and bring pencils with erasers. Note that the exam is in your discussion session, not during the lecture. If you miss your discussion session on Monday, your grade for the exam will be recorded as 0.
02/28/18 The grace system (where your CVS repository is) will be unavailable on Sunday 03/04 from 8:00AM to 7:00PM. On Friday I will be posting the next project (Project #3), so you will not be able to check out the project files during most of the day on Sunday.
02/18/18 Project #2 has been posted!
02/15/18 Registration for Bitcamp is now open! Bitcamp is an enormous (1200+ participants) "hackathon" hosted here at UMCP in the Xfinity Center. Bitcamp is 36 hours of fun, learning, making friends, exploring new technologies, and building awesome things! Beginners are welcome. For lots more information, click this link.
02/15/18 If you'd like to have Eclipse draw a vertical line in the editor at the 80th column (so that you can easily check that your lines are not too long), see this link.
02/12/18 Fawzi's office hours on Tuesdays have moved to 10:30-12:30 for the remainder of the semester.
02/09/18 Project #1 has been posted!
02/04/18 Class accounts are back to normal now. The system was down for a day or so. I have extended the due date for Project #0 by 48 hours (so it is due tonight at 11:00PM). For those students who were not registered in the course until Friday, your due date is Wednesday 02/07 at 11:00PM.
02/03/18 At the moment our class accounts (on the "grace" system) are not working properly, so you will not be able to connect to your CVS repository via Eclipse. I have emailed the University's IT staff so hopefully the problem will be corrected soon. I will extend the deadline on Project #0 a little bit. (The new deadline will depend on how quickly they get the system fixed -- look for another announcement soon.)
02/01/18 Students on the waitlist: The department has opened another section of CMSC131. Section 0102 now exists. If you are on the waitlist you should consider registering for this section while seats are available!
01/30/18 Project #0 is due on Friday 02/02. If you are registered for the course and don't manage to submit the project by the deadline, your grade on this assignment will be 0. (Students who are added to the course late will be given a very short extension on the deadline.)
01/26/18 Looking for a CMSC131 tutor this semester? Check out this flyer from the Maryland Center for Women in Computing.
01/23/18 Welcome to CMSC 131 for the Spring 2018 Semester. Important announcements will appear here as the semester goes on. Be sure to look every day. Note that this webpage is for sections 0201, 0202, 0203, and 0204 ONLY. If you are enrolled in one of the other sections then your webpage is here.
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
Recommended Text:
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.)
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 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).
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.
Monday | Wednesday | Friday | |
---|---|---|---|
Week 1 01/22 |
Introduction to course; Course tools | Demo of Eclipse IDE; Computer systems overview; Hardware; Memory | |
Week 2 01/29 |
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 |
Week 3 02/05 |
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 |
Week 4 02/12 |
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 |
Week 5 02/19 |
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 |
Week 6 02/26 |
More about static members vs. instance members | Variable initialization; JUnit testing | Review for Midterm |
Week 7 03/05 |
Midterm #1 in Lab Commenting; Call stack (frames, etc.); Java keyword "this" |
Visibility; Encapsulation; "API" | Round-off errors; Intro to Java packages; Java libraries |
Week 8 03/12 |
Details of String class; Math class; break; continue | Exception handling (throw, try/catch) | TBA |
Week 9 03/19 |
Spring Break | ||
Week 10 03/26 |
More exception handling (finally); Begin review example: "Password" class | Continue "Password" example; Mutability; StringBuffer | Eclipse debugger |
Week 11 04/02 |
Arrays | More details on arrays; Arrays of references | Privacy leaks; Copying arrays (reference/shallow/deep copies); Two-dimensional arrays (ragged) |
Week 12 04/09 |
Rectangular two-dimensional arrays; Java interfaces; Polymorphism | Wrappers; Examples using Java interfaces | Complexity (Big-O) |
Week 13 04/16 |
Project design; Method overloading | Continue method overloading; Ternary conditional operator | Review for Midterm |
Week 14 04/23 |
Midterm #2 in Lab Switch statements; Command-line Java; Javadoc |
Data structures; Syntax for using Java generic collections; Stack; ArrayList | For-each loops; Java packages; package visibility |
Week 15 04/30 |
Recursion | Recursion | Recursion |
Week 16 05/07 |
Review for final exam | Review for final exam |
Fawzi Emad
Email:
Office: 3265 A.V. Williams
Office Hours: Tue 10:30-12:30, Fri 5-6
Responsibilities | Office Hours | ||
---|---|---|---|
Cassidy Laidlaw | 0201 discussion leader | (See table below) | |
Anastasiya Stolyarova | 0202 discussion leader | (See table below) | |
Matthew Patrick | 0203 discussion leader | (See table below) | |
Arun Srinivas | 0204 discussion leader | (See table below) | |
Hong Wei | Grader | (See table below) | |
Isabella Stevens | Grader | (See table below) | |
Zonglin Tian | Grader | (See table below) | |
Ananth Penghat | Grader | (See table below) |
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.
MON | TUE | WED | THU | FRI | |
---|---|---|---|---|---|
9:00 - 10:00 | Cassidy | Zonglin | |||
10:00 - 11:00 | Cassidy | Isabella | Zonglin | ||
11:00 - 12:00 | Matt | Matt | |||
12:00 - 1:00 | Ananth | Ananth | |||
1:00 - 2:00 | Ananth | Ananth | Arun | ||
2:00 - 3:00 | Anastasiya | Anastasiya | Hong | Matt | |
3:00 - 4:00 | Isabella | Arun | Hong | Matt | |
4:00 - 5:00 | Isabella | ||||
5:00 - 6:00 | Anastasiya |
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!
Part 1: | Questions01 | Answers01 |
---|---|---|
Part 2: | Questions02 | Answers02 |
Part 3: | Questions03 | Answers03 |
Part 4: | Questions4 | Answers4 |
Part 5: | Questions5 | Answers5 |
Part 6: | Questions6 | Answers6 |
Part 7: | Questions7 | Answers7 |
Part 8: | Questions8 | Answers8 |
Part 9: | Questions9 | Answers9 |
Part 10: | Questions10 | Answers10 |
Part 11: | Questions11 | Answers11 |
Part 12: | Questions12 | Answers12 |
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! | Friday 02/02, 11:00PM |
Orioles Baseball | Sunday 02/18, 11:00PM |
Flags of the World | Friday 03/02, 11:00PM |
Medieval Soldiers | Wednesday 03/14, 11:00PM |
Mandelbrot Set | Sunday 04/01, 11:00PM |
Poker Simulator | Friday 04/13, 11:00PM |
Cafe 131 | Thursday 04/26, 11:00PM |
Fish Club | Sunday 05/06, 11:00PM |