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

Course Description
for Computer Programming I: CS 1500

TERM: Spring 2000


20535 CS 1500 002 Computer Programming I Lec 3.0 MW 11:15-12:13 P-101
20536 CS 1500 002 Computer Programming I Lab 3.0 F 11:15-12:13 P-288

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 1500 (lecture) and CS 1502 (lab). In fact, 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. Most Fridays we will meet in the CS department lab (P-288) and do lab work. Most Mondays and Wednesdays we will meet in P-101 and do lecture and whatever else is needed.

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


"Problem Solving in C++" by Angela B. Shiflet, PWS Publishing, ISBN 0-534-95139-2.

"Just Enough Unix, 3rd ed." by Paul K. Andersen, McGraw-Hill, ISBN 0-07-230297-6.


This class is C++ oriented. You will be learning C++. You will be doing all your programming labs and assignments in C++.

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.

You will learn much of what you need to know about the Ultras during our lab sessions on Fridays.

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 1500 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 to train you to do computer programming. You will be learning the C++ programming language, but that is only a part of the course. Once a person learns to program, it's no big deal to learn a new programming language. It takes only a few weeks.

The real objectives are to acquire good problem solving skills, algorithm design techniques, and skill in choosing ways to represent data. It will not be easy to gain these objectives, but you will do well if you are patient and persistent.

Some other course goals are to learn the basics of program testing and debugging, to find out how to use the Sun Ultra workstations effectively, to gain facility with the JOVE text editor, to develop self-confidence and self- reliance, and to acquire the ability to cope with the inherent uncertainties and complexities of today's computing systems.


We will cover most of chapters 1-11 in Shiflet, and most of parts I-V in Anderson. See the schedule for weekly reading assignments.


Your course grade depends on three components: labs, solo programming, and quizzes.

The lab component consists of weekly work you will do with a lab partner in the CS lab on Fridays. You will do things like, run commands, run applications, and write small programs. To show that you did the work properly, you will turn in listings of source code, scripts showing your work sessions, listings of command outputs, and such.

The solo programming component consists of programming that you do all by yourself. You will have to turn in solo work about every other week.

The exam component consists of three quizzes, and an optional comprehensive final exam. Each quiz and exam will cover topics from lab, reading assignments, programming assignments, and lecture.

Ideally, you will do well on all the labs, solo programming and quizzes, and your grade will be determined by giving a weight of 20% to your lab average, 40% to your solo programming average, and 40% to your quiz average.

You don't have to take the final. If you feel that you need to improve your grade, you may take the final, and I will replace your lowest quiz score with your grade on the final (provided, of course, that your grade on the final is higher than your lowest quiz score.) There will be no make-up quizzes.


In order to receive a passing grade in this course, you must get a passing average in both the solo programming component and the exam component. If you receive a failing average in either of these components, you fail the course, no matter how well you did in the other components. Also, you must turn in a working solution to each of the solo programming problems. Late assignments are not accepted beyond a certain time limit, so keep in mind that it is quite possible to fail this course just by failing to turn in one program on time!


Please feel free to seek my help in office hours, lab, or lecture if you are having difficulty making progress on any programming problem. According to university regulations, you are entitled to this service. Students need this kind of help from time to time, so please have the wisdom to use it when you need it. Also please get started on assignments early and come for the help you need early. You have my promise that I will listen to you and I will do what I reasonably can to help you.

Experience has shown that when students submit late assignments and professors tolerate it, chaos sets in very rapidly. You will be penalized 10% per calendar day (yes, including weekend days) up to a limit of 6 days, or up until such time that I show a solution to the class. Whichever comes first, after that time your submission will not be accepted.

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 the due date, please turn in what you have done. (It is possible to get up to about half credit, depending on the quality of the work and the circumstances.)


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


Feel free to discuss anything about Friday lab assignments with anyone. Feel free to give or accept any kind of help, including the sharing of actual C++ code. (Of course, you are likely to learn more if you try to do what you can on your own.)

The solo programming assignments have to be treated in a different manner.

On the one hand, I encourage you to discuss solo 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 libraries. (Don't expect all of it to work perfectly! You'll probably 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 solo 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 help from other people or from written material.

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, participate fully in the class: Attend all the 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 during office hours.

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