CS 111-2 Syllabus

Computing and Information Science II

Spring 2001

CIS Department

Saint Vincent College

General Information

Description

This course continues the study of problem solving and C++ programming from the point where CS 110 left off. The course also covers the most common data structures and algorithms used in computer science. Data structures are presented from an object-oriented point of view.

The Microsoft Visual C++ compiler, version 5.0, found in the CIS lab are to be used in this course. Use another compiler only "at your own risk." This means that should you choose to do some of your work with another compiler it is up to you to figure out any differences between the two. No support for other compilers is provided by the instructor or tutors. In addition you would have to check that your programs compiled and ran correctly with the lab's hardware and software before turning them in.

Why Take This Course?

This course is required for CIS majors, but is also taken by a number of other students who wish to acquire problem solving and programming skills. After taking CS 110 and CS 111 students have sufficient background to write useful programs and to learn other computer languages and algorithms. This course provides the foundation for most other CIS courses and is, in fact, a prerequisite for many CIS courses. CIS majors should strive to do well in this course in order to prepare for their later courses.

Related Course

Many of the data structures and algorithms introduced in this course are covered in greater depth in CS 221, Data Structures. CS 221 also introduces new and more complex data structures.

Course Organization

The course begins with a review of various topics from CS 110, with particular emphasis on arrays since arrays are one of the most important tools available to the programmer. The rest of the course is organized around the list of major topics shown below. Although it would be possible to present these topics in several different orders, care has been taken to see that topics are presented first which are needed in order to understand other topics. Since C++ is a very large language, some aspects of it (such as templates and iterators) will not be covered in this course.

Major Topics

  1. An introduction to algorithm analysis (exponential running times, etc.)
  2. An introduction to software "engineering"
  3. Arrays, including 2-dimensional arrays
  4. Sorting and searching algorithms
  5. Functions and parameters
  6. Files (both text and binary files, sequential and random access)
  7. Classes, objects, methods, inheritance
  8. Recursion
  9. Records and strings
  10. Pointers, linked lists, and dynamic memory allocation
  11. Stacks and queues

Course Goals and Means of Assessment

  1. By the end of the course, students should be able to develop software solutions to small, but non-trivial problems.
  2. By the end of the course, students should understand and be able to use the most common data structures and algorithms.
  3. By the end of the course, students should be able to use the basics of the associated theory (of objects, function calls, parameter passing, algorithm analysis, and abstract data types) to better understand and manage the complexity found in software.
  4. By the end of the course, students should be able to use the main constructs, including objects, of C++.
  5. By the end of the course, students should have a basic understanding of good software engineering principles.

These goals will be assessed through homework problems (usually in the form of programming assignments), in-class exercises, tests, and quizzes. The first goal will be assessed primarily by means of the programming assignments, that is, by looking at the software "products" that students create in solving these problems. The other goals are assessed by all of the above methods.

Methods Used to Reach These Goals

Lecture and presentation of example programs will be used part of the time in class. (One common way of learning is through reading programs created by others.) In-class exercises, often in small groups, will be used to allow students to actively work with the material. Homework assignments will be designed to allow students to apply their knowledge to practical programming problems. (Learning by doing is perhaps the most important means of mastering this type of material.) Students will do a number of the homework assignments in small groups since students often learn better by working together and since teamwork skills are highly valued by employers. Finally, exams and quizzes are intended to give students the opportunity to demonstrate what they have learned.

Grading and Course Policies

There will be a few quizzes to enable students to see how they are doing prior to the exams and to provide some practice in a testing type of situation where the results are not as crucial as on an exam. A quiz and homework are weighted equally unless stated otherwise. There will be a pretest (on CS 110 material) after the first week of classes. This pretest will count twice as much as a quiz or homework. Some in-class exercises and labs will be collected and counted as one-half of a regular quiz or homework grade. Exams and quizzes will generally be of a closed-book, closed-notes nature as the material in this course is of the type that a programmer or other computing professional should know without having to repeatedly look it up.

Group Homework Assignments

Students will be assigned to small groups for the purpose of doing a number of the in-class exercises, labs, and homework assignments. A few homework assignments will be given that must be done separately by each individual. The group homework is to enable students to learn from each other and to provide practice at a cooperative project like those demanded by many job situations. Further information about the group assignments will be provided during the course. Group members are also encouraged, but not required, to study together to prepare for exams and quizzes.

Course Policies

Attendance is expected. You cannot do well in the course if you skip class. After four missed classes, each additional miss lowers the final course grade by 2%. Missing any significant part of class is counted as 1/2 of a missed class. Also, class attendance will be used in deciding borderline grades at the end of the semester. Note that +/- grades will be given in accordance with the college Bulletin.

The grade for a missed quiz or exam is 0. Make-up quizzes and exams will not be given, except in special circumstances and with the consent of the instructor. See your instructor ahead of time if you know you must miss an exam or quiz (e.g. due to sports). Normally some type of written documentation is required (such as a note from the Dean of Students, the coach, college health center, or doctor). If the documentation or reason is poor, you can count on receiving a significantly more difficult exam or quiz! Do ask for a makeup if you have a good reason to miss, however, as it is understood that illnesses and other complications do happen.

Every programming assignment should list all sources that contributed to the solution. This would include the individual student (on an individual assignment) or the students assigned to a group (in a group assignment). It may also include the instructor, a tutor that was consulted, a reference book, a web site, etc. You may consult other students who are not part of your group as long as your question is small in scope and that you list the name of the student consulted at the top of your program. "Small in scope" excludes showing another student your entire program, or seeing that person's program, or working out the design of the whole program together. Sharing on that larger scale often amounts to one person copying the mistakes of another or getting a free ride on the efforts of another. A good rule of thumb is not to look at more than 1 screen of another person's code. Anyone who needs help on problems of larger scope should consult the tutors and/or the instructor.

Intellectual honesty is important. If homework solutions show work that is largely copied, it is program plagiarism and is not acceptable. Such work will typically be given a grade of 0. In cases where the plagiarism is not as obvious, students (or groups) who submit suspiciously similar programs may be required to take a programming quiz in place of the homework assignment, which will not itself be graded. Repeated or serious offenses will be referred to the Associate Academic Dean for appropriate action.

Late assignments received within 48 hours of the deadline will be graded, but with a penalty of 15 percent. After 48 hours, any late assignment will receive a grade of zero. Since partial credit is given, it is usually best to turn in what you have at the original deadline. Assignments are due anytime on the date given and are normally turned in electronically by placing a copy in the appropriate folder of the Cs111-2 mapped network drive. Exceptions to these deadlines are only granted for serious reasons and normally require written documentation of the reasons.

Be sure to read and follow the CIS Department Policies statement, available under the CIS Department Web Page. (This statement covers especially the proper use of departmental computing facilities and department-wide course policies.) In addition, read the Regulations section of the College Bulletin (which covers such things as grading and academic honesty) and the Student Handbook (especially the section on academic honesty and the section on the misuse of computers or computer networks).

Students with documented disabilities should meet with the instructor at the beginning of the semester to find reasonable accommodations.


Instructor: Br. David Carlson