FUNDAMENTALS OF COMPUTER SCIENCE III

CSc 103 COURSE SYLLABUS    FALL 2009 

Instructor: Dr. John Dalbey Office: 14-203  
Phone: 756-2921  Office Hours:  MTuF 1000, W 1400
CSc Dept: 756-2824   E-mailjohn's email address

Catalog Course Description

Introduction to data structures and analysis of algorithms. Abstract Data Types. Specification and implementation of advanced data structures. Theoretical and empirical analysis and proofs of properties of recursive and iterative algorithms. Software performance evaluation and testing techniques. 3 lectures, 1 laboratory.

Prerequisites:
1) Grade C- or higher in CSC102 - Fundamentals of Computer Science II. 
 You are expected to be knowledgeable and experienced in problem solving and software development using an object-oriented programming language.
2) Grade C- or higher in CSC141 - Discrete Structures I.
You are expected to know and be able to apply mathematical concepts, formulas and proof techniques learned in CSC141

Required Textbooks

Data Structures and Algorithm Analysis in Java” by Mark Allen Weiss, second edition, Addison Wesley,  ISBN 0-321-37013-9.  
Your CPE 102 Java textbook, or a Java reference book of your choice.  For example, Big Java, by Horstmann.  You will need a Java reference during each lab meeting.

Course Reserves (Kennedy Library)

A practical introduction to data structures and algorithm analysis, Clifford A. Shaffer.
Data structures with JAVA, J.R. Hubbard and Anita Huray
Java software structures : designing and using data structures, John Lewis
Algorithms + data structures=programs, Niklaus Wirth.

Course Objectives

Major Course Topics

Abstract Data Types (ADT), Collections, Data Structures (chapter 3).
Traversing a collection; iterators. The implementation of an iterator for List ADT (chapter 3).
Algorithm performance analysis (chapter 2).Stacks and stack operations. Queues and queue operations (chapter 3).
Priority queues and their implementation. (chapter 3)
Binary Search Trees and BST operations, AVL trees and AVL Tree operations. Tree traversals; implementing iterators for different tree traversals (chapter 4). 
Hash Tables. Data arrangement techniques in a hash table. Hash Table operations (chapter 5).
Sets and Maps. (chapter 4.8)
Efficient sorting algorithms and their analysis (chapter 7).
Graphs and graph algorithms (chapter 9).
Object Oriented Design.

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

There will be homework problems required for each chapter.  Some problems require written solution, and some require computer solution. Please follow these guidelines for submitting your homework. The due dates will be posted on the course calendar.  You will submit your written solutions and computer printouts in class on the due date. 

On homework assignments, it is permissible to ask for assistance from other students if you get stuck. However, each student must solve the problems themselves and turn in their own solutions.  In addition, students will have an opportunity to earn "participation" points when asked at random to present in front of the class their solutions to homework problems or answer questions from the readings. 

Lab Activities

The purpose of the lab is to implement, test and analyze data structures and algorithms introduced during the lecture. During the lab hour you will complete structured hands-on activities on the computer.  Some of the labs have a "pre-lab" activity to be completed before arriving at the lab. The assignments are designed to be completed during the allotted lab time, but you may occasionally find you need more time to complete them, in which case you may finish the activity outside of class time at home or in some other lab. 

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.  Two students will share a single workstation, and each will be assigned a role, either "driver" or "navigator."  The navigator is the person who leads the problem solving effort.  The driver is the person who operates the keyboard.  (Of course the driver may assist in solving the problem).  If an activity requires a solution to be submitted, the team will submit a single solution with the names of both students.

Each lab team is required to bring a Java reference and the Weiss textbook to each lab activity.

Lab Notebook

You will maintain a lab notebook according to these directions. The notebook is collected at random intervals and graded credit/no credit.  However, it must follow the required format, you must have it with you during every lab activity, and it must be kept current.  The penalty for a missing or inadequate notebook is 1% of your course grade.  A notebook of superior quality earns extra credit.

Programming Projects

There are several programming projects to be completed during the course. The 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.  You 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. 

You may choose to work on the projects as a paired assignment or as an individual assignment.  If you choose to work individually,collaboration of any kind is not allowed.  If you work as a pair, you may collaborate ONLY with your partner, and you must follow the Pair Programming Rules and Procedures.  In either case, keep track of your time using a Time Log and follow the Pair Programming Process Script that will be explained during lab.

You must complete all programming projects or you will receive an incomplete in the course.  (Regardless of what late penalties may have accrued, you still need to submit a complete and correct solution before the end of the course).

Exams

There will be a midterm examination and a comprehensive final examination.  The midterm exam has two parts.  The written part (closed book) takes place during lecture hour; the practical part (on the computer, usually open book) takes place during the lab hour.  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 elegible to take the final.

The department has a 1st year cumulative assessment that takes place during the last scheduled lab meeting.  This is a test of everything you've learned during the first year CSc courses.  It counts for only a tiny part of your grade but may help you to identify any areas of weakness you want to work on.


Extra Credit

There will be specific extra credit opportunities announced which are optional assignments.

Grading


Percent
Participation
5
Homework
6
Lab Activities 5
Projects 24
Midterm 20
Final exam 40
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    59% and below
 NOTE: You must earn a grade of C- or better to be able to enroll in CSc 308.

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 accomodations for their learning needs must make arrangements before the end of the second week of classes.

 

Administrative Policies

DEADLINES

Due dates for all coursework are shown on the course calendar. Written homework is due at the exact class start time on the table at the front of the classroom.

Most labs and projects will be submitted electronically to an online grading system called Web-CAT. Your work will be time stamped automatically when you submit it.

Late projects are subject to a penalty:

Days Late
Penalty
1-7
33%
8-14
66%
15-21
100% but still must be completed

Lab activities submitted late earn no credit.

Makeup exams are available only in the event of an emergency and only when arrangements have been made with the instructor before the exam.

Assignments submitted via e-mail receive no credit.  The absolute deadline for submitting any course assignments, extra credit, etc. is 3pm of Friday of final exam week.

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 plagarism 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.

If you choose to work as a pair on programming projects, you must collaborate with your partner according to the Pair Programming Rules and Procedures.  In all other regards, non-collaboration applies as described above.

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 vogon.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. Each document will have a version date so that you can determine if you are reading the most recent version. It is your responsibility to be sure that you are working from the most current document.  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. 

Grader UNIX account : ~graderjd

This account contains certain documents and sample programs you will need to complete the class assignments. Campus computing policies (as well as state and federal laws) prohibit you from reading files in other user's accounts, regardless of whether the file permissions allow such actions, unless you have been given specific authorization to do so. The instructor hereby grants permission to read any file in the grader account for your section only whose unix file permissions allow public access.

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. Hours and days will be announced around the second week of the quarter

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:

The use of audio-visual recording devices of any kind (camera, tape recorder, etc) is not allowed without the instructor's permission

CELL PHONES AND PAGERS

Cell phones present an annoying disruption in class and a distraction from course activities. You may not talk on a cell phone in the classroom or lab room for any reason.  Once you enter the classroom or lab, put your cell phone away where it is out of sight. You may not use a cell phone in the instructor's office. The policy for Fall 2009 is that if a cell phone rings during class, that person is required to bring cookies for everyone at the next class meeting.

DROP/WITHDRAWAL POLICY. You may use CPReg 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 CAPTURE. Withdrawal requires you to document that some desperate situation has arisen after the drop day that you could not have reasonably anticipated.