Syllabus
Catalog description: 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. 3 credits.
Prerequisite: A grade of "B–" or better in CS 149 or equivalent.
Class Times¶
- Section 6: Tu/Th 12:45–2:00pm
- Section 7: M/W/F 2:20–3:35pm
Locations:
- EnGeo 2209 (Classroom)
- King Hall 248 (Linux Lab)
Instructor Info¶
Dr. Chris Mayfield, Professor of Computer Science
Email: mayfiecs@jmu.edu | Office Phone: 540-568-3314
The best way to contact me is by email, not via Canvas.
Office Hours: M/W/F 1:20–3:00pm in King 208 or online
Please see instructions for checking in when you arrive.
Course Objectives¶
By the end of CS 159, you should be able to:
- Use advanced programming techniques such as inheritance, polymorphism, abstract classes, and interfaces; exceptions, file I/O, and recursion; data structures such as multi-dimensional arrays, ArrayList, and HashMap.
- Implement appropriate object-oriented design techniques. Interpret UML diagrams and their role in the design process.
- Practice effective testing techniques to debug an application thoroughly during development.
- Read and understand software specifications; write code that conforms to requirements and to professional standards.
Last but not least, I hope you will have fun learning to develop more advanced kinds of programs!
Teaching Methods¶
Spoiler alert! If you're hoping for a traditional lecture day after day, you signed up for the wrong course. Research has shown that active learning methods are more effective than passive methods like taking notes. This course uses a mix of Process Oriented Guided Inquiry Learning, Peer Instruction, and Interactive Lecture. Here is what a typical week looks like:
- Monday: Finish up this week's work, review your notes, and ask questions about what you don't understand.
- Tuesday: Debrief the homework (due last night), group activity or hands-on lab, mini-lecture to clarify topics.
- Wednesday: Complete assigned readings, start working on the homework, figure out what you need to learn.
- Thursday: Hands-on lab or practice problems, additional examples and live demos, hints on the homework.
- Friday: Complete as much of the homework as you can today so that it won't loom over you all weekend!
Weekend Hours
I generally do not respond to emails between Friday at 5:00pm and Monday at 8:00am. TAs are available on Sunday to answer questions and help you learn. You are welcome to email me over the weekend, but I will mostly likely respond on Monday.
Laptop Classroom¶
You will need a laptop on most class days. If you don't have a laptop, the CS department can loan you one for the semester. Our classroom has a few spare laptops in case you don't bring your own to class.
Technologies Used¶
All instructional materials including handouts, slides, videos, and sample code will be on the course website (https://w3.cs.jmu.edu/mayfiecs/cs159/).
I will use Canvas (https://canvas.jmu.edu/) for posting announcements, sharing non-public files, and communicating grades.
You will use Gradescope (https://gradescope.com/) to submit assignments and exams.
Gradescope provides automated feedback to help you improve your work.
In the end, I will review and grade your work manually.
We will use Piazza (https://piazza.com/) for homework Q&A and asynchronous discussions.
All instructors, TAs, and 180+ students enrolled in CS 159 will be in the same Piazza course.
Required Textbook¶
Weekly readings will be selected from the following free books. You are certainly welcome to read any other book(s) you like. Many textbooks about Java are available commercially. I'm happy to make recommendations, if free books don't work for you.
Java, Java, Java: Object-Oriented Problem Solving (2022)
by Ralph Morelli, Ralph Walde, and Sharon Beryl Hoffman
W3Schools Java Tutorial (2024)
by Hege Refsnes, Ståle Refsnes, and Jan Egil Refsnes
Culture of Learning¶
Please help us maintain a collaborative environment that encourages questions, provides opportunities for significant learning, and actively involves everyone in discussions.
Professional Conduct¶
The ACM Code of Ethics (https://www.acm.org/code-of-ethics) forbids discrimination and harassment of all types. If you believe 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 when addressing the issue.
Inclusive Excellence¶
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 would be relevant to your full participation in this course.
Academic Honesty¶
Don't Cheat
Students who violate the Honor Code (https://www.jmu.edu/honorcode/code.shtml) 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 the originality of submissions.
Generative AI
You may use AI technology in general ways that support your learning. However, do not ask ChatGPT or similar tools to do your homework for you. The use of AI is strictly prohibited on homework and exams, so make sure you can program without AI. See the Generative AI in Computing Education Student Guide for examples of inappropriate use.
Methods of Evaluation¶
Participation¶
You are encouraged to work with other students during class. Activities, labs, and quizzes have points, because your participation impacts others. If you are absent occasionally, you will have the opportunity to make up missed work.
Homework¶
Written and/or programming exercises will be assigned each week. You are welcome to discuss assignments with other students, but the solutions and source code you submit must be entirely your own work.
Be Careful!
Being able to understand someone else's code is very different from being able to write code on your own. If you become over-reliant on outside assistance, you won't develop the skills you need to succeed on exams.
Late Work Policy
Deadlines exist so that we can discuss homework solutions in class. Therefore, late work will not be accepted without special permission. I am willing to work with you if your circumstances suddenly change. Please don't wait until the night before to get started!
Midterms/Final¶
This course is inherently cumulative; each week builds on the prior weeks. We will have three midterms during class and a two-hour exam during finals week. The content and format of the exams will be similar to homework and in-class exercises.
Grading Criteria¶
Your grade in CS 159 will be based on:
Letter grades will be assigned on 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 in unusual circumstances.
Students who score below 60% on the final exam will receive a grade no higher than C– in the course.
University Requirements¶
Adding/Dropping¶
You are responsible for enrolling in courses and verifying your schedule on MyMadison. The last day to add a semester course is Monday, 02/05/2024 (permission required after Friday, 01/26/2024). The last day to withdraw from a course with a W grade is Friday, 03/22/2024.
Attendance Policy¶
You are expected to participate in every class. I understand that things come up, and you might need to be absent occasionally. That's why I provide make-up opportunities for in-class assignments. If you are not feeling well or suspect you might be ill, please stay at home.
Stay Caught Up
Your attendance is not graded, but you the work you do in class is graded. When you are absent, you need to make up the work you missed within 72 hours. Tuesday's work must be completed by Friday. Thursday's work must be completed by Sunday.
Disability Services¶
If you have a documented disability and need accommodations in this course, please register with the Office of Disability Services (http://www.jmu.edu/ods, Student Success Center, Room 1202, 540-568-6705). ODS will provide you with an Access Plan Letter to verify your need for services and make recommendations for the course.
Excused Absences¶
Students who are unable to attend class due to JMU sponsored activities (such as sports, band, academic competition, field trips, etc.) or personal religious observances may request reasonable accommodations. Please notify me during the first week of class regarding potential absences so that you and I can plan ahead.
University Closings¶
Given severe weather and other unexpected circumstances, be sure to watch for announcements relating to make-up dates. See http://www.jmu.edu/JMUpolicy/1309.shtml for JMU's cancellation policy. Although the schedule may adapt to canceled classes, assignment deadlines generally do not change.
Your Well-Being¶
As a university student, there may be times when personal stressors interfere with your academic performance and/or negatively impact your daily life. If you or someone you know is experiencing mental health challenges at James Madison University, please connect with the Counseling Center located within the Student Success Center on the 3rd floor. You can learn more about available services by visiting https://www.jmu.edu/counselingctr or calling 540-568-6552. These services are free and confidential. Other available support resources to consider include, but are not limited to, the Office of the Dean of Students, the Health Center, and Learning Strategies Instruction.