CSc 227 (Program Design and Development) Syllabus
Spring 2007
[Catalog] == [Personnel] == [Resources] == [Outline] == [Dishonesty] == [Grades] == [Class Policies] == [University Policies] == [Caveat]
General Catalog Information:
| Description: | Programming in an object-oriented language such as Java for students with significant prior programming experience. Topics include types, control structures, classes, arrays, sorting, algorithm analysis, recursion, program development, and implementation of abstract data types using linear structures and binary trees. Weekly laboratory. This course cannot be taken if a student has credit in a higher level computer science course (CSc 245, 252, and all 300- and 400-level courses). These students will be dropped. Students with unusual circumstances should consult with a department advisor. | ||||||||||||||||||||
| Lecture: | Mondays, Wednesdays, and Fridays, 10:00 a.m. - 10:50 a.m., Chavez 110 | ||||||||||||||||||||
| Recitations: | Here are the section times and locations: | ||||||||||||||||||||
|
|||||||||||||||||||||
| See the Personnel section, below, for section leader contact info. | |||||||||||||||||||||
| Each recitation section is led by an undergraduate section leader (SL). We require attendance at the weekly section meetings to give you the opportunity to work on more examples that tie in with the lecture topics, to allow you to ask questions about things you saw in recent lectures that you didn't fully understand, and to allow us to offer clarifications on homework and programming exercises. Other things will happen in section, too, such as quizzes, group projects, and returning and reviewing assignments and exams. | |||||||||||||||||||||
| Prerequisite(s): | Algebra recommended. | ||||||||||||||||||||
| We expect that you possess basic mathematical skills. Computer programming and mathematics often intersect, and will in this course. | |||||||||||||||||||||
| Credits: | 4 | ||||||||||||||||||||
| Final Exam: | Wednesday, May 9, 2007, 11:00 a.m. - 1:00 p.m. The final is required and will be given on this date at this time. Schedule your travel plans accordingly. |
Class Personnel:
| Name | Office | Phone | Fax | Office Hours | ||
|---|---|---|---|---|---|---|
| Instructor | Lester I. McCann, Ph.D. | G-S 809 | mccannl@acm.org | 621-3498 | 621-4246 | 2-4 W, 1-2 R, 3-4 F |
| SL | Alex Jerabek | G-S 228 | ajerabek@cs.arizona.edu | ----- | 621-4246 | [1] |
| SL | Mark Stevens | G-S 228 | mstevens@cs.arizona.edu | ----- | 621-4246 | [1] |
| SL | Robert Stout | G-S 228 | robert@cs.arizona.edu | ----- | 621-4246 | [1] |
| SL | Jesse Tadlock | G-S 228 | jtadlock@cs.arizona.edu | ----- | 621-4246 | [1] |
[1]: The 227 section leaders, along with those of 127A and 127B, have lab hours in the Gould-Simpson 228 lab. The lab hour schedule will be determined during the first week of classes.
Each of the SLs has successfully completed this class (or its equivalent) and is paid by the Department of Computer Science to help me help you learn the material. In addition to leading a section each week, they grade your programming assignments, do the bulk of grading on the exams, let me know what topics seem to be especially baffling to the students, and hold lab hours in the Gould-Simpson 228 lab. I expect that you'll find your section leader to be a valuable resource.
Please keep in that that it is possible to meet with your SL or me outside of office hours. Contact us to make an appointment.
Information Resources:
| Homepage: | http://www.cs.arizona.edu/classes/cs227/spring07/ |
| Textbook: | Objects, Abstraction, Data Structures and Design Using Java Version 5.0, by Elliot B. Koffman and Paul A.T. Wolfgang, is the required text. Its corresponding Student Companion Site may be worth a look. You may find other books to be useful purchases. For instance, a textbook that focuses on just the Java language can be a valuable reference. |
Course Objectives and Expected Learning Outcomes:
| Topics and Subtopics | Sections In Text | Sample Learning Objectives |
|---|---|---|
| 1. The Java Programming Language | ||
| a. Structure of a Java Program | A.1 | • Know what goes where |
| b. Variables, Types, and Objects | A.2 | • Know how Java stores and works with data |
| c. Control Structures | A.3 | • Be able to use selection and iteration structures |
| d. Java Methods and the Math Class | A.4 | • Use of Java's subprograms |
| • Be able to accept input and produce output | ||
| • Familiarity with supplied math methods | ||
| e. Character Strings | A.5 | • Learn how Java stores and manipulates strings |
| • Understand garbage collection | ||
| f. Wrapper Classes | A.6, Lecture | • Learn to distinguish int from Integer |
| • Know the concepts of boxing and unboxing | ||
| g. User-defined Classes | A.7 | • Learn the basics: Constructors, public/private, arguments, etc. |
| • Be able to write and test your own classes | ||
| h. Array Objects | A.8, Lecture | • Know declarations, initializations, etc. |
| • Work with 2D arrays using nested loops | ||
| i. Input and Output | A.10, Lecture | • Understand the concept of a stream |
| • Distinguish console I/O from file I/O | ||
| • Understand how to use the Scanner class | ||
| 2. Exceptions and Debugging | ||
| a. Java error handling | 2.1 - 2.4, Lecture | • Know how to catch and throw exceptions |
| b. Locating logic errors | 2.7, Lecture | • Employ both output and assert statements |
| 3. Text and Binary File I/O | ||
| a. DOS vs. UNIX text files | Lecture | • Know how to tell them apart |
| b. Text file I/O | Lecture | • Writing to a text file with PrintWriter |
| • Reading from a text file with Scanner and BufferedReader | ||
| c. Binary file I/O | Lecture | • Writing primitives with DataOutputStream |
| • Reading primitives with DataInputStream | ||
| 4. Software Engineering | ||
| a. Program Design | 1.1 | • Know the steps of the Waterfall model |
| b. Data Abstraction and Information Hiding | 1.2 | • Understand the "big picture" of class design |
| 5. Interfaces and Class Reuse | ||
| a. Java Class Interfaces | 1.3 | • Know why the extra work is worthwhile |
| b. Class Reuse | 3.1 - 3.5, Lecture | • Understand the concept of class inheritance |
| • Distinguish overloading and overriding | ||
| • Know the types of class composition | ||
| 6. Array-based Lists | ||
| a. Operations | Lecture | • Create, Destroy, Insert, Delete, etc. |
| • Know how an array representation impacts list operations | ||
| b. ArrayList | 4.1 - 4.3 | • Be able to use this API class effectively |
| 7. Array-based Stacks | ||
| a. Introduction to Stacks | 5.1, Lecture | • Know the basic characteristics of stacks |
| b. Array Representation | 5.3 | • Know how to use an array to store stack elements |
| 8. Array-based Queues | ||
| a. Introduction to Queues | 6.1, Lecture | • Know the basic queue concepts |
| b. Array Representation | 6.3 | • Know how to hold queue elements within an array |
| 9. Linked Lists | ||
| a. Distinguishing Array Lists and Linked Lists | Lecture | • Understand which situations favor each |
| b. Varieties | 4.4 | • Know the pros/cons of SLLs, DLLs, and CLLs |
| 10. Stack and Queues with Linked Lists | ||
| a. Linked Lists Stacks | 2.3 | • Argue array vs. LL representation |
| b. Linked List Queues | 2.3 | • Argue array vs. LL representation |
| 11. Ordered Lists and Searching | ||
| a. Maintaining List Order | Lecture | • Understand the impact of ordering on list operations |
| b. Binary Search (Iterative) | Lecture | • Know how it works, and how to implement it |
| 12. Recursion | ||
| a. Recursion vs. Iteration | 7.2, Lecture | • Know that one can replace the other |
| b. How Recursion Works | 7.1, Lecture | • Understand how the computer manages recursion |
| c. Examples | 7.3 - 7.6, Lecture | • Understand how to view a problem recursively |
| 13. Binary Trees | ||
| a. Hierarchical Data Structures | 8.1 | • Distinguish from linear structures |
| b. Examples | 8.1 - 8.3, Lecture | • Types of binary trees, and their implementation |
| 14. Binary Search Trees | ||
| a. Distinction from Binary Trees | 8.4 | • Know where data belongs in a BST, and why |
| b. Operations | 8.4 | • Insertion, deletion, traversals, etc. |
| c. Applications and Extensions | 8.4, Lecture | • Understand that there are extensions |
| 15. Sorting Algorithms | ||
| a. Simple Sorts | 10.1 - 10.5 | • Selection, Insertion, and even Bubble |
| b. Quicksort | 10.9 | • Know why it earns its name |
| 16. Algorithm Analysis | ||
| a. Step Counting | Lecture | • Know this handy evaluation technique |
| b. Asymptotic Analysis | 2.8 | • Know "Big-O" |
Topics may be added, removed, or reordered as time and circumstances dictate.
Academic Dishonesty (i.e., Cheating):
| See Also: | • The Department of Computer Science Course Policy on Collaboration: http://www.cs.arizona.edu/policies/collaboration.html |
| • The University of Arizona Code of Academic Integrity: http://dos.web.arizona.edu/uapolicies/cai1.html | |
| • The Arizona Board of Regents list of Prohibited Conduct: http://www.abor.asu.edu/1_the_regents/policymanual/chap5/chapter_v.htm#5-303 | |
| • The Arizona Board of Regents Student Code of Conduct: http://www.abor.asu.edu/1_the_regents/policymanual/chap5/chapter_v.htm#5-308 |
Most, if not all, assignments in this class will be individual assignments, to be worked on outside of class. All individual work assigned to you in this class is to be completed only by you. It is not acceptable for you to `borrow' (a.k.a. steal, copy, coerce, etc.) solutions or parts of solutions from other people or have other people write part or all of your solutions for you. However, it IS acceptable (and encouraged!) for students to help one another understand the assignment requirements and to help one another track down logic errors in exercises. In short, do your own work, but feel free to discuss difficulties with each other. Of course, you may always ask me or a SL for help, but don't expect that we'll just hand you solutions; we'll make you work for them.
The class policy on cheating is simple: If your work is turned in by another student, or if you turn in the work of another person or persons, all students involved will receive at minimum a zero on that entire assignment. Other sanctions are possible should additional information come to light. The CS department exchanges information about academic integrity violations with the office of the Dean of Students. If you have a history of violations, the penalty is likely to be much worse than just a zero on the assignment. Multiple violations in this class will result in a failing grade at minimum. I take academic dishonesty very seriously, as you should be able to tell; I expect you to take it just as seriously.
If you are not familiar with them, please take the time to read the references linked above. Ignorance of the policies is not an acceptable excuse for their violation. For your convenience, here is the section of the University's Code of Academic Integrity entitled "Prohibited Conduct":
| Conduct prohibited by the Code consists of all forms of academic dishonesty, including, but not limited to: cheating, fabrication, facilitating academic dishonesty, and plagiarism as set out and defined in the Code of Conduct, ABOR Policy 5-308-E.10 and F.1; submitting an item of academic work that has previously been submitted without fair citation of the original work or authorization by the faculty member supervising the work; modifying any academic work to obtain additional credit in the same class unless approved in advance by the faculty member; failure to observe rules of academic integrity established by a faculty member for a particular course; and attempting to commit an act prohibited by this Code. Any attempt to commit an act prohibited by these rules shall be subject to sanctions to the same extent as completed acts. |
The bottom line: Do your own work. If you have any doubts, please come talk to me -- before you do anything you might regret.
Grades and Grading:
| Section Attendance and Activities | = | 10 | % | total |
| Programming Assignments | = | 30 | % | total |
| 3 Midterm Exams | = | 45 | % | total |
| Comprehensive Final Exam | = | 15 | % | |
| Total | = | 100 | % |
I use the common 90-80-70-60 grading scale. It's possible that final grade cutoffs will be lowered a little (from 90% to 88.5% for the bottom of the 'A' range, for example) but they will never be raised. I make such determinations only at the end of the term, after the final exam has been graded.
You will be expected to regularly attend your weekly section meetings. To help encourage you to do so, your SL will be taking attendance each week. Hopefully, you will find the sections to be useful enough that you won't need the encouragement.
In addition, we anticipate other activities in section that will contribute to your class grade. Such activities may include quizzes and small group projects.
The Department of Computer Science labs in Gould-Simpson 228 and 930 will be available for your use for the programming assignments. Many students find it convenient to work on the assignments at home; I expect that all of the software we use in this class will be freely (and legally!) available for you to download and install on your home computer, or you can remotely connect to the lab systems from home. If you do decide to use a system outside of our department's control for your work, it's your responsibility to learn how to set it up and use it effectively. In addition, you'll be required to electronically transfer ("turnin") the source code to us before the due date. Expect us to compile and run your programs to verify their completeness, so be certain that your program runs correctly in the lab before you submit it.
Java 1.5.0 or later, unless otherwise specified.
My code documentation and style guidelines are available from the class web page. Documenting code is not the most enjoyable activity you'll ever experience, but it is important to do, and to do well. Program documentation/style is worth about 25% of your score on a program.
Each programming assignment will have a clearly stated due date and time. At least initially, programs will be due at 10:00 p.m. Monday nights. Electronic submissions received after that time will be considered late. Programs submitted within the first 24 hour period after the due date and time are considered to be one day late. Submissions received within the next 24-hour period are two days late, etc. Any day of the week, including Saturdays, Sundays, and all holidays, count as days for the purpose of determining lateness.
At the start of the term, you are granted five no-penalty late days. Each time a program is submitted late, you will lose no points until you have exhausted your late days. When your late days have been exhausted, you will lose 20% per day the program is late. After five such deductions, your score for that program will be zero.
For example, if a program is due at noon on the 12th but you submit your code at 12:30 p.m. on the 13th, it is considered to be two days late. If you had three late days remaining, you'd lose two of them but would still be able to earn full credit on the assignment if it works correctly and is well-structured and well-documented. If you had only one late day remaining, you'd lose it and 20% (that is, your program will be graded out of a maximum of 80%).
Final detail: No matter how many late days you have saved, no program will be accepted after 11:59 p.m. of Reading Day (a.k.a. Dead Day).
If your program does not successfully perform the required tasks, you should not submit it for grading. You are expected to thoroughly test your programs before submission to verify that they handle the expected variety of inputs properly.
Should your program fail to perform properly when tested, points will be deducted based on the severity and quantity of the errors. The deductions for each type of error will be determined for each programming assignment and will be applied consistently to all submitted programs. If you feel that a program was graded improperly, please see your SL to discuss your concerns.
Exam formats will be fairly consistent throughout the semester. Exams will consist primarily of short answer, problem-solving, and code-writing questions. The use of calculators or any other electronic devices is NOT permitted on exams unless warranted by special circumstances.
I expect all students to take the exams at the announced exam times. I give make-up exams only in extreme circumstances. I decide if a circumstance is "extreme." For example, being in a documented car accident on the way to the exam is likely to count as an extreme circumstance. Circumstances that are not considered to be extreme include losing a cell phone, breaking up with a significant other, forgetting to set/heed an alarm clock, having a cold, etc. Please be aware that missing a midterm exam isn't necessarily a disaster; see below.
I will schedule a midterm when I feel that we've reached a suitable point in the lecture material. You will have at least 7 days' notice of the next exam. Midterms will focus on the material covered in class, in section, and by the programs since the time of the previous midterm (or the start of the term in the case of the first midterm). As new material in this class usually builds upon the old, you should expect that your knowledge of material covered by previous exams will be necessary for success on subsequent exams.
Regrade Requests: After midterm exams are graded, they will be returned to you and you may keep them. We will also review the exam, either in class or in section. If you feel that your exam was graded improperly, prepare a brief memo that explains which problems concern you and why. Within one week of the date on which the exam was returned to the class/section, submit your exam (not a copy) and the memo to me. I will regrade the entire exam, paying particular attention to the problems you highlighted in the memo. Because errors in grading can cause scores to be too high as well as too low, it is possible that your grade will go down as a result of the regrade. Be sure to review your entire exam before you ask for a regrade.
The final exam will be given at the time stated in the class schedule. (I have also placed it near the beginning of this syllabus. If you see that I have listed the exam time incorrectly, please let me know.) The final will be comprehensive and will have a format similar to that of the midterms. If you miss the final under less than extreme circumstances, you will receive a score of zero for the final.
At the end of the semester, I will replace your lowest midterm exam score with a percentage-equivalent copy of your final exam score, but only if the final score is higher than at least one of your midterm scores. (Thus, this is a potential bonus but never a penalty.) I do this to reward you for demonstrating an improved mastery of the material over the course of the semester. However, it can also help you if you should miss a midterm because your car broke down, your alarm clock didn't go off, you had a disfiguring zit, or any other non-extreme quirk of fate. Please note that should you miss multiple midterms under sub-extreme circumstances, you will definitely get a zero for those additional missed midterms.
If room capacity permits, leave a seat vacant between you and your neighbor. If need be, we will reseat students before or even during an exam to maintain an honest evaluation environment for all students.
Miscellaneous Class Policies:
The instructor and the SLs will attempt to reply to email from students within 24 hours. This means that if you wait until the evening before an assignment is due to send a question to your SL, you may not get a reply before the due date and time. There's a classic sentence that covers this: A failure to plan on your part does not constitute an emergency on our part. We want to help, but like you, we have tasks other than email that require our attention.
There will be no opportunities for extra credit points. Use your time to concentrate on doing well on the assigned work. If your grade in this class is important to you, start taking this class seriously now, not just after you do poorly on the first exam. Additional late days for assignments may be offered as incentives under special circumstances.
| See Also: | • Accommodation of Religious Observance and Practice: http://dos.web.arizona.edu/uapolicies/ouap4.html#religion |
All holidays or special events observed by organized religions will be honored for those students who show affiliation with such religions. Absences pre-approved by the UA Dean of Students office will be honored. No matter the reason for missing class, the student is always responsible for the missed material.
| See Also: | • Audit Policy: http://catalog.arizona.edu/2006-07/policies/audit.htm |
If you are auditing this class, you may attend lecture and you may attend your assigned weekly section. You can turn in programs and homeworks only if your TA/SL agrees to accept them. You may not take exams.
Miscellaneous University Policies:
| See Also: | • Spring 2007 Dates and Deadlines: http://www.em.arizona.edu/datesDeadlines/datesDeadlines.aspx?t=071 |
If you find yourself thinking about dropping this (or any other) class, first make sure that that's what you really want to do. Chatting with me, your TA/SL, or your academic adviser may help. If you drop within the first four weeks of the semester, there will be no notation on your transcript; it will be as though you'd never enrolled. During the fifth through the eighth weeks, a drop will be recorded on your transcript. You will receive a "WP" (withdrawn passing) only if you were passing the class at the time of your drop. After the eighth week, dropping becomes a challenge, because you need to explain to me and to your dean why you were unable to drop the class during the first half of the semester.
| See Also: | • Office of Curriculum and Registration Grading Policy Manual: http://www.registrar.arizona.edu/gradepolicy/incomplete.htm |
| • UA General Catalog's Grades and the Grading System: http://catalog.arizona.edu/2006-07/policies/grade.htm |
The university's course catalog contains all of the details about incompletes, but here's the key sentence:
| The grade of I may be awarded only at the end of a term, when all but a minor portion of the course work has been satisfactorily completed. |
To qualify for an incomplete, a student must have maintained a passing grade for the class until the term is nearly complete, and then, due to an unusual and substantiated cause beyond the student's control, the student is unable to complete the class work. In short, you can't get an "I" just because you aren't happy with your grade.
| See Also: | • UA Disability Resource Center Student Services: http://drc.arizona.edu/drc/student.shtml |
| • UA SALT Center: http://www.salt.arizona.edu |
The university and the Disability Resource Center (DRC) have asked all instructors to include the following text in class syllabi:
| If you anticipate the need for reasonable accommodations to meet the requirements of this course, you must register with the Disability Resource Center and request that the DRC send me official notification of your accommodation needs as soon as possible. Please plan to meet with me by appointment or during office hours to discuss accommodations and how my course requirements and activities may impact your ability to fully participate. |
Additional help is available from the UA Strategic Alternative Learning Techniques (SALT) Center. SALT provides fee-based services for students with various learning disabilities.
Under the guidelines of the Rehabilitation Act of 1973 and the Americans with Disability Act of 1990, students are obligated to notify the school that they need accommodation.
| See Also: | • UA Policy on Threatening Behavior by Students: http://policy.web.arizona.edu/~policy/threaten.shtml |
If you're upset with me or any of the TAs/SLs, please come talk with us about your concerns. The university takes a very dim view of antisocial behaviors on campus.
Caveat:
The above schedules, policies, and procedures are subject to change. Whenever possible, changes will be announced to the class before the on-line version of this document is altered.