- CS:2820 Object-Oriented Software Development (Fall 2016)
- Syllabus Insert: Standard Iowa Required Syllabus Items
CS:2820 Object-Oriented Software Development (Fall 2016)
CS:2820:AAA Time: Tuesday and Thursday, 11:00am–12:15pm Place: W55 Chemistry Building
CS:2820:BBB Time: Tuesday and Thursday, 2:00pm – 3:15pm Place: 110 MacLean Hall
Note: There is limited seating in these rooms. Students may not freely choose to attend the other section (the one they are not registered for) without permission from the instructor.
Instructor and Teaching Assistants
Instructor: Professor Ted Herman, 201M MacLean Hall, email@example.com. Office hours: Monday 10:30-11:30, Tuesday 3:30-4:30, Thursday 3:30-4:30, and by appointment.
Department Chair: The DEO of Computer Science is Professor Alberto Segre, whose office is in room 14, MacLean Hall.
Grading System and the Use of +/-
Grades in this course will use + or - modifiers. A grade of A+ will only be given in an extraordinary situation. Grade Inflation is serious problem in higher education. Grades will be determined in part by a curve, which means that absolute scores (such as greater than 89 means letter grade A) will not be used. Instead, the scores of all students will be statistically analyzed and the instructor will compare student performance to previous semesters of this and similar courses to determine letter grades. Because grading can be imperfect, the goal is to ensure that students with approximately the same score get the same letter grade (including +/-) and that there is sufficient spacing between scores of students with different grades to counteract any potential flaws in evaluation.
Assignments and Percentage of Final Grade
These are the categories of evaluating student performance and their relative weighting for calculating scores to determine final grades
- Discussion section assignments (15%)
- Examinations and quizzes (40%)
- Programming assignments (homework) and Project Artifacts, which includes project assignments, contributions to source repositories, in-class presentations and reports. (45%)
The points awarded for different evaluation items (assignments, quizzes, reports, etc) will vary depending on degree of difficulty and degree of importance relating to course goals (see below). Totals for each category will be normalized (scaled) to achieve the desired weighting (15%, 40%, and 45%). ICON will be used for turning in some assignments; the ICON system recently changed to new software, so expect something different if you've used the old system.
Pages will be added to the course website describing university computing, how to find and use Java, how to turn in assignments, and helpful online references. Many students who have their own computers like to install Java and other software, such as project-related packages. This can be useful, however we (instructor and teaching assistants) are not expert on every possible computing platform that students may have, so there is no guarantee we can answer all questions about how to install things on personal devices. For the university computing facilities (particularly the CLAS computers) there is a support staff, frequent backups of files, and an installed base of software.
CS:2820 is a four-credit course (4 semester-hours). The general expectation of coursework in this university is that two hours of academic work should accompany one hour in class, which means that around eight hours of work per week, on average, can be expected for this course. As stated elsewhere in this syllabus, attendance to lectures and discussion sections is important, not least because there can be quizzes during lecture times and assignments to be completed during discussion sections.
There will be a midterm examination outside of class hours, so it is important to plan for this now:
Time: 6:30-8:00pm on Wednesday 5th October. Place: 100 Phillips Hall (seats 310 students).
Time: 7:30 AM - 9:30 AM Thursday, 15th December. Place: 100 Phillips Hall
Quizzes will be in-class, but not announced ahead of lecture time.
A significant part of this course will occur in the discussion sections each Friday. Attendance to lectures and discussion sections will increase in importance as the semester proceeds. For group exercises, later "makeup" work cannot replicate a group experience precisely. The first discussion section (26th August) will have the first assignment, to be turned in during the discussion section.
Goals for CS:2820
There are two goals for this edition of the course. First, the course covers object-oriented programming in Java in order to explore design of software based on classes, objects, and patterns. Second, the course introduces some software-engineering concepts commonly used in teams that design, produce, test, and maintain software.
The first half of the course is about the basics of programming using objects, methods, interfaces, class hierarchies, and libraries of types. The coverage of Java will not be extensive: most students will have used Java in previous courses. Java is just one of many languages highlighting object-oriented programming. Similarly, the course will not deeply expose object-design patterns, though some important patterns will be part of lectures and exercises.
The second half of the course will emphasize design and production techniques. There will be group projects in which students apply object-oriented design and demonstration communication skills that are valuable in team production of software.
Students who get a passing grade in this course are expected to show aptitude in taking a given program specification and producing code that defines classes, combines objects, libraries, and patterns to satisfy the specification. Students who get a passing grade will also have demonstrated, through quizzes and examinations, knowledge of object-oriented technology and basic software-engineering concepts.
Students who get better than a passing grade will have shown (in addition to the above), through assignments and participation in team projects, good knowledge of object-oriented design and implementation, and ability to communicate technically about software.
Students who get highest grades will (in addition to the above) demonstrate excellent object-oriented design and code skills, and show leadership and influence, where appropriate, in team projects.
The subject of cheating in university courses is a required syllabus topic. At this level of course, students will have seen prohibitions and policies on cheating many times, because of all the prerequisites. However cheating is related to this course's topics in several interesting ways.
- The DRY principle: it's a goal of software construction to avoid copy-and-paste in writing programs (DRY means Do not Repeat Yourself), but instead use object-methods, import statements, and other techniques to re-use code. In fact, generally it is desirable to find and use existing code rather than write new code, where possible. An important exception to this idea is the field of intellectual property, where it is unlawful to copy code that has a patent or has copyright protection. Typically, copying code is acceptable when (1) there is permission to do so, and (2) credit has been given to the source of the code, by some statement of attribution in the comments.
- Technical Debt: the concept of technical debt is widely understood in the software industry. Technical debt arises from doing things the wrong way, but because of being in a hurry or lacking time to do things properly, some expedient things are done to get a job done, leaving for "later" the task of cleaning up and complying with recommended best practices. A similar phenomenon is often found at the root of cheating. Some people cheat (avoid learning or doing something themselves) by thinking that the topic to be mastered can be dealt with later, when there is sufficient time. Of course this is no excuse for cheating, since the objective of the university is to evaluate the student's knowledge at the time of the course, not later.
- Teamwork: throughout the software industry and in software departments of large enterprises, teamwork is essential. Many recent advances in software engineering are based on experience in managing teams and contending with production cycles. But what if, working on a student team project, some students misrepresent themselves as equal partners in the project but actually let others do the bulk of the work? This is also considered cheating. Conversely, what if some students think that all the other students are inferior and do all the work, even duplicating other work (doing the entire project by themselves)? That is also not a proper behavior; evaluation of individual performance in a group project is a problematic goal, so we expect careful documentation of group participation and contributions.
The first half of the course may be familiar to students with experience in Java. Such students might only need to consult textbooks they already have that describe Java. For students new to Java, some introductory textbook will be helpful. The authoritative reference book on Java is online,
The Java Language Specification Java SE 8 Edition (HTML or PDF).
The PDF is more readable, the HTML is better for navigation, opening multiple tabs in a browser, and so on. Either way, this reference is likely too dense for introductory learning. For beginners, it's better to look at tutorials.
However, learning from tutorials may not be the best organization of material to see many topics. Here is an online, free textbook that you may use:
For selected parts of the Java language, lectures may need reading material about specific features, such as generic types, static initializers, annotations, and anonymous classes. To supplement lectures, specific online material or tutorials will be recommended reading.
Beyond the Java language, even in the first half of the course, we begin to look at patterns of software design. A seminal book on patterns is the "Gang of Four" (GoF) book, Design Patterns: Elements of Reusable Object-Oriented Software by Gamma, Helm, Johnson, and Vlissides. We won't go into sufficient depth to use this or alternative books on patterns; there are sufficient online sources about the patterns for this course, which will be recommended reading when these topics are encountered.
In the second half of the course, it will be useful to have a textbook that includes recent terminology about software engineering processes. The book we will use for this is
The electronic edition can be had for around ten dollars.
Syllabus Insert: Standard Iowa Required Syllabus Items
The College of Liberal Arts and Sciences is the administrative home of this course and governs matters such as the add/drop deadlines, the second-grade-only option, and other related issues. Different colleges may have different policies. Questions may be addressed to 120 Schaeffer Hall, or see the CLAS Academic Policies Handbook at http://clas.uiowa.edu/students/handbook
University policy specifies that students are responsible for all official correspondences sent to their University of Iowa e-mail address (@uiowa.edu). Faculty and students should use this account for correspondences (Operations Manual, III.15.2, k.11).
Accommodations for Disabilities
The University of Iowa is committed to providing an educational experience that is accessible to all students. A student may request academic accommodations for a disability (which includes but is not limited to mental health, attention, learning, vision, and physical or health-related conditions). A student seeking academic accommodations should first register with Student Disability Services and then meet with the course instructor privately in the instructor's office to make particular arrangements. Reasonable accommodations are established through an interactive process between the student, instructor, and SDS. See http://sds.studentlife.uiowa.edu/ for information.
All CLAS students or students taking classes offered by CLAS have, in essence, agreed to the College's Code of Academic Honesty: "I pledge to do my own academic work and to excel to the best of my abilities, upholding the IOWA Challenge. I promise not to lie about my academic work, to cheat, or to steal the words or ideas of others; nor will I help fellow students to violate the Code of Academic Honesty." Any student committing academic misconduct is reported to the College and placed on disciplinary probation or may be suspended or expelled (CLAS Academic Policies Handbook).
CLAS Final Examination Policies
The final examination schedule for each class is announced by the Registrar generally by the fifth week of classes. Final exams are offered only during the official final examination period. No exams of any kind are allowed during the last week of classes. All students should plan on being at the UI through the final examination period. Once the Registrar has announced the date, time, and location of each final exam, the complete schedule will be published on the Registrar's web site and will be shared with instructors and students. It is the student's responsibility to know the date, time, and place of a final exam.
Making a Suggestion or a Complaint
Students with a suggestion or complaint should first visit with the instructor (and the course supervisor), and then with the departmental DEO. Complaints must be made within six months of the incident (CLAS Academic Policies Handbook).
Understanding Sexual Harassment
Sexual harassment subverts the mission of the University and threatens the well-being of students, faculty, and staff. All members of the UI community have a responsibility to uphold this mission and to contribute to a safe environment that enhances learning. Incidents of sexual harassment should be reported immediately. See the UI Office of the Sexual Misconduct Response Coordinator for assistance, definitions, and the full University policy.
Reacting Safely to Severe Weather
In severe weather, class members should seek appropriate shelter immediately, leaving the classroom if necessary. The class will continue if possible when the event is over. For more information on Hawk Alert and the siren warning system, visit the Department of Public Safety website.