(Latest Revision -- 02/17/00)
02/17/00: Modified telnet and ftp info

Course Description
for Computer Programming II: CS 2500

TERM: Spring 2000


20537 CS 2500 001 Computer Programming II Lec 3.0 MW 10:10-11:08 P-101
20538 CS 2500 001 Computer Programming II Lab 3.0 F 10:10-11:08 P-101

INSTRUCTOR: John Sarraille, Professor of Computer Science

OFFICE: P-286, Professional Schools Building, Cal State Stanislaus

OFFICE HOURS: MWF 1-2; Tu-Th 11:30-12:30, or by appt.

E-MAIL: john@ishi.csustan.edu

HOMEPAGE: http://www.cs.csustan.edu/~john/jsHomepage.html


For technical reasons, students in this class are required to sign up separately for CS 2500 (lecture) and CS 2502 (lab). However, each class session is a mixture of lab and lecture. Each day we do whatever we need to do: lab, lecture, or some of both.

Almost every time class meets, whatever day it is, we will be in P-101. Always come to P-101 for class unless I have previously announced that we will meet in the computer lab.

On the very first Friday of the class, we will have a get-acquainted session in the computer lab: room P-288.

Students are responsible for doing programming assignments outside of class time. Doing the assignments can fill up a lot of hours. To keep the pace, you will need to "work smart." In any case, expect to spend about ten hours per week on this class, in addition to class time.

My expectation is that everyone will attend all the classes and keep current with everything that is happening in class. I will keep track of attendance.


It is important that you are adequately prepared for taking this course, CS 2500. Check with me if you have not passed:

CS 1500 (Computer Programming I), or the equivalent.


Data Abstraction and Problem Solving with C++: walls and mirrors by Carrano, Helman, and Veroff (2nd edition), published by Addison Wesley, ISBN 0-201- 87402-4, http://www.awlonline.com/product/0,2627,0201874024,00.html

Just Enough Unix, 3rd ed. by Paul K. Andersen, McGraw-Hill, ISBN 0-07-230297-6. http://www.mhhe.com/catalogs/0072302976.mhtml


You should also consider getting a more comprehensive Unix book. Here are a couple of possibilities:

UNIX in a Nutshell: System V Edition, 3rd Edition by Arnold Robbins, published by O'Reilly & Associates, ISBN 1-56592-427-4, http://www.oreilly.com/catalog/unixnut3/

A Practical Guide to the UNIX System, 3rd Edition by Mark G. Sobell, published by Addison Wesley, ISBN 0-8053-7565-1, http://www.awlonline.com/product/0,2627,0805375651,00.html


Our text is C++ oriented, and I will present most code samples in C++. If you want to do a programming assignment in a different computer language, basically I am willing to accept that, but you must speak with me in advance and reach an agreement on some ground rules.

COMPUTER EQUIPMENT -- SUN Ultra Workstations:

Each of you will need an account that gives you access to all the Computer Science Department Sun Ultra 10 and Sun Ultra 30 computers. These computers have been specially networked so that you get the same environment, including home directory of your personal files, regardless of which Sun Ultra you log on to.

If you don't seem to have access to the Ultra's, then let me know right away, preferably by e-mail. Give me your full name and the name of the class. I'll see to it that an account is created for you, and I'll give you the account information at the next class meeting.

We'll have a special lab session to teach you what you need to know in order to use the Ultra's for class assignments.

The Ultra's are located in the new Computer Science Lab: P-288. P-288 is in the Professional Schools Building, in the northwest corner of the second floor of the north wing.

I will test the programs that you write for this course by compiling and executing them on a Sun Ultra. Therefore you must write programs that will compile and run without errors on these machines. If you are accustomed to a different computing environment, you will have to be careful about this.

Generally, the Ultra's are available for access and use on a 24-hour basis. However the campus computer labs do not remain open at all hours. Therefore sometimes network and modem connections will be the only means available for connecting to the Ultra's. For more information about network and modem connections, see the sections below entitled "MODEM CONNECTIONS" and "INTERNET CONNECTIONS". Also see the document entitled loginDirections.

P-288 will be open basically mid-morning until about 5:00 p.m.. During these times, you can be physically present in the CS Department Lab while using a department computer. This can be very beneficial because you then have the opportunity to work and communicate with fellow students and members of the faculty.

Due to budgetary constraints beyond our control, the hours during which P-288 is open are subject to change on short notice. Please check the postings of the lab hours at the entrance to the lab and in the "message of the day" that is printed on your screen when you login to your Sun Ultra account.

Incidentally, the CS Department often seeks volunteers and work-study students to help keep the lab open longer hours. For further information, ask our system administrator, Julie Gorman: P-288C, 667-3273, julie@siggraph.csustan.edu.

While you are in the CS Lab, you will be able to access Sun Ultra workstations by logging in directly at the console, or by using telnet from some other kind of computer in the lab, such as a Macintosh or a "Wintel".

Telnet makes it possible for many people to use a given workstation simultaneously. We will have a demonstration of how to get a telnet connection. (You can probably get help just by asking someone in the lab.) You can also access the Sun Ultra's via a telnet connection from most any computer on the campus local network, such as those in P-106, P-120, L-125 and L-145. Generally those labs are open during the same hours that the campus library is open. Please check postings at the labs or ask lab personnel in order to get further information about lab hours. Lab assistants (wearing red vests) should be able to show you how to telnet to a CS Department workstation.


Some phone numbers for making modem connections are: from Turlock 669-9834; toll-free from Modesto 523-2173; toll-free from Merced 723-2810; and toll-free from Stockton 467-5399. There has been recent discussion of discontinuing the availability of some of these connections. Check with the computer center's (OIT's) help desk to get the latest information. The help desk is in L-150, and the telephone number is 667-3687.


You may want to purchase Internet connectivity. This is not a requirement and not necessary for success, but it can be a great time-saver and a convenience once you have gotten past the hurdle of setting everything up.

There are several Internet service providers (ISP's) that serve this area. Chances are that members of the class can make good recommendations. We can devote some time to this topic on the first day of class.

One can find many ISP's by using the site: http://thelist.internet.com. ISP's also advertise in the yellow pages and in newspapers.

If you get an Internet connection, make sure you gettelnet and ftp capability. This will allow you to log in remotely to your computer account at the college and also transfer files back and forth. For doing telnet and ftp, you may need to get some special add-on software. For more information about this, read the telnet and ftp help sheet. For additional information, ask me or the CS Lab Administrator, Julie Gorman.


Many course documents, assignments, supplements, and so on will be made available via the world wide web. To access the on-line CS 2500 materials, you can open the URL


from any web browser on any computer connected to the campus network or Internet.

Also, there is a miscellaneous collection of information that you will probably need to make use of from time to time. It is located here:



The main aim of this course is for you to acquire the knowledge, skills, and experience needed to solve programming problems correctly, efficiently, independently, and on time. It will not be easy, but you will do well if you are patient and persistent.

Some specific goals are to learn about simple data structures, common algorithms, analyzing the efficiency of algorithms, designing programs that are easy to check and maintain, the basics of testing and debugging, self- reliance, and dealing with the inherent uncertainties and complexities of today's computing systems.

Other aims of this course include learning to use advanced C++ features such as structures, classes, pointers, arrays, and files; learning to use Sun workstations effectively; and gaining facility with jove, a plain-text editor that is useful for editing program source files.


Basically, we will be covering chapters 1-4, 6-7, and 10 of Carrano.

If you are not yet familiar with Unix, I expect you to read chapters 1-3, 5-11, 14, 16-18, 21-22, and 24 of Andersen as soon as possible, say in the first three weeks of the course. More material from Andersen will be discussed as needed. See the schedule for weekly reading assignments.


The course has two main components: programs, and exams.

The program component consists of assignments to write 5 programs or parts of programs. I will require you to design program instructions (code) using a top-down design methodology. You will use the top-down method to design the data structures, documentation, and test data as well as the code.

A programmer using the top-down method develops the program level by level. The programmer starts with a very simple first-level program design, and works down, step-by-step, to more detailed levels. I will often require you to turn in two or three "levels" of your programming assignments so that I can check your progress in employing the top-down design method.

The exam component of this class consists of 3 quizzes, and an optional comprehensive final exam. Each quiz and exam can cover topics from textbook, programming assignments, and lecture.

Ideally, you will do well on all the programs and quizzes, and your course grade will be determined by giving a weight of 10% to each program, and 16.66% to each quiz. Under these ideal circumstances, you will not take the final exam and your quiz scores will, in total, account for 50% (3 times 16.66%) of your course grade.


If you miss a quiz, or if for any reason you wish to improve your average on the exam component of the course, you may choose to take the final exam. The final exam is penalty-free: If your score on the final exam is higher than your lowest quiz score, then the final exam will count 16.66% of your grade in the course and your two highest quiz scores will each count 16.66%. If your score on the final is equal to or lower than your lowest quiz score, then your score on the final will not count, and each quiz score will count 16.66% of your course grade.


In order to receive a passing grade in this course, you must get a passing average in both the programming component and the exam component. Also, you must turn in a working solution to each of the programming problems. Late assignments are not accepted, so solutions to programming problems have to be turned in by the (final) due date for the project in order to receive credit.


Late assignments will not be accepted, however we can discuss due dates in class and I may be willing to move a due date back if doing so can be justified to my satisfaction. If you are uncomfortable with a scheduled due date, please bring this to my attention as soon as possible, and not at the last minute.

If you are not finished with an assignment on a due date, please turn in what you *have* done. (In this case, it may be possible to get up to about half credit, depending on the quality of the work and the circumstances.)

NOTE: Please bear in mind that you can fail this course just by missing some due dates. If you get bogged down on some aspect of an assignment, get some help from me. Speak to me after class, during my office hours, or send me a message by e-mail. Do this well before the assignment is due.


If you think you are going to be unable to take a test or turn in an assignment on time due to circumstances beyond your control, then let me know at the very earliest time possible. I'll try to make some fair arrangement with you.


I encourage you to discuss programming assignments with your classmates or whomever you wish. It is very appropriate and worthwhile for students to get together to test their understanding of an assignment, to discuss advantages and disadvantages of alternative approaches to solving the problem, to talk over the pro's and con's of different ways of organizing the program, and to give each other pointers to helpful published materials.

You are welcome to use algorithms or segments of source code that you get from me, from text books, or from publications available in our library or through inter-library loan. (Don't expect all of it to work perfectly! You'll have to adapt and even debug some of it.) Aside from the foregoing exceptions, you must be the sole author of all the source code that goes into the programs you turn in for this course.

During quizzes and exams, you are allowed to come forward and ask me to clarify the meaning of a test question. It will be up to me to decide how to answer, or whether to answer at all. The members of the class will be told any new information that arises from such an exchange. Aside from that, you must write quizzes and exams without the help of other people or the help of any reading materials.

If there is compelling evidence that programs or tests were not done according to the above criteria, credit will be withheld.


I hope to be accessible, helpful, and responsive to your needs during this course. You can do well, and I want that.

To optimize your likelihood of success, consider participating fully in the class: Attend all classes. Faithfully listen and take notes. Finish all assignments on time. Review your notes before each class. Reply to questions or remarks addressed to you. Ask questions. When you are not getting anywhere on some problem, and it's not the kind of thing you can get resolved in class, seek my help outside of class.

Do all this, even when things are not going well. And have fun!