CSc 127B (Introduction to Computer Science II) Syllabus
Fall 2015


[Catalog] == [Personnel] == [Resources] == [Outline] == [Dishonesty] == [Grades] == [Class Policies] == [University Policies] == [Caveat]


General Catalog Information:

Description: Continuation of CSc 127A. Topics include classes, 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 and Wednesdays, 3:30 p.m. - 4:45 p.m., MLNG 350
Recitations: Here are the section times and locations:
Section Time Location Section Leader
A Mondays, 6:00 - 7:50 p.m. Gould Simpson 930 Greg DePaul
B Tuesdays, 10:00 - 11:50 a.m. Gould Simpson 930 Kendall Stratton
C Tuesdays, 8:00 - 9:50 a.m. Gould Simpson 930 Ben Gaska
D Tuesdays, 12:00 - 1:50 p.m. Gould Simpson 930 Cody Jensen
E Tuesdays, 2:00 - 3:50 p.m. Gould Simpson 930 Will Grijalva
F Tuesdays, 4:00 - 5:50 p.m. Gould Simpson 930 Jesse Bartels
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 are likely to happen in section, too, such as quizzes, group projects, and returning and reviewing assignments and exams.
Prerequisite(s): Completion of CSc 127A, or its equivalent, with a grade of 'C' or better.
Credit is allowed for either of CSc 127B or CSc 227, not for both.
Credits: 4
Final Exam: Wednesday, December 16, 2015, 3:30 p.m. - 5:30 p.m. The final is required, comprehensive, and will be given on this date at this time. Make your end-of-semester travel plans accordingly.

Class Personnel:

Name Office Email(.arizona.edu) Phone Fax Office Hours
Instructor Lester I. McCann, Ph.D. G-S 754 mccann@cs 621-3498 621-4246 T & W 1:30-3pm
SL Jesse Bartels G-S 228 jessebartels@email ----- 621-4246 [1]
SL Greg DePaul G-S 228 gdepaul@email ----- 621-4246 [1]
SL Ben Gaska G-S 228 bengaska@email ----- 621-4246 [1]
SL Will Grijalva G-S 228 wgrijalv@email ----- 621-4246 [1]
SL Cody Jensen G-S 228 csjensen@email ----- 621-4246 [1]
SL Kendall Stratton G-S 228 kendallstratton@email ----- 621-4246 [1]

[1]: The 127B section leaders, along with those of 127A, have lab hours in the Gould-Simpson 228 lab. The lab hours schedule will be determined during the first week of classes, and posted in the lab. You can ask questions of any of the SLs staffing 228; they (should!) all know the material.

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/cs127b/fall15/
Textbook: There is no required text for this class. I have required texts in the past, but found that most students did not use them. Instead, here are some free, on-line data structures texts that you can reference should you desire another point of view:

You may find other books to be useful. For instance, a textbook that focuses on just the Java language can be a valuable reference.

Class Discussions: We will be using Piazza for outside-of-class discussions and announcements. Click here to access the CSc 127B discussion area.

Course Objectives and Expected Learning Outcomes:

Topics and Subtopics Sections In Text Sample Learning Objectives
1. Review of the Basics of Java
a. Structure of a Java Program - • Know what goes where
b. Variables, Types, and Objects - • Know how Java stores and works with data
c. Control Structures - • Be able to use selection and iteration structures
d. Java Methods and the Math Class - • Use of Java's subprograms
• Be able to accept input and produce output
• Familiarity with supplied math methods
e. Character Strings - • Learn how Java stores and manipulates strings
• Understand garbage collection
f. Wrapper Classes - • Learn to distinguish int from Integer
• Know the concepts of boxing and unboxing
g. User-defined Classes - • Learn the basics: Constructors, public/private, arguments, etc.
• Be able to write and test your own classes
h. Array Objects - • Know declarations, initializations, etc.
• Work with 2D arrays using nested loops
i. Input and Output - • 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 - • Know how to catch and throw exceptions
b. Locating logic errors - • Employ both output and assert statements
3. Text and Binary File I/O
a. DOS vs. UNIX text files - • Know how to tell them apart
b. Text file I/O - • Writing to a text file with PrintWriter
• Reading from a text file with Scanner and BufferedReader
c. Binary file I/O - • Writing primitives with DataOutputStream
• Reading primitives with DataInputStream
4. Software Engineering
a. Program Design - • Know the steps of the Waterfall model
b. Data Abstraction and Information Hiding - • Understand the "big picture" of class design
5. Interfaces and Class Reuse
a. Java Class Interfaces - • Know why the extra work is worthwhile
b. Class Reuse - • Understand the concept of class inheritance
• Distinguish overloading and overriding
• Know the types of class composition
6. Array-based Lists
a. Operations - • Create, Destroy, Insert, Delete, etc.
• Know how an array representation impacts list operations
b. ArrayList - • Be able to use this API class effectively
7. Array-based Stacks
a. Introduction to Stacks - • Know the basic characteristics of stacks
b. Array Representation - • Know how to use an array to store stack elements
8. Array-based Queues
a. Introduction to Queues - • Know the basic queue concepts
b. Array Representation - • Know how to hold queue elements within an array
9. Linked Lists
a. Distinguishing Array Lists and Linked Lists - • Understand which situations favor each
b. Varieties - • Know the pros/cons of SLLs, DLLs, and CLLs
10. Stack and Queues with Linked Lists
a. Linked List Stacks - • Argue array vs. LL representation
b. Linked List Queues - • Argue array vs. LL representation
11. Ordered Lists and Searching
a. Maintaining List Order - • Understand the impact of ordering on list operations
b. Binary Search (Iterative) - • Know how it works, and how to implement it
12. Recursion
a. Recursion vs. Iteration - • Know that one can replace the other
b. How Recursion Works - • Understand how the computer manages recursion
c. Examples - • Understand how to view a problem recursively
13. Binary Trees
a. Hierarchical Data Structures - • Distinguish from linear structures
b. Examples - • Types of binary trees, and their implementation
14. Binary Search Trees
a. Distinction from Binary Trees - • Know where data belongs in a BST, and why
b. Operations - • Insertion, deletion, traversals, etc.
c. Applications and Extensions - • Understand that there are extensions
15. Sorting Algorithms
a. Simple Sorts - • Selection, Insertion, and even Bubble
b. Quicksort - • Know why it earns its name
16. Algorithm Analysis
a. Step Counting - • Know this handy evaluation technique
b. Asymptotic Analysis - • Know "Big-O"

Topics may be added, removed, or reordered as time and circumstances dictate. No text sections are listed because we don't have a required text.

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://deanofstudents.arizona.edu/codeofacademicintegrity
• The Arizona Board of Regents list of Prohibited Conduct: https://azregents.asu.edu/rrc/Policy%20Manual/5-303-Prohibited%20Conduct.pdf
• The Arizona Board of Regents Student Code of Conduct: https://azregents.asu.edu/rrc/Policy%20Manual/5-308-Student%20Code%20of%20Conduct.pdf (in particular, see part F, "Prohibited Conduct")

Most, if not all, of the programming 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 other high-level issues. 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. Doing is learning!

The class policy on cheating is simple: If we determine by a preponderance of the evidence that a student or students violated one or more of the policies of academic conduct governing this class, at minimum all complicit students will receive no points for the academic activity or activities in question. Additional sanctions are possible depending on the circumstances of the offense(s) and the policies of the department, university, and Arizona Board of Regents, up to and including expulsion from the university. Academic integrity infractions are reported to both the Dean of Students and the Dean of the College of Science. If you have a history of violations, the penalty is likely to be much worse than just a zero on an assignment. Multiple violations in this class will result in a recommendation of a failing course grade, at minimum. We take academic dishonesty very seriously, as you should be able to tell; we expect you to take it just as seriously.

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 this Code consists of all forms of academic dishonesty, including, but not limited to: 1. Cheating, fabrication, facilitating academic dishonesty, and plagiarism as set out and defined in the Student Code of Conduct, ABOR Policy 5-308-E.6, E.10, and F.1. 2. 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. 3. Violating required professional ethics rules contained or referenced in the student handbooks (hard copy or online) of undergraduate or graduate programs, or professional colleges. 4. Violating health, safety or ethical requirements to gain any unfair advantage in lab(s) or clinical assignments. 5. Failing to observe rules of academic integrity established by a faculty member for a particular course. 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. 6. Assisting or attempting to assist another to violate this Code.

The bottom line: Do your own work! If you have any doubts, please come talk to us -- before you do anything you might regret.

Grades and Grading:

See Also: • UA General Catalog's Grades and the Grading System: http://catalog.arizona.edu/2015-16/policies/grade.htm

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.