(Latest Revision -- 04/05/01)
04/05/01: changed office hours
TERM: Spring 2001
for Computer Programming I: CS 1500
20655 CS 1500 002 Computer Programming I Lec 3.0 MW 11:15-12:13 P-167
20657 CS 1502 002 Computer Programming I Lab 3.0 F 11:15-12:13 P-288
INSTRUCTOR: John Sarraille, Professor of Computer Science
P-286, Professional Schools Building, Cal State
OFFICE HOURS: MWF 12:20-13:20; T-Th 11:15-12:15; or by appointment
NETWORK AVAILABILITY OF COURSE MATERIALS:
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
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
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.
Problem Solving in C++ (1st edition),
by Angela Shiflet,
published by Brooks/Cole,
Just Enough Unix (3rd edition),
by Paul K. Andersen,
published by McGraw-Hill,
We will cover most of chapters 1-10 in
Shiflet, and most of parts I-V in Anderson. See the
for weekly reading assignments.
BASIC INFORMATION ABOUT CLASS SESSIONS:
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
the lecture room (P-167)
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. I will keep track of attendance.
TESTS & GRADING:
Your course grade depends on three components: lab, solo programming, and
The lab component consists of weekly work you will do with a lab partner in
the CS lab. 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 programs, and quizzes. If
that's the case, I will determine your overall course grade by assigning
weights of 20% to your average lab grade, 40% to your average solo program
grade, and 40% to your average quiz grade.
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 those components, you fail the
course, no matter how well you do 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!
This class is C++ oriented. You will be learning C++. You will be doing all
your programming labs and assignments in C++.
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 (including weekend days and holidays) 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.
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!
RESPONSIBILITY FOR YOUR OWN WORK:
Feel free to discuss anything about the lab assignments with your lab
partner or anyone else. Feel free to give or accept any kind of help on these
assignments, 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.)
You must treat the solo programming assignments in a very` different
manner: You must be the sole author of all the source code in each solo
program that you turn in.
There must be no exceptions to that rule, but I do encourage some kinds of
help-getting and teamwork on solo programs:
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. I will tell the members of the class any
new information that arises from such an exchange. Aside from that, you
must write quizzes and exams without help from other people and without
the help of any written materials that I have not explicitly approved.
- You may use any and all algorithms or segments of source code that you
get from me, from text books, or from publications available in
libraries. You may not share source code in any other way.
(Incidentally, don't expect all the code you get from me or from books to
work perfectly! You'll probably have to adapt and even debug some of
- Although you are bound not to share code inappropriately, you may
discuss solo programming assignments with others. 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.
I will withhold credit if there is compelling evidence that you did not follow
the rules spelled out above.
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
You will learn much of what you need to know about the Ultras
during our lab sessions.
The Ultra's are located in the Computer Science Lab:
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
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
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,
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
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
Many Internet service providers (ISP's) serve our 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:
ISP's also advertise in the yellow pages and in newspapers.
If you get an Internet connection, make sure you get telnet 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.