Gary D. Brown
CIS 11: Data Structures and Algorithms
Spring 2008
Section 4525
Tuesdays & Thursdays 10:30 am to 12:00 pm
Room 2921
Syllabus
Goals and Objectives:
The purpose of the course is to survey the foundations and conceptual tools of computer science. Presentation of these concepts is intended to give the beginning computer science major a solid foundation for further study. Subjects traditionally included in data structures courses will be supported with discussions of abstraction, complexity and object-oriented design. The objectives of the course are:
- To gain an understanding of data abstraction, object-orientation and software engineering.
- To understand the relationships between data models and data structures.
- To become skilled in the selection of appropriate data structures.
- To use analysis of algorithms to optimize program design.
Prerequisite:
Previous programming experience as evidenced by the completion of CIS 10, Introduction to Programming, or CIS 10B, Fundamentals of Computer Science II, or the equivalent. Without a knowledge of C/C++ the course material will require extra effort, especially in the early weeks.
An alternative to the course work is the self-study completion of Chuck Allison's excellent Flash-based tutorial, Thinking in C: Foundations for Java & C++. It can be obtained at no charge at http://mindview.net/CDs/ThinkingInC/beta3. Be aware that it's a 90 MB download. A minimum of five hours is required to listen to Chapters 1 through 8a. Additional time should be devoted to working through the exercises and reviewing the author's solutions.
Laboratory:
The instructor will be available in the laboratory for the hour immediately before class. Although attendance is not required, students are encouraged to work on their programming projects at that time.
Texts:
Requirements:
- Expect to read about 60 pages from the text per week.
- Programming projects are to be completed according to the schedule provided.
- Two examinations will be given, the second covering only the topics studied since the previous test (the second, or final, exam is not cumulative.)
Grading:
The semester grade will be a composite of the following items:
- 50% examinations (two exams)
- 50% programming projects (twelve projects)
Please consult the grading algorithm for details. Both examinations must be completed to earn a D or better.
Attendance:
Students with two weeks of absences will be dropped from the course.
Examinations
are composed of multiple choice questions written by the authors of the text. It is expected that the average time to complete each will be about an hour.
Programming projects
must be transmitted via SRJC's CATE (Center for Advanced Technology in Education) system.
- Check in with CATE: Here, you will create your CATE system user name and CATE password, which you will use to reach the entry forms for the projects. Links to those forms appear in the schedule. Be sure to fill in the section 4525 check-in form before submitting assignments.
- Programs must compile and run correctly with any ANSI/ISO standard C++ compiler. They will be tested with the GNU C++ compiler, g++. See appendices D and K in the text. For a Windows IDE, visit http://www.bloodshed.net/ to download Dev-C++ for free. Mac OS users can use the Unix command line or Xcode Tools, free from Apple at http://developer.apple.com/tools/macosxtools.html?ht.
- Submissions are not always compiled and tested as soon as they are received. Please allow a few days to a week for verification of credit.
- If it is found that a program fails to meet specifications or runs incorrectly, but compiles and runs without error, two opportunities for correction will be available. There will, however, be a penalty for each resubmission.
- Programs that produce run-time errors or fail to compile will not be eligible for resubmission.
- Trivial submissions will not be considered.
- Projects must be completed by the due dates shown in the schedule. No resubmissions will be accepted after the absolute deadlines, also shown in the schedule. Please do not ask for an extension.
- The gradebook will allow you to track your progress through the course. Please use your CATE user name and CATE password to view it.
Academic Integrity:
The development of programming skill is essential for success in computer science. This requires self-reliance and independent effort. Collaboration, on the other hand, is often appropriate in an educational setting.
Permitted Collaboration
- Software testing
- Algorithm development
- Program structure design
- Exam preparation
- Lecture notes exchange
Prohibited Collaboration
- Joint or cooperative source code development
- Modification and/or use of another's source code
- Revealing and/or giving source code to another student
- Viewing and/or receiving source code from another student
Consequences of Prohibited Collaboration
- The first offence will result in a penalty (rather than credit) of ten points for the assignment in question.
- A second offence will cause the student to be dropped from the course.
Communication:
- The best venue for communication is in person. Office and laboratory times are available for the private discussion of grading, scoring, administrative issues, course content and feedback on project work. Other times can be arranged. Electronic correspondance, although not ideal, is sometimes necessary. If it becomes unavoidable, please use the following procedures.
- Use the Data Structures email list for questions about course content and programming projects. All students as well as the instructor will have the opportunity to view your concerns and respond.
- Register at http://lists.sonic.net/mailman/listinfo/srjc-data-structures
- Submit questions and responses at srjc-data-structures@lists.sonic.net
- Course content questions sent to the instructor's email address will not be answered.
- Questions addressed to the mail list should be used for minor issues only. It is not an appropriate venue for the discussion of code in detail.
- Remember that skill development in software engineering requires self-reliance and independent effort. Please don't expect extraordinary assistance from faculty or lab staff unless a project already has been submitted and returned for refinment.
- Use the instructor's
email address for questions about grading, scoring, or administrative issues. Please format the subject line as follows:
- The Subject: field must consist of
- the section number (4525)
- a period
- the last four digits of your student ID
- another period
- the letter Q
- For example, 4525.9809.Q No other text may appear in this field.
- Communications with ill-formed subject lines will not be answered.
Instructor:
Please see the schedule for office hours and laboratory times. The office is located in Maggini Hall, 3rd floor, room 2935. You may also access voice mail by dialing (707) 527-4370 at any time. Email address is srjc-gary@metamagic.info. The website is available at http://www.metamagic.info.
2008/01/14