(Latest Revision -- August 29, 2004)
TERM: Fall 2004
for Computer Programming I: CS 1500/1502
40560 CS 1500 002 Computer Programming I Lec 3.0 MW 11:15-12:13 P-114
40563 CS 1502 002 Computer Programming I Lab 0.0 F 11:15-12:13 P-114
(Although "Lab" is officially scheduled in P-114 on fridays,
we will actually go to P-288 for many labs - mostly on
INSTRUCTOR: John Sarraille, Professor of Computer Science
Professional Schools Building (aka DBH), Cal State
OFFICE HOURS: M-Tu-W 09:00-11:00; or by appointment
(Office hours commence on Sept 07 and end on Dec 09.)
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.
Programming and Problem Solving with C++ (3rd edition);
by Nell Dale, Chip Weems, and Mark Headington;
published by Jones and Bartlett, 2002;
Just Enough Unix (4th edition);
by Paul K. Andersen;
published by McGraw-Hill, 2003;
We will cover most of chapters 1-12 in
Programming and Problem Solving with C++ (3rd edition),
(For short, I'll refer to that book as "DWH" -- the intials of
the authors.) We will also cover most of parts I-VII of
for a complete list of weekly reading assignments.
This class is C++ oriented. You will be learning C++. You will be doing all
your programming labs and assignments in C++.
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. Often we will meet in the
CS department laboratory (P-288)
for one of the class hours in a week, and meet in the lecture room for the
other two class hours. Many variations are possible, so check the
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: laboratory, solo programming,
The laboratory component consists of work you do with a lab partner in
the CS lab. You run commands, run applications, and write small programs. To
show that you did the work properly, you turn in listings of source code,
scripts showing your work sessions, listings of command outputs, and such.
Your score on the laboratory component of the course will be the average of
your scores on the individual labs.
The solo programming component consists of programming that you do all
by yourself. Your score on the solo programming component of the course will
be the average of your scores on the individual solo programs.
The examination component consists of several quizzes and an optional
comprehensive final examination. Each quiz and exam will cover topics from
lab, reading assignments, programming assignments, and lecture. Your score
on the examination component of the course will be the maximum of
To pass CS 1500 you must:
- the average of your quiz scores, and
- your score on the final examination.
If you meet all the criteria above, your course grade will be derived from the
weighted average score of your course components. If the average is 91-100
you will receive an 'A' in the course; 81-90 earns a 'B'; 71-80 gets a 'C';
and 61-70 is a 'D'.
- turn in a satisfactory solution to every solo programming problem;
- have a passing score on the solo programming component;
- have a passing score on the examination component; and
- have a passing weighted average score on your course components: 20%
weight goes to the laboratory component, 40% to the solo program
component, and 40% to the exam component.
You don't have to take the final examination. You can take it if you want to
try to raise your score on the examination component.
There will be no make-up quizzes.
Please feel free to seek my help in office hours, lab, or lecture
if you are having difficulty making progress on any programming
problem. 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 early on
assignments and come early for the help you need. I'll listen
and do what I reasonably can to help.
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 for a late programming assignment up to a limit
of 6 days, or up until such time that I show a solution to the
class, whichever comes first. Beyond
that limit your submission will not be accepted, and
that will mean that you do not pass CS
1500 this term.
Days means calendar days -- including weekend days
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. (It's usually a good idea for class members to try to
work out some consensus before bringing the subject up with me.)
If you are not finished with an assignment
on the due date, please turn in what you have done,
and write me an e-mail explaining that you are turning
in an assigment that you have not completed. (It is possible
to get up to about half credit for a partially-done programming
assignment, depending on the quality of the work and the
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
On the other hand, when your purpose is to clarify the meaning of
solo program specifications, you may discuss solo assignments
with other people, including your classmates, as much as you
like. You may also freely discuss the relative merits of various
general approaches to designing and engineering solutions to solo
- You may not allow any part of the C++ code you
compose (make up) for a solo programming assignment to be
communicated to another member of the class or allow another
person's solution code to be communicated to you.
- You may not (even) look at any part of the solo
program code of another member of the class, whether on
paper or on a computer screen.
In your solution code for a solo program, you are permitted to
use segments of code or algorithms that you find in:
You are permitted to share material of type 1-3 above with other
members of this class.
- any printed material available for student check-out in our library,
- our course texts, or
- any programming textbooks to which you have access.
You may ask me for help and hints on solo assignments. I prefer
that you ask questions in class, so that everyone has a chance to
benefit from the discussion.
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.
I will withhold credit if there is
compelling evidence that you did not follow the rules spelled out
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:
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 (also known as
Demergasso-Bava Hall, or DBH), 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
Gaining Access to Workstations in the Computer Science Department
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, email@example.com.
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 a
remote login program such as "ssh" from some other kind of
computer in the lab, such as a Macintosh or a "Wintel".
Remote login makes it possible for many people to use a given
workstation simultaneously. We will have a demonstration of how
to perform remote login. (You can probably get help just by
asking someone in the lab.) You can also access the Sun Ultra's
via an "ssh" connection from most any computer on the campus
local network, such as
those in P-107, 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 do a remote login to a CS Department workstation.
You can make a modem connection to the campus network by calling
this local Turlock number: 669-9834. At one time it was possible
to call toll-free from Modesto (523-2173), Merced (723-2810) and
Stockton (467-5399). Unfortunately I think it was announced that
the availability of this service was discontinued due to the
recent cuts to the CSU budget.
Check with the
of the Office of Information Technology: (L-150,
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
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 in 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 remote login and
file transfer software. This will allow you to log in from home to your
computer account at the college and also transfer files back and forth. For
more information about this, read the
remote login and file transfer help sheet.
For additional information, ask me or the CS Lab Administrator, Julie Gorman.