(Latest Revision -- 02/17/00)
02/17/00: Modified telnet and ftp info
Course Description
for Computer Programming
II: CS 2500
TERM: Spring 2000
CLASS CODES:
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
BASIC SCHEDULE INFO:
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.
PREREQUISITES:
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.
REQUIRED TEXTS:
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
SUGGESTED READING:
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
PROGRAMMING LANGUAGE:
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.
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-150, and the
telephone number is 667-3687.
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.
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.
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 2500
materials, you can open the URL
http://shalim.csustan.edu/~john/Classes/CS2500_Programming_II/
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://shalim.csustan.edu/~john/Classes/General_Info/
COURSE OBJECTIVES:
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.
COURSE COVERAGE:
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.
TESTS & GRADING:
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.
THE OPTIONAL FINAL EXAM:
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.
EXCEPTION:
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:
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.
SPECIAL PROBLEMS:
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.
RESPONSIBILITY FOR YOUR OWN WORK:
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.
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, 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!