810:062
Fall 2007
Dr. Ben Schafer
316 ITTC Building
schafer@cs.uni.edu
273-2187
Office Hours (my schedule)
Time and Place:
This class is worth 4 credits based on 3 credits for the lecture portion and 1 credit for the programming assignments and the lab work. You are required to attend/complete both components.
Recommended Text: Understanding Object-Oriented Programming with Java, Timothy Budd (ISBN 0-201-61273-9)
Note : The code in this book was written for a version of Java that is outdated. Sometimes, this will become an issue. You will frequently discover that the code that I use in class and that I post to my website, while based on the code in your book, has been updated for the newer version (and features) of Java. Despite that, the material in your book is very good, and even if you are looking at the old code, the underlying concepts are the same.
TAs : There will be at least one teaching assistant who will be available to offer assistance during open lab hours. More information will be provided early in the semester.
Course Description
CS II is the second course in the computer science department’s programming sequence for majors. This course aims to help you develop an in-depth understanding of the paradigm of object-oriented programming – programs as collections of independent objects that collaborate to achieve some goal. This course does so by giving you the opportunity to design, critique, and implement OO solutions in Java. This course is designed for students with a background in Java.
Your skill as a programmer depends largely on how many ways you can think about problems and solutions. At the most abstract level, flexibility allows you to be creative. At a more concrete level, flexibility allows you to learn new kinds of programming languages more effectively. And, at the most concrete level, such flexibility allows you to use individual programming languages more effectively.
Outcomes
By the end of the semester you should have a solid grasp of the object-oriented approach to software development. You should:
Know the basic features of OO techniques
Know the vocabulary of OO modeling
Be able to analyze a real-world situation in an object-oriented way
Be able to design an object-oriented model containing multiple classes and collaborations
Be able to implement such a model in Java using OO programming techniques.
Class Directory
http://www.cs.uni.edu/~schafer/courses/062/
Most course materials will be made available on the course web page during the semester. You are responsible for checking this site frequently for reading assignments, prep activities, lecture notes, announcements and supplemental class materials.
Class Mailing List
810-062-01-FALL@uni.edu
I will use this to send breaking news and to answer common questions. Furthermore, I encourage you to use this mailing list to ask questions of me and/or your fellow students. By default, mail to this list will go to your @uni.edu address and mail sent by you to this list will be rejected unless it comes from that address. Talk to me if this is a problem. Again, you are responsible for checking your email to be aware of announcements.
The final letter grade you earn in this course will be based on points accumulated over five activities as described below. The following expected point system will be used in calculating final grades. Please note that I reserve the right to modify these points based on the number of class sessions and lab assignments.
|
Activity |
Number |
Adjusted Score |
| Attendance and Participation | ~45 | 100 |
| In-lab work (Tuesdays) | ~15 | 100 |
| Programming Assignments |
~10 |
300 |
| Midterm exams | 2 | 300 |
|
1 |
200 |
Notice that points are weighted. Thus, even though you may earn ~130 actual points for in-lab activities and 50 actual points for a midterm exam, each would be scaled to 100 and 150 points respectively.
Final grades will be assigned based on cut off points no “higher” than:
There are a few exceptions to this:
**** It is also worth pointing out that departmental policy requires that you receive a grade of C or better in this course prior to enrolling in CS III.
Class Attendance and Participation
Socrates reportedly said that the best learning takes place on a log, with the teacher on one end and the student on the other. In other words, learning is most effective if it is an interactive process. To be interactive, we must have two things - attendance and participation.
Although I will often use the terms "lab" and "lecture," this course will rely less on the "lecture" you may be used to, and more on an open discussion between instructors and students. Regular class sessions will be aided significantly by your participation in discussions, as well as your willingness to ask questions and share your experiences with your classmates. To encourage this, I will take attendance, and I will try to evaluate how much effort you seem to be putting into participating in the process.
To encourage attendance I will begin each day by taking attendance. Right off the bat, you can earn 2 points :
On top of that, you will be assigned points based on your participation in the whole-class "lecture" and various small group activities. These points will be assigned as :
This means you can have a score anywhere from 0 to 4 each day.
At the end of the semester, you will be assigned an overall "attendance and participation" grade based on the total number of points you have earned. The formula for this is somewhat arbitrary, but you can equate it loosely to the GPA scales. For example, if you are in class EVERY day, but NEVER participate, you will have averaged a score of 2.0. I would consider this to be about a C, and thus would assign you somewhere around 70 out of the 100 points. Good attendance and average participation would earn you about a 3.0 average, which is about a B (85 points).
It is always worth pointing out that you can participate too much. Remember that I am trying to have dynamic interaction with slightly more than a dozen students at the same time. Students who participate too much cheat those other students of a chance to participate. Please feel comfortable participating, but also be aware of how doing so affects the class as a whole.
Lab is designed to be a time to allow you to learn new skills, apply and practice existing skills, and prepare yourself for the upcoming lectures and programming assignment. Points for these activities will be assigned based on level of difficulty for each activity and will be awarded for successful completion. If you are unable to complete each of the activities in-lab, you will be allowed to complete them on your own. However, you must complete and submit the lab by the start of class on the Friday following each lab.
Attendance to lab sessions is required - you will receive credit only for labs you attend. The activities for lab are designed to encourage interaction between students and instructors (either me or the TAs) and sometimes between students themselves. Failure to be in lab robs you of some of the learning objectives for that lab. I expect you to be in lab, on time, and prepared to work. Students who arrive late will be docked points regardless of the quality of their lab work. In general, students who do not show up at all will not receive credit for making up the lab (although you should still complete the activities so you do not fall behind).
Having said that, I DO realize that occasionally things come up. For this reason, students will get a one time "free pass" to accommodate for illness, car trouble, etc. You will be allowed to make up one lab activity for full credit, no questions asked.
Programming assignments are designed to take what you have learned in labs and during lecture and apply these skills to a "complete" program on a larger scale. Please pay attention to the deadlines for every PA. The complexity of these assignments will vary , and some may count for more credit than others.
It is expected that you will complete all assignments as an individual unless otherwise instructed (see section on scholastic conduct). If you have questions concerning an assignment, feel free to consult your instructor or a TA. In fact, if you spend more than 15 minutes staring at the book or computer trying to figure out what to do next, ask for help! I don't know what you are thinking if you don't tell me. Therefore, take advantage of the fact that I am willing to help you. However, plan your time wisely. Do not wait until the last minute or help may not be available.
The grading of programming assignments will be based on the quality of your code as well as your adherence to general and assignment specific directions. For more information, see the Programming Assignment Collection Policy.
Please note : there will be an assignment due during the last week of classes.
In-Person Grading – On one or more occasions this semester your assignments may be graded using “in-person” grading.
Each assignment graded via in-person grading will be weighted more heavily than those graded via traditional methods.
There are a total of three exams this semester.
Unlike the final exam (which will be a formal, written exam following the schedule established by the university) the time, place, and format of the "mid-term" exams has not been decided. These exams will be announced approximately one week prior to the exam, and exam specifics will be provided at that time. You are expected to be present for these exams unless you have made prior arrangements. Make-up exams will be offered under very limited circumstances. If you are aware of conflicts prior to the exam, please bring these to my attention as early as possible.
These exams are all closed-book exams. However, it is likely that each exam will allow you to bring "helper" materials either provided by me or constructed by you prior to the exam. Specific instructions regarding what will and will not be allowed for each exam will be published to the course website prior to each exam, and will be clearly indicated in the instructions for each exam. It is your responsibility to be aware of what is and is not allowed on a given exam.
I try to accommodate student needs whenever possible, but I can only do so if I know about them. If you ever have to make alternate arrangements for a class session, an assignment, or an exam, contact me in advance. The safest way to make such arrangements is by notifying me via e-mail or phone of your circumstances and of how you can be reached.
All assignments are due at their assigned date and time. In order to receive partial credit, always submit your best effort at that time. Late work may not be accepted for a grade.
Incompletes are awarded only in very rare instances when an unforeseeable event causes a student who has completed all the coursework to date to be unable to complete a small portion of the work in the last week or two of the semester (typically the final project or exam). Incompletes will not be awarded for foreseeable events including a heavy course load or a poorer-than-expected performance. Verifiable documentation must be provided for the incomplete to be granted, and arrangements for the incomplete should be made as soon as such an unforeseeable event is apparent.
You are responsible for being familiar with the University’s Academic Ethics Policies (http://www.uni.edu/pres/policies/301.shtml).
It would be easy if I could just state "copying and collaboration is wrong" But, in fact, that statement is partially inaccurate in a programming environment. There will be many times this semester when I will explicitly ask you to copy some starter code, and there are times when you may (and even should) discuss code with other students. In other words, under certain circumstances, copy and collaboration is not only ok, it is expected.
General guidelines regarding "copying"
General guidelines regarding collaboration
In addition to the activities we can all agree are cheating (plagiarism, bringing unauthorized notes to a closed book exam, etc), assisting or collaborating on cheating is cheating (providing answers to exam questions, discussing test questions with a student who hasn't taken the exam yet). Cheating can result in failing the course and/or more severe disciplinary actions.
Remember: Discussing assignments is good. Copying code or answers is not.
We live in a technological society, and many of you now carry a variety of electronic distractions with you. These include cell phones, laptops, PDAs, MP3 players, etc. While you are welcome to own and use these, and other, electronic devices, their use in the classroom is forbidden without my explicit permission (In fact, this is now a University-wide policy).
A few exceptions do exist, and I reserve the right to approve these situations on a case-by-case basis with prior notification For example, due to a family emergency it may be necessary to have your cell phone turned on.
Unless we have discussed it in advance, all electronic devices should be turned off and left out of sight during class time. The inappropriate use of any of these devices will cause you to receive a participation grade of negative one point regardless of your participation otherwise. Multiple infractions may cause more extreme consequences, including removal from the course.
The Americans with Disabilities Act of 1990 (ADA) provides protection from discrimination for qualified individuals with disabilities. Students with a disability, who require assistance, will need to contact the Office of Disability Services (ODS) for coordination of academic accommodations. The ODS is located at 213 Student Services Center. Their phone number is 319/273-2676. Additionally, please contact me immediately if you have a learning or physical disability requiring accommodation
Once you have allocated the necessary time for this course, the following suggestions, compiled from student experiences, should help you plan your time use and prepare for the labs and exams:
Prepare for lecture! Read any assigned readings before the start of lecture.
Be on time. I will start promptly and will often start with important announcements.
Make use of the office hours early! Don't wait until late in the term to seek help.
Be specific in your questions when possible. Rather than asking for an explanation of a large or general topic, be prepared with specific questions or specific examples that raised your questions.
Write code on your own! Think of simple problems on your own (or from the text) and solve them.
Make sure that your code runs in the lab. This is especially important for those who complete portions of their work at home. Verify that code that runs on another machine actually runs in the lab so there are no surprises at grading time.
Realize that this is a class in design more than it is a course in programming. This is a change in ideas from CS I. It is no longer sufficient that your code simply runs. Thus, a significant part of your grade will be based on the quality of your code.