CMSC 131 | |
Sections 020X and 040X | |
Web Accessibility |
12/05/19
Final exam information:
The final exam will be on Thursday 12/12 from 4:00PM to 6:00PM. Please plan to arrive
at 3:50 so that we can get everything settled.
All students must bring a photo ID to the exam. If you arrive without a photo ID you will
be turned away and your grade on the final exam will be 0.
Students must report to the room indicated in the table below. Your room assignment depends on your last name.
This table is for all of Fawzi Emad's students (sections 020X and 040X).
LAST names | Room Assignment |
---|---|
Aamir through Garcia | ARC 0204 |
Gazda through Marchesi | ARM 0131 |
Margam through Safeer | ARM 0135 |
Sahni through Touchette | BPS 1250 |
Tran through Zubilova | ESJ 2208 |
11/23/19 Here is a zip file for the discussion session on Tuesday 11/26. Your TA will tell you to download and import this project into Eclipse.
11/22/19 Project #7 has been posted.
11/16/19
The Administrative Modernization Program (AMP) has asked me to post the following announcement:
If you have a few minutes to spare, please fill out this survey regarding the implementation of a campus-wide
financial literacy program at UMCP. Your voice will directly define how the program will work and what
resources students will have access to: Here is the link.
11/16/19 Here is a zip file for the discussion session on Tuesday 11/19. Your TA will tell you to download and import this project into Eclipse.
11/07/19 Project #6 has been posted!
11/07/19 Here is a zip file for the discussion session on Tuesday 11/12. Your TA will tell you to download and import this project into Eclipse.
10/31/19 Here is a zip file for the discussion session on Tuesday 11/05. Your TA will tell you to download and import this project into Eclipse.
10/28/19 Project #5 has been posted.
10/23/19 Here is a zip file for the discussion session on Thursday 10/31. Your TA will tell you to download and import this project into Eclipse.
10/17/19 Project #4 has been posted!
10/10/19 Here is a zip file for the discussion session on Thursday 10/17. Your TA will tell you to download and import this project into Eclipse.
10/07/19 Project #3 (Medieval Soldiers) has been posted. I will be talking about this project a bit during Wednesday's lecture.
09/21/19 Project #2 (Flags of the World) has been posted. I will be talking about this project in Monday's lecture, so you may want to wait until after class on Monday to get started.
09/18/19 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.
09/12/19 Project #1 (Maryland Football) has been posted! Click the "Assignments" tab for a link to the project description.
09/10/19 If you'd like to learn more about Computer Science student organizations, stop by the Computer Science Student Org Fair on Thursday 9/19 between 11:00AM and 3:00PM in the cantilever area of the Iribe Center. You can RSVP with this link.
09/04/19
The Iribe Initiative for Inclusion and Diversity in Computing is offering tutoring and guided study sessions for all
students enrolled in CMSC 131.
These tutors can help with concepts but will not provide
assistance with projects or assignments.
(See course TAs for help with projects.)
Questions about tutoring can be direted to inclusion@cs.umd.edu.
08/31/19
The Iribe Initiative for Inclusion and Diversity in Computing invites all Computer Science students to
join the Peer Mentoring Program.
For more about information sessions and signing up, click here.
08/29/19 The problem we were having with sections 0406 and 0408 not loading into the servers has been corrected. All students should be able to submit the "Hello World" project now.
08/28/19 For some reason sections 0406 and 0408 did not get loaded into our servers correctly, so you folks will not be able to submit the Hello World project yet. I have contacted the system administrators and I'm sure the problem will be resolved soon. Sorry for the inconvenience.
08/20/19 The first day of class is Monday 08/26. Be sure to attend!
08/20/19 All students are required to attend both the lecture and the discussion sessions for which they are registered! You may not attend an alternate section. The course is quite full and so this policy will be enforced strictly.
08/20/19 This is the class webpage for CMSC131 sections 020X and 040X only. Please check here often (at least once a day) for important class announcements.
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 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).
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 08/26 |
Course intro Lecture 01 Slides |
Eclipse demo, computer systems (hardware/software), RAM Lecture 02 Slides |
data storage, programming languages, compilers/interpreters Lecture 03 Slides |
Week 2 09/02 |
Labor Day Holiday | Intro to Java, local variables, primitive types Lecture 04 Slides Lecture 04 Coding Examples |
Local variables, primitive types, Strings, concatenation Lecture 05 Slides Lecture 05 Coding Examples |
Week 3 09/09 |
Scanner; Finish primitive types; arithmetic operators Lecture 06 Slides Lecture 06 Coding Examples | escape sequences, comparison and equality operators, comparing objects, if and if-else statements, logical operators
Lecture 07 Slides Lecture 07 Coding Examples |
Nesting if and if-else statements, "else-if" style; integer division Lecture 08 Slides Lecture 08 Coding Examples |
Week 4 09/16 |
While loops,do-while loops, for loops Lecture 09 Slides Lecture 09 Coding Examples |
choosing identifiers, named constants, Style grading on projects Lecture 10 Slides Lecture 10 Coding Examples |
nested loops; variable scope and initialization; Lecture 11 Slides Lecture 11 Coding Examples |
Week 5 09/23 |
Writing static methods; Project #2 overview Lecture 12 Slides Lecture 12 Coding Examples |
Increment/decrement operators; alternate assignment operators; precedence; short-circuiting; casting with primitives Lecture 13 Slides | |
Week 6 09/30 |
Intro to objects; instance members, memory diagrams, assignment with references Lecture 14 Slides Lecture 14 Coding Examples |
== vs. equals; writing a typical class: instance variables, instance methods (with "current object"), return values, intro to constructors
Lecture 15 Slides Lecture 15 Coding Examples | Continue to write a typical class (more contructors, equals, toString); summary of methods (instance, static) and variables (local, instance, static) Lecture 16 Slides Lecture 16 Coding Examples |
Week 7 10/07 |
Midterm #1 |
More on instance vs. static members; Overview and intro to Project #3;
Code correctness, formal verification, testing Lecture 17 Slides |
JUnit; Memory diagram for method calls
Lecture 18 Slides Lecture 18 Coding Examples |
Week 8 10/14 |
Java keyword "this"; public vs. private visibilities, API, data encapsulation
Lecture 19 Slides Lecture 19 Coding Examples |
Finish data encapsulation, Commenting, Floating point error
Lecture 20 Slides Lecture 20 Coding Examples |
Java packages, libraries, API for String and Math classes, break, continue, Intro to exception handling Lecture 21 Slides Lecture 21 Coding Examples |
Week 9 10/21 |
Exception handling (throw, simple try/catch) Lecture 22 Slides Lecture 22 Coding Examples |
More exception handling (multiple catch blocks, finally), Intro to Arrays
Lecture 23 Slides Lecture 23 Coding Examples |
More about arrays (iterating, copying, "resizing"), arrays of references
Lecture 24 Slides Lecture 24 Coding Examples |
Week 10 10/28 |
Mutability, StringBuffer, deep vs. shallow copy, Privacy leaks and defensive copies Lecture 25 Slides Lecture 25 Coding Examples |
Finish privacy leaks, 2-dimensional arrays
Lecture 26 Slides Lecture 26 Coding Examples |
Using the Eclipse debugger; Intro to Java interfaces and polymorphism Lecture 27 Slides Lecture 27 Coding Examples |
Week 11 11/04 |
Continue Java interfaces, wrapper classes (Integer, Double, etc) and auto-boxing/unboxing
Lecture 28 Slides Lecture 28 Coding Examples |
Finish up Java interfaces, method overloading, ternary operator, switch statements
Lecture 29 Slides Lecture 29 Coding Examples |
Intro to inheritance, polymorphism via extension, overloading vs. overriding
Lecture 30 Slides Lecture 30 Coding Examples |
Week 12 11/11 |
Object class, correct equals method, package visibility Lecture 31 Slides Lecture 31 Coding Examples |
Javadoc utility, overview of abstract data types and Java collections framework, ArrayList
Lecture 32 Slides Lecture 32 Coding Examples |
Review for midterm
Lecture 33 Slides Lecture 33 Coding Examples |
Week 13 11/18 |
Midterm #2 | For-each loops, Intro to asymptotic complexity
Lecture 34 Slides Lecture 34 Coding Examples |
Big-O notation, intuition for thinking about asymptotic complexity Lecture 35 Slides |
Week 14 11/25 |
More big-O examples Lecture 36 Slides |
Thanksgiving Break | |
Week 15 12/02 |
Intro to recursion; easy recursion examples Lecture 37 Slides Lecture 37 Coding Examples |
More recursion (including examples requiring a "helper" method) Lecture 38 Slides Lecture 38 Coding Examples | More recursion examples Lecture 39 Slides Lecture 39 Coding Examples |
Week 16 12/09 |
Review for final exam (Last day of class) |
Fawzi Emad
Email:
Office: IRB 2212
Office Hours: MW 1:00-2:00, F 2:00-3:00
Responsibilities | Office Hours | ||
---|---|---|---|
Erika Schlunk | 0201 & 0407 discussion co-leader | (See table below) | |
Naman Awasthi | (0201 & 0407 discussion co-leader) and (0203 & 0408 discussion co-leader) |
(See table below) | |
Brian Spates | 0202 discussion leader | (See table below) | |
Abbe Miller | 0203 & 0408 discussion co-leader | (See table below) | |
Ugur Koc | 0204 discussion leader | (See table below) | |
Benjamin Black | 0205 & 0402 discussion leader | (See table below) | |
Brendan DeMilt | 0206 & 0406 discussion co-leader | (See table below) | |
Anish Thakker | 0206 & 0406 discussion co-leader | (See table below) | |
Jerry Lan | 0207 discussion leader | (See table below) | |
Sigurthor Bjorgvinsson | 0208 & 0403 discussion leader | (See table below) | |
Carolin Arnold | 0209 & 0410 discussion leader | (See table below) | |
Annaliese Wilford | 0210 discussion leader | (See table below) | |
Mo Goldberger | 0401 discussion leader | (See table below) | |
Ananth Penghat | 0404 discussion leader | (See table below) | |
Sarah Alkon | 0405 discussion leader | (See table below) | |
Segev Elazar Mittelman | 0409 discussion leader | (See table below) | |
Tania Arya | Grader | (See table below) | |
Max Nguyen | Grader | (See table below) | |
Daniel McGarvey | Grader | (See table below) | |
Hrishik Rajendra | Grader | (See table below) | |
Elvin Liu | Grader | (See table below) | |
Vyas Gupta | Grader | (See table below) | |
Geeta Sawhney | Grader | (See table below) | |
Mary Wu | Grader | (See table below) | |
Shengkai Yang | Grader | (See table below) | |
Sharmila Duppala | Grader | (See table below) | |
Fei Shan | Grader | (See table below) | |
Jeremy Hu | Grader | (See table below) | |
Yu Wang | Grader | (See table below) | |
Ethan Hickman | Grader | (See table below) |
All TA office hours take place in the "open area" on the first floor of the Iribe Center, just outside of room IRB 1107. (When you exit the elevator, head to the left.) 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 | Anish & Shengkai | Thor | Ben | Thor | Anish |
10:00 - 11:00 | Shengkai | Abbe & Ethan | Ben | Fei & Ethan | Brian & Ananth |
11:00 - 12:00 | Ben | Ugur & Carolin | Sarah & Ben | Fei | Ananth |
12:00 - 1:00 | Brendan | Segev & Geeta | Mary | Brian & Segev | |
1:00 - 2:00 | Brendan & Tania | Ugur & Jeremy | Sarah & Tania | Abbe & Jeremy | Brian |
2:00 - 3:00 | Jerry | Vyas & Erika | Yu | Carolin & Erika | Max |
3:00 - 4:00 | Jerry & Naman | Mo | Yu | Mo & Carolin | Hrishik & Naman |
4:00 - 5:00 | Naman | Thor & Annaliese | Elvin | Sharmila | Naman |
5:00 - 6:00 | Danny | Thor & Annaliese | Carolin | Sharmila |
The following web pages provide detailed references to information about Java.
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: | Questions04 | Answers04 |
Part 5: | Questions05 | Answers05 |
Part 6: | Questions06 | Answers06 |
Part 7: | Questions07 | Answers07 |
Part 8: | Questions08 | Answers08 |
Part 9: | Questions09 | Answers09 |
Part 10: | Questions10 | Answers10 |
Part 11: | Questions11 | Answers11 |
Part 12: | Questions12 | Answers12 |
Part 13: | Questions13 | Answers13 |
Part 14: | Questions14 | Answers14 |
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 09/06, 11:00PM |
Maryland Football | Sunday 09/22, 11:00PM |
Flags of the World | Wednesday 10/02, 11:00PM |
Medieval Soldiers | Thursday 10/17, 11:00PM |
Mandelbrot Set | Sunday 10/27, 11:00PM |
Poker Simulator | Thursday 11/07, 11:00PM |
Cafe 131 | Friday 11/22, 11:00PM |
Fish Club | Sunday 12/08, 11:00PM |