- [Policies]
- [Course Description]
- [Course Objectives]
- [Staff]
- [Related Courses]
- [Lectures]
- [Labs]
- [Communication]
- [Homework]
- [Final Project]
- [Exercises]
- [Exams]
- [Academic Integrity]
- [Grading]
- [Textbooks]
- [Software Requirements]
- [Computer Resources]
- [Additional Help]
- [What To Do First]

You are responsible for knowing the information in this document and the complete list of policies on the course website.

**name**:*COM S 99: Fundamental Programming Concepts***semesters offered**: fall, summer**credit hours**: 2**prerequisites**: none**grade option**: S/U**course website**:__http://www.cs.cornell.edu/courses/cs99/2002fa/__**course newsgroup**:`cornell.class.cs099`

*Computer Science is not about computers, any more than astronomy is about telescopes* -- Edgar W. Dijkstra

This course is designed for students who intend to take COM S 100 but are not adequately prepared for that course. Basic programming concepts and problem analysis are studied. An appropriate high-level programming language (MATLAB) is used. Students with previous programming experience and students who do not intend to take COM S 100 should not take this course. At the conclusion of this course, students should have learned how to do the following:

- Adapt the writing process (
*brainstorm*,*research*,*outline*,*write*,*rewrite*,*polish*) as a problem-solving strategy. - Develop an algorithm from a word problem, using pseudocode.
- Identify the language elements of a programming language.
- Use MATLAB's help facility.
- Perform arithmetic and other fundamental mathematical operations with variables, operators, and values.
- Write programs that solve problems with control structures (selection and repetition statements).
- Modularize programs with functions to remove redundancy.
- Use MATLAB's built-in ability for arrays.
- Test and debug code by tracing.
- Maintain good style and appropriately document code.

To help you develop these skills, you will work on a sequence of lab exercises and homework assignments, culminating in a final project that incorporates concepts learned throughout the semester.

The following is a summary of the staff for CS99. Refer to __Staff__
link from the course website for an updated and complete listing of names, locations, and office hours:

**Instructor**:

Professor David I. Schwartz

Address: 5137 Upson Hall

Phone: 255-5395

E-mail: dis@cs.cornell.edu

Office Hours: TBA**Teaching Assistants**:

We have one TA assigned to CS99. The TA will teach lab and handle most grading.

You are expected to attend **all** lectures on Mondays:

Course ID | Section | Day | Time | Place | Person |
---|---|---|---|---|---|

622-748 | LEC 01 | Mon | 9:05-9:55 AM | PH 219 | Schwartz |

CS99 has two scheduled lab sessions. You **must** attend one per week. They start on September 3:

Course ID | Section | Day | Time | Place | Person |
---|---|---|---|---|---|

622-637 | SEC 01 | Tue | 9:05-9:55 AM | Upson B7 | TBA |

622-666 | SEC 02 | Tue | 10:10-11:00 AM | Upson B7 | TBA |

**Assignments:**

To demonstrate mastery of course objectives, you will have about one homework assignment due each week at the beginning of lab. These assignments will usually involve individual effort. We strongly encourage you to start early so that you have enough time to seek help if you have questions.**Submission:**

- Assignments are due by the posted due dates and times, which are generally at the beginning of lab.
- You must submit your work via the on-line submission system. Since our system is new and might exhibit bugs, you must also submit a PC-formatted floppy disk/CD with the same files in lecture the day the assignment is due.
- Late penalities: We do not accept late work.

**Conflicts/Illness:**

If you miss an assignment due date because of illness or another university-excused conflict, you must contact the instructor and provide documentation.**Regrades:**

Regrades are due one week after the assignment grades are posted. We are going to attempt an on-line regrade system. If that system does not work, we will a post a form for you to print, fill out, attach to a hardcopy of your work, and submit in lecture.**Format:**

For each assignment, you must do the following:- Submit
*all*files, including any that we have given you and others used for I/O. - Place a comment block at the top of each file that has the assignment number and name, date, full name, net ID, and student ID. For example,

%-------------------------------------% % Assignment 1: Follow This Format! % % Date: 1/1/1111 % % % % Barbara Bain % % bb1111 % % 111111 % %-------------------------------------%

- Submit
**Grades:**

We use a numerical scale to rate your work:- 6: surpasses the objectives.
- 5: meets all of the objectives.
- 4: sufficiently meets the objectives.
- 3: meets some of the objectives.
- 2: meets a few of the objectives.
- 1: meets none of the objectives.
- 0: not submitted.

To demonstrate that you have acquired the desired skills for the course, you will have a final project to complete, which is due at the end of the semester. This project uses many of the skills that earlier assignments helped to develop. The final project also provides an opportunity to make up for missed points on other work.

To encourage practice of newly learned concepts, you will need to complete an exercise for each lab, which is due at the end of the lab session. We do not grade exercises other than to check that you made an attempt to complete the problem sets. Often we will assign teams of students to work together.

**Requirements:**

You are required to take two prelims:- Prelim 1: Tuesday, October 22, 7:30-9:00 PM, Upson 205
- Prelim 2: Tuesday, November 19, 7:30-9:00 PM, Upson 205

__Exams__for more details.**Retrieving:**

We distribute graded prelims in lecture and lab.**Regrades:**- You must submit your request within one week of the exam date, unless otherwise posted.
- Fill out a regrade form, which you will find outside of 303 Upson.
- Staple the form to the front of your prelim and submit in lab.
- Ensure that the consultant on duty logs your request.

**Conflicts:**

What if you have a known university-excused conflict, like a prelim scheduled at the same time? You must first try rescheduling the event conflicting with the CS99. If you have exhausted other means for rescheduling your conflict, you must contact David I. Schwartz two weeks before the exam. You must explain the nature of the conflict and provide documentation. You might be eligible to take an early prelim offering at 5:45-7:15 PM. We do not offer exams at any other time.**Special Needs:**

If you have official documentation concerning special needs for exams, you must contact David I. Schwartz and provide copies of the documentation.**Illness:**

What happens if you miss one prelim because of illness? You will have a significantly larger final project to complete. We suggest that you make both exams.

We calculate your raw numerical grade based on points for homework and exams. The CS99 homework and exams have the following distribution that help determine your grade:

Exercises = 20% Homework = 30% Final Project = 20% Prelim 1 = 10% Prelim 2 = 20%

To pass CS99, you need an approximate score of 75%. However, demonstrating that you have met the objectives of the course will ultimately dictate whether or not you pass.

You may purchase books from the campus book store. We also place copies of our books on reserve at the engineering library.

**Required:***MATLAB Programming for Engineerings, 2nd Edition*, Stephen J. Chapman, Brookscole, 2002.**Optional:***Mastering MATLAB 6: A Comprehensive Tutorial and Reference*, Duane Hanselman and Bruce Littlefield, Prentice Hall, 2001.

CS99 requires that you program in MATLAB. You do not have to purchase a copy, but if you choose to do so, ensure that you are getting version 6.0 or higher. Many computer labs on campus support the software. See below for more information.

The CS99 website has many links to assist with learning about programming with MATLAB:

**Labs:**Links to CIT and other labs on campus that have MATLAB.**MATLAB:**Company links, free tutorials and examples, and style guides.**Programming:**General references, many informative and some humorous, about the nature, science, art, and culture of programming.**Mathematics:**Related mathematical software and general references.

We have provided links to many Cornell resources that help with tutoring, learning, health, and other help. See the
__Help!__ link on the course website.

Do the following tasks as soon as possible:

- Review this overview, which is also on-line under
__Syllabus__. - Investigate CS100J or CS100M to see if either course is more appropriate for you. Refer to
__Related Courses__, above. - Review the recent announcements on the course website.
- Pick a lab, which starts on 9/3.
- Fill out the
__Waiver Form__(Signed Statements) and submit in lab or lecture. - Check prelim schedules for conflicts.
- Check out the Association of Computer Science Undergraduates (ACSU).