Course Syllabus
CPE 102: Fundamentals of Computer Science II
Spring 2013


    Instructor        Franz J. Kurfess
    Office            14-218
    Phone             805.756.7179
    Office Hours      Tue/Thu 4:40-5:30pm, Wed 2:10-5:00pm
    Class Hours       Tue/Thu 1:40-3:00pm in 14-257 (Lecture); 3:10-4:30pm in 14-301 or 14-257 (Lab)
    Email Address     fkurfess@calpoly.edu
    Home Page         http://users.csc.calpoly.edu/~fkurfess/

Catalog Description
CPE 102 Fundamentals of Computer Science II (4)
Basic design, implementation, testing, and documentation of object-oriented software. Introduction to classes, interfaces, inheritance, algorithms (sort, search, recursion), abstract data types, data structures (lists, stacks, queues), file I/O, and exceptions. Credit not available for students who have taken CSC/CPE 108. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 101 with a C- grade or better and either MATH 141 or MATH 221 with a C- grade or better. Crosslisted as CPE/CSC 102.
Prerequisites
CPE 101 with a C- or better. MATH 141 or MATH 221 with a C- or better.
Course Text
Big Java (5th Edition) by Cay Horstmann, published by Wiley, Dec. 2012 (Recommended). In addition to the paperback version (ISBN 978-1-1184-3111-5), this book is also available as an e-book (ISBN 978-1-1185-4599-7).
Note: The Third Edition or newer versions of the same text will suffice.  Other Java text books may also be sufficient, feel free to ask me.
Policies
  • All assignments must be submitted on or before the date and time specified in the assignment to receive credit.
  • All source code will be compiled, tested, and graded on the CSL servers (unix1, 2, 3 or 4) - be sure your solutions work correctly there before handing them in. Note that the CSL servers and workstations are using Java 6 but the most current release is Java 7 - if you develop on your own computer and you have Java 7 installed be sure you do not use any new Java 7 features in your solutions.
  • If you need help debugging your code you can ask me in person, preferably during lab or office hours. You can also visit the Computer Science Tutoring Center.
  • There are no make-up exams or quizzes.  You must take all exams and quizzes at their scheduled times and dates.  If you know in advance that you will miss an exam talk to me in person before missing the exam.  If you miss an exam due to some unforseen event contact me as soon as possible by phone, email, in person or, better yet, all three ways to explain why.  If your reason is compelling and documentable I may award you the lowest grade you earned for a similar exam (adjusted for the overall performance of the class) for the missed exam.
  • You must bring up any grading issues with me within one week of receiving the graded material to be eligible for a correction, if any.  Note that your lab quiz and program grades will be emailed to your CalPoly email address - be sure you review that mail regularly.
  • Academic integrity is very important to Cal Poly, our department, and your instructor. You can read Cal Poly's policy on cheating and plagiarism here. Except for the quizzes, your lab work may be done with a partner. In fact, you are encouraged to work with a partner in lab, but not required to do so. All programs must be done individually. It is OK to discuss general principles and ideas with colleagues, but the programming assignments are not to be done in groups, or with your lab partner. Use of anyone's solutions other than your own is considered cheating. This includes solutions from previous offerings of this or any other course, solutions you may find online, or solutions you get from any source other than your own brain. You may only receive assistance from your instructor or tutors in the Computer Science Tutoring Center. You are responsible for maintaining the privacy of your own source code for this quarter and beyond. Your programs will be checked by a sophisticated pattern-matching program that reliably detects similarities in code. Significant similarities in an assignment may result in all students involved being failed from the course and a report of the incident being filed with the Office of Student Rights and Responsibilities. This includes the student(s) who copied and the student(s) who were copied from.
Advisories
  • You must earn a C- or better in CPE 102 to be able to take CPE 103.
  • You must have a C- or better in CSC 141 to be able to take CPE 103.
  • Most students that pass the class with a C- or better complete most of the labs and all of the programs. While the labs are not graded, they and the programs are learning experiences that appear to be critical for passing the class.
  • You must drop a course before the end of the eighth day of the quarter.
  • You may not withdraw from a class unless you have serious and documentable reason acceptable to the College of Engineering Advising Center - I do not have the authority to allow you to withdraw.
Attendance
Attendance is required on the days of scheduled exams and quizzes but is otherwise optional. Note, however, that there is a strong correlation between attendance and grades and, unless you have significant programming experience, you are strongly encouraged to attend all lectures, take good notes, and ask many questions. In addition to improving your performance in the class I strongly believe that your attendance and participation with questions, observations, and opinions will result in a more interesting class and a better learning experience for you and your peers.
Reading and Homework
You are expected to read the assigned chapters (or similar material in a different text) prior to class. Not all material in the reading will be covered in lecture or lab but you are still responsible for knowing it for exams and quizzes. Ask any questions from the reading that you would like addressed by me in lecture, lab, and/or office hours!
There is no graded homework from the text.  However, make sure you are familiar with the concepts in the chapter summaries and are comfortable with the questions and exercises at the end of each assigned chapter.  Don’t be surprised if you see material like this on your quizzes and exams.
Lab and Lab Assignments
The three hours of scheduled lab time each week is the primary time your instructor will be available for questions and assistance – make wise use of this resource!  Regular and frequent labs will be assigned. You are expected to work on the lab exercises during your scheduled lab time plus as much additional time as necessary to complete them. The labs are designed to help you become familiar with important features of Object Oriented programming and Java. Completing the labs should help you be prepared for the quizzes and exams. You may collaborate with other students on lab assignments. After making a reasonable effort on your own you are always welcome to ask you instructor for assistance.
Note that the labs are collected but not explicitly graded. I will use your performance on the labs to resolve borderline grade cases, if any, when assigning course grades at the end of the quarter. I am always glad to review and comment, at your request, on the quality of your labs.
Program Assignments
You will write several programs over the quarter that will comprise a significant part of your course grade. The programs must be 100% functionally correct to receive any credit or to be considered complete.  You will be provided with the tests that determine functional correctness on the first due date for the program. The test driver is purposely not provided earlier to encourage you to develop your own tests. There will be several due dates for each assignment worth declining amounts of credit over time. Functionally correct programs will then be graded on the quality of their implementation including, but not limited to, coding style, efficiency, and documentation. Any deductions for quality will be subtracted from the amount of credit you were eligible for based on the due date you submitted the assignment.
Grading
The following table presents the anticipated graded items and their values for the course. Note that I reserve the right to change the number of graded items and/or their values but rarely do so.


Graded Item

Value (each)
Value (all)
Length (each)

6 Programs

5%

30%
1 to N hours

3 Lab Quizzes

6.67%

20%
50 minutes

1 Midterm

20%

20%
50 minutes

Final

30%

30%
170 minutes

Course Total


100%


During the quarter I will hold your work to a high standard with the goal of indicating to you your real progress on the path to true proficiency and mastery of the presented material. This means many of you will be earning scores throughout the quarter that are lower than you may be accustomed to and that indicate you are not mastering the material sufficiently well to pass the class. Your final course grade will likely be curved and based on your performance relative to your peers. Note that this does not mean that some of you must fail or that all of you cannot earn an A. If all of you perform similarly - and at a sufficiently high level - I will gladly assign all of you the A you have earned!  For all quizzes and exams I will publish the maximum, median, and average scores earned by your classmates so you can gauge your relative performance. I generally consider the median score to be equivalent to a letter grade of C+/B-. If your scores are consistently near the median, or above, you should not be overly concerned about passing the class.
Coordination across 102 Sections in S13
This quarter, all instructors for CPE 102 are coordinating the timing and contents of labs, assignments and exams. This may result in minor changes to the schedule or some administrative aspects of class work. Some of my course Web pages will also consist of links to pages maintained by one of the other instructors. This syllabus is mostly based on the one for Kurt Mammen’s sections, with modifications by Franz J. Kurfess, some of which are based on Gene Fisher’s syllabus.