CS 159 - Advanced Programming
About the Instructor:
Office: ISAT/CS 217 | I have taught CS 239/CS159 every spring semester since 2003. I enjoy the class and the variety of topics that we cover. I am often challenged by student questions and learn a tremendous amount by working with you. I believe that teaching is collaborative. You bring as much to the table as a learner as I bring as the guide to that learning. I don't believe that most students learn best by passively listening to lecture, but by engaging in material and discussions with your colleagues and me. I challenge you to come to class prepared to question the code, the techniques and one another as you embark on this journey into advanced programming techniques. Note: All sections of CS 159 will follow the same general topics and schedules.
|
Phone: 540-568-8771 | |
E-mail: harrisnl at the usual jmu.edu extension | |
Office hours: |
|
Skype: csharrisnl - I will have it on during normal office hours |
About the Course:
Meeting times/places:
Section 1 | Meets - MWF - 9:05am - 9:55am Lab: CS/ISAT 248 Lecture: HHS 2208 |
Final Exam - Wednesday (5/7) 8am-10am |
Section 4 | Meets - MWF - 1:25 - 2:15pm Lab: CS/ISAT 248 Lecture: HHS 2208 |
Final Exam - Friday (5/2) 10:30am - 12:30pm |
Section 5 | Meets - MWF - 2:30 - 3:20pm Lab: CS/ISAT 248 Lecture: HHS 2208 |
Final Exam - Monday (5/5) 1pm - 3pm |
Detailed class schedule: Schedule |
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. Students may not receive credit for both CS 159 and CS 239.
Prerequisites: CS 139 or CS 149 or equivalent with a grade of "C" or better. See the instructor if you fail to meet the prerequisite.
Note: Students planning to continue to CS240 next semester should take CS/Math 227 during this semester. CS 159 and CS 227 are prerequisites to CS 240.Themes:
- Object-Oriented Paradigm—The OO paradigm models computing as the collaboration of objects rather than the decomposition of operations.
- UML—The Universal Modeling Language should be used for diagramming.
- Coding Practice—Computing professionals are comfortable with code; comfort comes from practice reading, writing, and debugging code.
- Software Engineering Approach—programming is part of a disciplined development effort that requires thoughtful design and coding, desk-checking, and thorough unit and integration testing.
- Professional Ethics—Intellectual property is owned by its creators and cannot be appropriated without permission. Even when used with permission, its creator must be cited. Turning in someone else’s intellectual property as one’s own is a violation of professional ethics as well as the JMU Honor Code.
- Reading Specifications--Precise specification of requirements, designs, and so forth, are basic documents in computing. Students must develop skills in reading specifications carefully and understanding exactly what they state.
- Professional Conduct -- Computer scientists must become adept at "figuring stuff out". Passive absorption of "lecture" material is not the way to learn in this fast changing environment. Students should be prepared to spend time engaging with the material in a variety of ways including but not limited to lab work, code walk throughs with fellow students, search for elegant solutions, and practice with programs outside of the class environment.
- use advanced programming techniques to solve computing problems. These include but are not limited to:
- inheritance
- polymorphism
- enumerated data types
- exceptions
- abstract classes
- interfaces
- file I/O
- recursion
- multi-dimensional arrays and array lists
- use appropriate design techniques to design software applications before implementation.
- use appropriate testing techniques to thoroughly test an application during development.
- use the Java APIs and tutorials to learn about new classes and techniques and to supplement textbook information.
- understand UML diagrams and their relationship to the design process.
- read and understand software specifications to implement code that conforms to the specifications and to coding standards in place for the course.
This course meets the CS department objectives of:
- Programming: Students can develop computer programs that solve specific problems using an object oriented programming language.(E)
- Problem Solving Methods: Students can apply one or more problem solving methods in defining solution requirements and in designing, coding, testing, and documenting a software solution.(I)
Class Format:
We will not have set lab days or lecture days but will use both classrooms as needed.
Labs - This will be a chance to practice what we are learning about in the classroom. Labs will be done with lab partners to facilitate communication about coding and learning.
Lectures - This will be a combination of traditional lecture and group activities.
Outside of class work - This includes completion of lab assignments, homework assignments, individual reading, reading quizzes and practice, and longer term programming assignments. I anticipate 6-7 programming assignments through the semester, about 2 weeks apart.
Communication:
We will use Canvas and Piazza as a means of communicating. Announcements for class will be made on the Canvas announcements page or Piazza if Canvas is unavailable. Any other announcement that you receive through other means (such as e-mail) is suspect unless confirmed by Blackboard or Piazza. If I send an e-mail to the class as a whole, I will also put the text into a Blackboard or web announcement. If school is cancelled due to snow days, be sure to check the announcements for any due date changes or homework assignments.
It has been my experience that students don't take full advantage of the opportunity to get one on one help from the instructor in office hours. Please take advantage of my office hours to get individualized help.
Textbook and Required Material
Textbook – Starting Out with Java: From Control Structures through Objects, 5/E Tony Gaddis, Haywood Community College ISBN-10: 0132855836 | ISBN-13: 978-0132855839. This textbook will be used extensively through the semester and into next semester. Used copies are fine, although you may want to be sure that you get the CD so that you have the appendices and code source for examples in the book. Online textbooks are growing in popularity and are also fine for this course.
- Java API's: http://java.sun.com/javase/7/docs/api/
- Java Online Tutorial: http://java.sun.com/docs/books/tutorial/index.html
- JAC Card:
- There may be times in lab that you need to print a worksheet, a completed assignment or other work. You must have your JAC card with you and some money on it for printing. Make sure that you have a couple of dollars on the card each day.
- Printing:
- In addition to any printing required in the lab, you may need to bring a copy of your completed lab assignment with you to class on lecture day. For those with a laptop, that will be sufficient for sharing in the classroom. For those without, you should print a copy of any worksheets or completed code.
- Backup Media:
- It will be important that you have a backup device available to use in the lab. While you will get some network space, sometimes the network goes down and you need some way to continue working. Lab machines do not provide a permanent save. When the machine is logged out, your work is lost.
Assessment
All exams are cumulative due to the nature of the material. Each exam will focus on the most recently covered material (since the last exam), but anything covered in the semester is fair game.Exam 1 | Traditional paper exam covering the first third of the course. | 10% |
Exam 2 | Traditional paper exam covering the first 2/3 of the course. | 15% |
Final Exam | Partially online and partially "paper" exam covering the course material. | 25% |
Programming Assignments | Longer assignments which will have you practice several concepts that you have learned about in class and in the lab. These will be graded strictly on a 100 point scale. | 30% |
Lab | Opportunities to practice in the small concepts that you have learned about in class and in reading. These will be graded leniently on a 10 point scale. | 10% |
Homework, class activity | Opportunities to think through and practice with new concepts before applying them in the lab or in class quizzes to reinforce what you have learned. Quizzes will be graded strictly on a 10-point scale and other in class assignments will be graded leniently on a 10 point scale. | 5% |
Reading quizzes | Opportunities to self-check your understanding of the reading material. You will have three chances to improve your score on each quiz and they are open book and open note. | 3% |
Attendance | I believe that attendance is important both for yourself and for your colleagues. Therefore, attendance will be taken each class period. You will have three "excused" absenses for any reason. Failure to attend is often an early warning that you are getting into trouble with the course materials. | 2% |
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 D+ for the course. You must achieve a C- or better grade to continue on to CS 240.
Letter grades correspond to 10 point ranges...90 - 100 = "A", 80 - 89.999 = "B", etc. "F" is used for work below 60%. Final grades will be based on the algorithm above and may include + / - grades for extremes within a range.
Attendance
Every semester, there are students who decide to treat this class as an online course. I firmly believe that they do themselves and their colleauges a disservice by not attending. While I know that there may be circumstances that prevent you from coming to class on particular days, a pattern of non-attendance is not acceptable. For this semester, I will take attendance at each class period.
Lab Partners
Each student in the class will be assigned a lab partner and I encourage you to use pair programming techniques during lab. It will be permissible for each partnership to submit one copy of the lab assignment, although it will be important that both partners names appear in the corresponding material as grades will be assigned individually. Lab partners may ONLY be used for labs and outside of class homework assignments. Programming assignments in this class will be individual efforts and partners may not discuss one another's work on programs.
Class Policies and Student Success
- Come to class, come to class, come to class - Students who attend class regularly will keep up with the workload better, will gain insights from talking with classmates or the instructor, and will do better in this class as a result. We use a lot of active learning in class so attendance is mandatory.
- Come to office hours - These are your opportunity to get individualized help. Office hours are not just for PAs but for help in any material that is confusing to you. These are your times, so please take advantage of them.
- Workload - There is considerable outside work expected in this class beginning with the first week. Be sure to get started on programming assignments early as these may be more difficult than they first appear.
- Late assignments - All lab assignments will be due at midnight on the day before the next class period for all sections. Homework problems are due at the beginning of class on the day that they are due. Reading quizzes will be due at 8am on the day of the class for which they are assigned. No late assignments will be accepted for credit, although I will review late assignments at your request. For programming assignments, late assignments will have a per day penalty associated with them and will not be accepted one week following the due date.
- Exams - We have two midterms and a final exam. It is expected that all students will take the exams at the normally scheduled time. If an emergency occurs which requires you to be away, let me know as soon as you know about the situation. I may request documentation in order to allow you to take a make-up exam.
- Honor Code -Almost every semester I have incidents of students cheating on programming assignments in some fashion. I report ALL incidents of academic dishonesty to the Honor Council. If the violation is severe, I will refer it to the Honor Council for formal resolution. Less severe violations may be handled informally. If you know of cheating in this class, it is your responsibility to let the instructor know as soon as possible. If you are involved in a situation where you are not sure if what you did was right, please see me and we will work through the situation.
- MOSS - I use a tool from Stanford called MOSS (Measure of Software Similarity) which will compare all code turned in for a programming assignment against all of the other code from this class. It provides a comparison and the estimate of the degree of similarity. Be aware that this tool is very good and will be able to help me in maintaining the integrity of work turned in for this class.
- Extra Credit - I generally do not have extra credit opportunities. One exception (and there may be a few others) are students who find bugs in the submit system are given extra points on that assignment only. There are many opportunities in this class for credit.
Student Success - You will be successful in this class if you:
- Attend class and lab each day.
- Engage with the material...don't passively listen in class and expect to do well on the application assignments.
- Ask for help when you need it. We have TA assistance in the evening, and I have plenty of office hours.
- Get started early on assignments.
- Think about what you are doing...don't just do. In this course, the why is more important than the what.
- Experiment with the language and assignments and talk to your colleagues during lab time. Feel free to explore.
- Don't put yourself into a position of providing unauthorized help to another student. Labs are designed for free exploration and that includes working with others. Programming assignments are your way to test what you know and test your problem solving ability. While we may have some programs in which you will be able to work with a partner, most will be individual assignments. If you have a question about what help may be provided, please see me.
If you need additional resources to help you with your learning, let me know. Additional reference books may be placed in the library upon request.
The Fine Print
Students with Disabilities:If you are a student with a documented disability, who will be requesting accommodations in my class, please make sure you are registered with the Office of Disability Services, Wilson Hall, Room 107 (568-6705) and provide me with a copy of your Access Plan letter outlining your accommodations. I will be glad to meet with you privately during my office hours to discuss your special needs. The sooner you can do this, the better I can assist you in meeting your learning goals in this course.
Student Responsibility: Student are responsible for adding and dropping courses via e-campus. Please see the registrar's website for specific dates and policies: www.jmu.edu/registrar.
Religious observance and other planned absences: Students who are unable to attend class due to religious observance, JMU sponsored athletic competition, JMU sponsored academic competion or JMU sponsored academic events may request deadline extensions BEFORE the expected absence. I will do my best to accommodate your special circumstances.
Snow Days: Most spring semesters we have one or more snow days especially in the morning classes. If there is a snow day, first verify it via approved sources such as the JMU web home page. I wil post a note on Canvas shortly following the announcement of delay or cancellation with how we will make up the day. Generally, if it is a lecture day, make-up will be in the form of a reading assignment and written homework. If it is a lab day, the lab will be available and we will open an Elluminate session for questions and class interaction. I will be liberal with deadlines for such missed work as I know in inclement weather not all electronic resources remain open and available to all students. If power is out and it is not possible to post a message, I will get something posted as soon as possible.
Classroom Etiquette: I tend to run class in an informal fashion. Feel free to ask questions about the material we are covering. I allow the use of laptops in class, but please restrict their use to CS159 content only. You will be working on some activities in groups so please within the group be respectful of one another and solicit ideas from everyone in the group. Cell phones - you know the drill. They can be very distracting and most students already know to keep them packed and silent during class.
JMU Syllabus Information: For other information pertinent to this and other JMU courses, please visit: http://www.jmu.edu/syllabus/