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:
Section Time Location Section Leader
001 Wednesdays, 12:00 - 12:50 p.m. Gould-Simpson 701 Alex Jerabek
003 Wednesdays, 3:00 - 3:50 p.m. Gould-Simpson 942 Mark Stevens
004 Thursdays, 10:00 - 10:50 a.m. Chavez 308 Jesse Tadlock
005 Thursdays, 11:00 - 11:50 a.m. Gould-Simpson 942 Robert Stout
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 Email 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:

Miscellaneous Class Policies:

Miscellaneous University Policies:

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.