(Latest Revision -- September 06, 2001)
(09/06/01: Clarifying where class meets on the first day.)
Course Description
for Computer Programming I: CS 1500/1502
TERM: Fall 2001
CLASS INFO:
Section 001 of Programming I:
40568 CS 1500 001 Computer Programming I Lec 3.0 T 09:40-11:07 P-102
and R 09:40-10:10 P-102
40571 CS 1502 001 Computer Programming I Lab 0.0 R 10:15-11:07 P-288
(NOTE: Section 001 meets in P-102 on the first day, not P-288)
Section 003 of Programming I:
40570 CS 1500 003 Computer Programming I Lec 3.0 MW 11:15-12:13 P-103
40573 CS 1502 003 Computer Programming I Lab 0.0 F 11:15-12:13 P-288
(NOTE: Section 003 meets in P-103 on the first day, not P-288)
INSTRUCTOR: John Sarraille, Professor of Computer Science
OFFICE:
P-286,
Professional Schools Building, Cal State
Stanislaus
OFFICE HOURS: MWF 12:20-13:25, TTh 11:15-12:20; or by
appointment (Office hours commence on Sept 06.)
E-MAIL: john@ishi.csustan.edu
HOMEPAGE:
http://www.cs.csustan.edu/~john/jsHomepage.html
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
http://www.cs.csustan.edu/~john/Classes/CS1500/
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:
http://www.cs.csustan.edu/~john/Classes/General_Info/
COURSE OBJECTIVES:
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.
REQUIRED TEXTS:
Problem Solving in C++ (1st edition),
by Angela Shiflet,
published by Brooks/Cole,
ISBN 0-534-95139-2.
Just Enough Unix (3rd edition),
by Paul K. Andersen,
published by McGraw-Hill,
ISBN 0-07-230297-6.
COURSE COVERAGE:
We will cover most of chapters 1-10 in
Shiflet, and most of parts I-V in Anderson. See the
schedule
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.
Usually we will meet in the lecture room for the first two class
hours of each week, and meet in the
CS department laboratory (P-288)
for the third class hour. Exceptions are possible, so check the
class schedule
frequently.
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 exam.
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.
EXCEPTION:
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!
PROGRAMMING LANGUAGE:
This class is C++ oriented. You will be learning C++. You will
be doing all your programming labs and assignments in C++.
LATE ASSIGNMENTS:
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 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
and holidays.
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, 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 circumstances.)
SPECIAL PROBLEMS:
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.
PARTICIPATION:
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:
- 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
it.)
- 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.
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 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
on to.
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.
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.html.
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.
MODEM CONNECTIONS:
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-130,
and the telephone number is 667-3343.
INTERNET CONNECTIONS:
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.
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:
http://thelist.internet.com.
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.