Students use advanced problem-solving strategies to develop algorithms using classes and objects and techniques such as recursion, exceptions and file I/O. This course also focuses on designing small applications and effective testing strategies.
Meeting Location: | Fully Online |
Meeting Time: | Section 3: MWF 10:30-11:20AM Section 4: MWF 11:45AM-12:35PM |
Prerequisites: | A grade of "B-" or better in CS 149 or equivalent. |
Course Web Page: | http://w3.cs.jmu.edu/spragunr/CS159/ |
Required Textbook: | Programming in Java by Roman Lysecky and Adrian Lizarraga https://www.zybooks.com/catalog/programming-in-java |
Name: | Dr. Nathan Sprague |
Email: | spragunr@jmu.edu |
Office Hours: | http://w3.cs.jmu.edu/spragunr/schedule.html |
Questions related to course content should be asked through Piazza. The advantage of Piazza is that I can address common questions in one location, instead of answering the same question multiple times via email. I also encourage you to respond to each others' questions on Piazza. This provides everyone with more timely responses and formulating an answer provides a learning benefit to you as well. You may use email if you need to contact me directly.
My office hours this semester will be entirely online through Zoom. The meeting link will be made available through Canvas. If you need to meet with me outside of my posted hours, email me to make an appointment.
This course builds on the skills learned in CS149. While the focus in that course is on learning to use basic programming constructs such as variables, loops, methods, and conditional statements, the focus in this course is on problem solving within the object-oriented programming paradigm. We will learn object-oriented design techniques as well as object-oriented language features such as inheritance and polymorphism.
At the conclusion of this course, students will be able to
Course grades will be based on two midterms, a final exam, laboratory assignments, in-class activities, quizzes and programming assignments. Assignment specifications and due dates will be posted to the course schedule page. The final grade will be computed as follows:
Readings, Quizzes, Labs, Peer Instruction, and in-class activities. | 15% |
Programming Assignments | 25% |
Midterm #1 | 15% |
Midterm #2 | 20% |
Final Exam | 25% |
Letter grades will be assigned using the scale A=90-100, B=80-89, C=70-79, D=60-69, F=0-59, with potential minor adjustments after considering the overall performance of the class and actual distribution of numeric scores. I will use "+" and "-" grades at my discretion. I do not assign WP or WF grades except under extraordinary circumstances.
NOTE: A student that that does not earn 60% of the points on the final exam will receive a letter grade no higher than a C- for the course.
Most assigned readings will include embedded quizzes or exercises. These exercises will be included in your course grade.
Some class sessions will be dedicated to structured Laboratory exercises. Laboratory assignments may take longer than a single class period. Unless otherwise specified, lab assignments will be due by 11:00PM on the day of the activity. Attendance is required for lab activities. For most laboratory assignments you will be allowed to work in groups of no more than three students.
In general, it will not be possible to make up missed labs or in-class activities. However, in recognition of the fact that you may have some unavoidable absences, I will drop at least two lab/class-activity grades at the end of the semester.
Peer Instruction combines mini-lectures with multiple-choice questions that target common misconceptions. You will use a clicker-like app known as Socrative to respond to each question twice. The first response is ungraded, and will be followed by a short discussion with your peers. You will then respond again individually for a grade (2 points just for answering, 3 points if your answer is correct) and we will discuss the results.
There will be approximately 6 programming assignments over the course of the semester. There will be opportunities to get help on programming assignments from the lab assistants and from the instructor. I encourage you to start the projects early enough to take advantage of those resources. Programs will be graded on the basis of correctness, documentation, and overall code quality. All submissions must conform to the CS159 Style Guide.
Under the collaboration policy for this course, it is not considered a violation of the honor code to discuss programming assignments with other students at a conceptual level. However, all of the work that you submit must be written by you, based on your own understanding of the material. If I find evidence that solutions to programming assignments have been copied, all parties involved will be subject to prosecution under the honor code. If you have any questions about the limits of appropriate collaboration, please ask me.
All exams will be cumulative with an emphasis on material covered since the previous exam.
This course will involve synchronous online instruction. That means you are expected to (virtually) attend class at the posted time. You will need the ability to participate fully in a video meeting. This includes a space where you can speak and be heard without excessive background noise and sufficient Internet connectivity to send and receive video.
Synchronous class periods will involve a mix of lecture, quizzes and group work. My hope is to create an environment that is as close as possible to being together in the classroom, collaboratively engaging with course content. Most classes will involve a graded interactive component.
The ACM Code of Ethics and Professional Conduct (https://www.acm.org/code-of-ethics) forbids discrimination and harassment of all types. If you feel someone is violating these principles (e.g., by making inappropriate or demeaning remarks), it is your responsibility to take action by informing me or, if you feel comfortable doing so, addressing the individual directly. I will do my best to preserve your confidentiality while addressing the issue.
Learning environments should be built on mutual respect and support a diversity of thoughts, perspectives, experiences, and identities. Please advise me regarding any concerns or personal circumstances (including your name’s proper pronunciation, any name or pronouns not reflected on MyMadison, or significant extracurricular commitments) that might be relevant to your fullparticipation in this course.
Regular attendance and fully engaged participation is expected. Your grade will be partially based on in-class exercises and quizzes, so attendance will affect your grade.
It is expected that your work in this course will comply with the provisions of the JMU honor code: http://www.jmu.edu/honor/code.shtml.
Students who violate the Honor Code will receive a reduced or failing grade in the course. Other penalties may be imposed, and all violations will be reported to the Honor Council. Automated tools may be used on any assignment, at any time, to detect inappropriate collaboration and to determine the originality of submissions.
A key component of academic integrity is giving credit where credit is due. If you receive assistance, either from another student or from some other source, you must acknowledge that fact. To that end, all programming and homework assignments submitted for this course must include a statement that acknowledges any assistance you received and must contain the statement: "This work complies with the JMU Honor Code."
If you are unable to take an exam at the scheduled time because of illness or other problems, you must contact me beforehand to arrange to take the exam at a different time. Failure to make prior arrangements for a missed exam will result in a grade of 0 for the exam.
Completed programming assignments must be submitted through Autolab before the assignment deadline. Late assignments will not be accepted for credit.
Except under extraordinary circumstances, I will not provide extensions for illnesses, extracurricular obligations, etc. Instead, you will have three "late days" which may be applied to programming assignment submissions (with possible exceptions for projects due at the end of the semester or immediately before exams). The use of a late day allows you to extend the deadline for an assignment by 24 hours. No more than two late days may be applied to a single assignment.
Students are responsible for adding and dropping courses via MyMadison. Please consult the registrar's page of dates and deadlines for exact deadlines.
If you need an accommodation based on the impact of a disability, you should contact the Office of Disability Services (Student Success Center, Room 1202, www.jmu.edu/ods, 540-568-6705) if you have not previously done so. Disability Services will provide you with an Access Plan Letter that will verify your need for services and make recommendations for accommodations to be used in the classroom. Once you have presented me with this letter, you and I will sit down and review the course requirements, your disability characteristics, and your requested accommodations to develop an individualized plan, appropriate for this course.
This class will operate in accord with JMU's inclement weather policy available at http://www.jmu.edu/JMUpolicy/1309.shtml
I will give reasonable accommodations to students requesting them on grounds of religious observation. If you require such accommodations you must notify me at least two weeks in advance.