FUNDAMENTALS OF COMPUTER SCIENCE II

CSc 102 COURSE SYLLABUS    SPRING 2016 

Instructor: Dr. John Dalbey Office: 14-203  
Phone: 756-2921
SMS to email: (805) 776-3543
Office Hours:  MW 1500 Tu 1100 Th 1400
CSc Dept: 756-2824   E-mailjohn's email address

Catalog Course Description

Basic design, implementation, testing, and documentation of object-oriented software. Introduction to classes, interfaces, inheritance, algorithms (sort, search, recursion), data structures, abstract data types (lists, stacks, queues), file I/O, exceptions, and Graphical User Interfaces. 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.

Required Textbooks

Horstmann, Cay. Big Java. 4th edition.  Available at El Corral Bookstore.  (View Table of Contents)

3x5 note cards, for use during class.

Course Goals

The student should be able to:
1. Understand, explain, implement, and evaluate the efficiency of basic searching and sorting algorithms.
2. Understand, explain, implement, and apply basic data structures: one-dimensional and multi-dimensional arrays, vectors, collections, dynamic structures, queues, stacks, and collections.
3. Understand, explain, and implement basic graphical user interface involving the use of containers, components,  layout managers, and event handler.
4. Understand, explain, and apply recursion in algorithms.
5. Understand, explain, and apply basic software engineering concepts such as life cycle, development process, prototyping, testing, evolutionary development, documentation, and graphical modeling notation.
6. Understand, explain, and apply the principles of interface, inheritance, and class hierarchy.

See also:  University Learning Objectives and the Computer Science Department Objectives.

Major Course Topics

1. Class inheritance: creating subclasses, overriding methods, class hierarchies, polymorphism, interface hierarchies.
2. Graphical user interface: overview, containers, components, layout managers, design.
3. Recursion: problem solving using recursion thinking, recursive programming, applications of recursion in algorithms
4. Data structures: vectors, multi-dimensional arrays, collections, dynamic structures, queues, stacks.
5. Introduction to searching and sorting algorithms: linear search, binary search; selection sort, insertion sort; comparison of efficiency.
6. Software engineering: software life cycle, development process models, iterative processes, prototypes, testing, evolutionary development, documentation, graphical modeling notation.

Class Structure

The class meets at two different times: lecture and lab. During the lecture component we will meet as a large group to discuss the course concepts. Sometimes we will break into small groups to work exercises. The lab meetings are for hands-on work with the computer, applying the concepts from lecture. At each lab meeting there will be specific activities to complete.

Coursework

Readings

There will be assigned readings in the textbook and other resources.   The readings are to be completed by the date shown on the calendar.  Not all material in the reading will be covered in lecture or lab but you are still responsible for knowing it for quizzes and exams.  Come to class prepared with any questions from the reading that you would like addressed.

Homework

The homework for each chapter in the textbook is to complete the Self-Check Exercises (answers provided) and the Review Exercises.  The homework will not be collected or graded by the instructor.  You may ask questions in class about any of the exercises.

Lab Activities

The purpose of the lab is to explore and experiment with the concepts introduced during the lecture. During the lab hour you will complete structured hands-on activities on the computer. 

All labs activities are completed by a team of two, and thus attendance is required during the lab. Partners will be assigned each week by the instructor.  You must arrive on time and participate fully in order to receive credit for the lab.   Labs are graded credit/no credit.

Programming Projects

Programming projects are where you will demonstrate your software development skills and your ability to apply the course concepts. You will be given a software specification and you need to write a design and implement the solution. Your projects will be graded on their functionality as well as design and coding quality. You must work on the projects outside of class time. You can use computing facilities of the university, or you can choose to work at home. 

Unless otherwise stated in the assignment, the projects are an individual assignment.  Collaboration of any kind is not allowed.   (See below.) 

You may choose from any of the programming projects at the end of each chapter or from this supplemental list

Projects are submitted on a weekly basis.  You are limited to projects from the chapters read that week (or later). The due time is 6pm Sunday.  You must submit three projects each week.

Follow the Project Submission Directions.

Each project is graded credit / no credit based on functionality, usability, maintainability, and efficiency. Each project for which you receive credit counts 1% toward your final course grade.

To earn a passing grade in the course you must:


Exams

There will be one midterm examination and a comprehensive final examination.  The midterm exam is a written closed book exam that takes place during lecture hour.  The midterm exam questions are taken from the textbook (Learning Objectives, Self-check, Review, and Programming Exercises) and the lab activities. 

The final exam is a common final, collaboratively written by all the CPE 102 instructors.  If your cumulative score in the course before the final exam is so low that earning 100% on the final would not enable you to pass, you are not eligible to take the final.

Lab Quizzes

There will be five lab quizzes. The quiz is an in-class practical hands-on exam administered during lab hour. The quizzes will be similar to the lab activities.  You will be required to demonstrate some programming skill on the computer.  Lab quizzes are closed book, notes will be allowed, closed-source, closed-web.  The lowest score of the five will be dropped.
Please work the Sample Lab Quiz.

Skill prerequisites: 
Login to a working account on the CSL workstations.
Download files from the web using a web browser or Unix command.
Upload files from a workstation to your CSL account using a file transfer program.
Remotely login to your CSL account using Secure Shell.
Navigate the file hierarchy of your Unix account.

Extra Credit

If you complete the programming project requirements (above) you may consult with the instructor about extra credit.

"The true sign of intelligence is not knowledge but imagination."
A. Einstein

Grading


Percent
Lab Activities 15
Programs 30
Lab Quizzes 15
Midterms 15
Final exam 25
TOTAL 100

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

    A   85% - 100%,    B    75%-84%,    C     65%-74%,    D     55%-64%,    F    54% and below
 NOTE: You must earn a grade of C- or better to be able to enroll in CSc 103.
(The instructor may scale these ranges as appropriate). Borderline scores will receive a Plus/Minus grade. 

ALTERNATE GRADING SCHEMES
If you feel the above grading scheme will not provide the best assessment of your learning in the course, you may negotiate with the instructor for an alternate scheme. You must agree to an alternate scheme before the end of the second week of classes. Similarly students who desire special accommodations for their learning needs must make arrangements before the end of the second week of classes.

Administrative Policies

ATTENDANCE

Missed labs can not be "made up."  If you miss a lab, you get a zero for the lab. If you arrive more than five minutes late to lab, you get a zero for the lab.  Labs are important learning activities that are completed with a partner so your attendance is mandatory.  For every two unexcused lab absences your grade drops one-half of a letter grade.

The midterm and final examinations may only be taken during the scheduled exam period.

Attendance during lecture is not required.  However, if you plan to attend, arrive on time.  Arriving late is a distraction and is discourteous toward other students.  Students are allowed one tardy without penalty.  Subsequently, tardies are assessed a one percent (incremental) penalty per incident.  If you anticipate some external circumstance will interfere with arriving on time, please make arrangements in advance with the instructor to avoid a penalty.

DEADLINES

Due dates for labs and projects are described above.

If you anticipate some unexpected circumstances will prevent you from submitting your assignment before the deadline, you may request an extension. Send an email message to the instructor before the due time asking for an extension of the due date.  (Use a subject line of "Extension request".) You don't need to provide a reason or justification.  (Limit: 2 extensions).   The default extension is 24 hours, but you may ask for more.

Most labs and projects will be submitted electronically to PolyLearn. Your work will be time stamped automatically when you submit it. Work which is received late, even by one second, receives no credit.
If you anticipate illness or other emergency will prevent you from submitting an assignment before the deadline, you may be able to make alternate arrangements for submission by contacting the instructor prior to the due date. Assignments submitted via e-mail receive no credit unless prior arrangements have been made.  The absolute deadline for submitting any course assignments, extra credit, etc. is 5pm on the last day of class.

FOLLOWING DIRECTIONS
The skill of following verbal and written directions is essential for programmers.  Computers are very precise, literal machines, and any deviation from the required operating directions usually results in failure.  Also, programmers need to follow directions provided by customers and other stakeholders regarding the required project specifications.  The instructor regards the directions for assignments as a kind of "specification" and expects students to follow them with the same precision and rigor as they would when communicating with a computer.  Failure to follow any directions provided in the course (including this syllabus) may result in penalties imposed at the discretion of the instructor, up to and include no credit for the assignment.

ACADEMIC INTEGRITY

This course involves both individual work and collaborative work. It is your responsibility to understand the guidelines that apply to each kind of work, and to be clear about which assignments are individual assignments and which are collaborative.

Activities not designated as cooperative assignments in this course are to be done individually. Individual work is to be carried out entirely and solely by an individual. You may not "work together" on individual assignments. The content of the assignment is not to be discussed or shared in any way with other students.  There is to be no conversation about individual assignments except with the instructor or a department-designated tutor.  This policy will be rigorously enforced.  Programs will be checked for plagiarism using both computer and human similarity checkers.  Take extreme precautions that your individual work is not viewed by other students.  This includes deleting all your computer files from public workstations when you are finished,  retaining private permissions on your Unix files, destroying printouts of source code, and not letting other students use your personal computer where you store your coursework.  

In addition, the work you submit must be entirely your original creation. Using solutions from any other source is forbidden; in particular, using solutions (either instructors' or other students') from previous offerings of this or other courses is not allowed. Using solutions found on the Internet or getting help from online forums is not allowed.

Assignments which appear to be the result of a "group effort", or appear to have been copied from another student, will be considered plagiarized. Violations of this policy may result in being failed from the course and a letter placed in your record at the Office of Judical Affairs.. See the campus statement on Academic Dishonesty: Cheating and Plagiarism (C.A.M. 684)

Most laboratory activities will be designated as team activities.  Students will be assigned a partner to cooperate with to complete the lab activities.  Be sure to use these cooperative activities as a chance to master the skills, as there will be quizzes in which each person must perform the skills individually.  You may consult with other students on the lab activities.

COMPUTER POLICIES

Students enrolled in this course are entitled to a computer account in the computer science department labs.  All the labs share a common file system, and your  username, password, and home directory is the same in all labs.  From outside the lab you can use secure shell to login to unix1.csc.calpoly.edu to access your files. If you do not already have an account, see the instructor. Do not share the password or the account will be frozen and you will be failed from the course.

A number of important class documents will be made available in electronic form (e.g. assignments, due dates). They can be accessed via a WWW browser through the link from the instructor's home page. These files should be considered as evolving documents, as they will be refined and updated as the course proceeds. You may access documents on the course web site only via hyperlinks.  You are not authorized to view other documents that may exist but have no hyperlink to them.

Occasionally the instructor will mail announcements to the entire class by using an alias which sends mail to your Cal Poly mail account. If you don't use your Cal Poly account regularly, you should set it up to forward your mail to your regular email account.

Computer Science majors are expected to be proficient with tools of their trade such as e-mail and backups. Excuses such as "my email account was down" or "my hard drive crashed" are not likely to gain much sympathy. 

The instructor will not read email whose "Sender" field is not an actual student name. Don't use nicknames in mail you send to the instructor or it will be returned to you unread.

Students are expected to learn and abide by the principles of ethical use of computers as determined by the ACM (Assoc. for Computing Machinery) Code of Ethics and Professional Conduct, the Campus computing and Communication Policies, Calif. state laws (see Penal Code Section 502), and federal laws. 


GETTING ASSISTANCE

Study Groups:
The university organizes study groups for this course. 

Tutoring:
Computer Science department is organizing free tutoring for CPE101/102/103 courses.

Office hours: 
One of the great benefits of attending Cal Poly, as opposed to a University of California, is the opportunity to interact directly with your instructors. You are invited to take advantage of this opportunity by visiting the instructor during office hours, even if you are not having difficulties with the course. Of course if you are having difficulties, you should see the instructor as soon as possible.  If you need help with any form of programming activity, you should bring a current hardcopy of your source code.  If schedule office hours are not convenient for you, other times can be reserved by arrangement.

Email:
The instructor will read his email daily (except weekends) and email is a good vehicle for certain kinds of communications.  Use e-mail to report errors on the class web site, to report problems in your electronic submission, to clarify assignment requirements, to reserve an appointment, to ask concise technical questions, or to ask short questions that can be responded to with a short answer (a sentence or two).  Complex questions or abstract questions are best dealt with in person. Many programming problems, including debugging, are best handled during office hours.  It is probably not the best use of email to send your entire program and say "I can't figure out what's wrong."  

HOW TO ADDRESS THE INSTRUCTOR

Frequently I've heard students address me and other professors by last name without honorific.  They do this completely unselfconsciously even  when they aren't that comfortable with first name address.  (e.g. students will call me "Dalbey", not "Mr. Dalbey" or "Dr. Dalbey" when they would never  call me "John." ).

In "my generation", no-honorific last-name address is permitted only between people of common age and gender, between close friends or within a military or athletic context.  Buddies in college would call me "Dalbey", and fellow athletes would call me "Dalbey".  But that's it.  It's very analagous to "du" address in German, or second-person address in Latin languages.  Being addressed as "Dalbey" by students feels rude to me. My preferred form of address is "Mr. Dalbey."

CLASSROOM CLIMATE
It is a core value of academic discourse to be tolerant of views different than our own and to treat others with respect. 

In addition, an atmosphere conducive to learning can be fostered by minimizing distractions for others who are trying to  concentrate.  Common courtesies include:

DROP/WITHDRAWAL POLICY. You may use PASS to drop this course any time during the first eight days of class. Please carefully evaluate your schedule and determine if you will remain in the class before the end of the add/drop period. After the drop date, the only way out of the course is called "withdrawing" from the course; this requires a documented "serious and compelling" reason, such as a medical emergency. You may not withdraw simply because you are earning a bad grade or you forgot to drop through PASS. Withdrawal requires you to document that some desperate situation has arisen after the drop day that you could not have reasonably anticipated.