Fundamentals of Computer Science II

CSC 102 Course Syllabus Winter 2016

Professor: Eriq Augustine

Office: 14-240

Office Hours: Thursday 1:30pm - 4:30pm

Email Address: eriq.public[at]gmail.com

Course Description

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: CPE101 with a C- or better.

Recommended Textbook

Cay S. Horstmann. Big Java. (4th edition or newer.)

Class Structure

Lecture will consist of covering course material as well as in-class activities. Questions about the material, reading, labs, and programs are encouraged.

Labs will be assigned most weeks and will need to be demoed in-class before or on their due date.

Policies and Advisories

  1. Many course announcements will be sent to your Cal Poly email account. You are responsible for checking your email regularly.

  2. All assignments must be submitted on or before the date and time specified in the assignment to receive credit.

  3. Labs must be demoed in lab and handed in by 23:59 the day they are due.

  4. Projects must be handed in by 23:59 the day they are due.

  5. 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 7 but the most current release is Java 8 - if you develop on your own computer and you have Java 8 installed be sure you do not use any new Java 8 features in your solutions.

  6. If you need help debugging your code you must ask me in person, preferably during lab or office hours. Debugging any other way is not an effective way of helping you learn how to program.

  7. All program assignments must be completed individually unless an assignment explicitly states otherwise. You may not collaborate with anyone or plagiarize anyone else's work in any way. You may only receive assistance from your instructor or tutors in the Computer Science Tutoring Center. You are responsible for the privacy of your own source code. 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. (See Campus Administration Manual section 684).

  8. 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 then contact me immediately. If you miss an exam due to some unforeseen 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 we may be able to work something out for example, 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.

Lecture and Lab Attendance

Attendance is not required. I understand that there may be other things that come up and get in the way of class. However, I will hold you responsible for everything that I say in lecture or lab.

Lab and Lab Assignments

Regular and frequent labs will be assigned. 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! 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 lab exercises are designed to familiarize you with some of the concepts necessary to complete your programs and to help you do well on exams. Lab exercises will be demoed to your instructor on the day they are due. Come to lab on the due day with your lab finished! I will give priority to students demoing over students that need help.

NOTE: You may collaborate on lab exercises.

Program Assignments

You will write several programs over the quarter that, together, will comprise much of your course grade. The programs will require analysis, design, implementation, testing, and documentation. Programs will first be graded on functionality, i.e. test cases passed. Programs will then be graded on the quality of the implementation – including coding style, efficiency, and documentation.

IMPORTANT: Late programs will receive increasingly severe penalties the latter they are.

CAUTION: You may not collaborate on program assignments. You are required to develop your programs individually. You may not speak to others inside and outside of class about the project. Do not even look at another student's program code or allow another student to see yours. Any program, in whole or part, which is suspected of being the work of more than one student, will be considered plagiarism.

Programs will be compared using software that can reliably detect similarities in source code. See the Policies and Advisories section above regarding the penalties for plagiarism.

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.

Component

Subtotal

Lab Quizzes

10%

Labs

20%

Programs

30%

Midterm Exam

15%

Final Exam

25%

TOTAL

100%

Letter Grades are determined on a straight percentage basis, as follows:

A 90% - 100%, B 80%-89%, C 70%-79%, D 60%-69%, F below 60%

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 may be earning scores throughout the quarter that are lower than you are accustomed to and that indicate you are not mastering the material sufficiently well to pass the class. Your final course grade is based on your performance relative to your peers and may be curved (up or down). 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.

CLASSROOM CLIMATE

Questions and discussions are strongly encouraged in this course, even if they interrupt lecture. If, at any time during lecture, you have a question about the material being discussed, raise your hand and ask. In addition, an atmosphere conducive to learning can be fostered by minimizing distractions for others who are trying to concentrate. Common courtesies include: