TERM: Spring 2009
for Computer Programming II: CS 2500
CLASS INFO FROM SCHEDULE:
22018 CS 2500 001 Computer Programming II (LEC) 3.0 TR 09:40-10:39
22019 CS 2500 002 Computer Programming II (LAB) 0.0 TR 10:40-11:07
INSTRUCTOR: John Sarraille, Professor of Computer Science
Professional Schools Building (aka DBH), Cal State Stanislaus
REGULARLY SCHEDULED OFFICE HOURS:
ADDITIONAL OFFICE HOURS MAY BE ARRANGED ON REQUEST
- Mon 13:30-15:15,
- Tues & Thurs 12:00-13:45
(The first day of regularly scheduled office hours is Monday, Feb 16, 2009 and
the last is Tuesday May 26, 2009.
There are no regularly scheduled office hours on Wednesdays, Fridays,
holidays, or during spring break.)
You have to be adequately prepared for taking CS 2500.
Check with me if you have not passed Computer Programming I (CS 1500), or the
The objectives of this course are the knowledge, skills, and experience needed
to solve programming problems correctly, efficiently, independently, and on
time. It will not be easy to attain those objectives, but I think most
students can do well if they 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 the course include learning to use advanced C++ features such as
structures, classes, pointers, arrays, and files; learning to use Sun,
Macintosh and other unix-based workstations effectively; and becoming
proficient with plain-text editors such as Emacs and JOVE, which incorporate
tools that facilitate developing and debugging programs.
See the schedule for weekly reading
- In Carrano, we will be covering program design, recursion, C++
fundamentals, data abstraction and information hiding, lists, stacks, queues,
and trees (chapters 1-2, appendix A, chapter 3-4, 6-7, and 10).
- In Rosen we will cover some of the material on unix basics & "getting
started," file systems, shells, text editing, desktops such as CDE, process
control, security, filters & utilities, shell scripting, and C++ programming
BASIC INFORMATION ABOUT CLASS SESSIONS:
For technical reasons, CS 2500 students are required to sign up for separate
lab and lecture sections. However, class days generally consist of a mixture
of laboratory and lecture activities. Usually my two main goals in class
sessions are to help students assimilate the readings and to help them
complete the programming assignments.
Almost every time class meets, whatever day it is, we will be in the
classroom. Always come to the classroom for class
unless I have previously announced that we will meet in the computer lab
You 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 up to ten hours per week
on this class, in addition to class time.
I expect students to attend regularly and to actively keep track of all
aspects of the class. I will monitor attendance.
TESTS & GRADING:
Your grade will be based on two components: tests and programs.
There will be three quizzes, five programming
assignments, and a comprehensive final examination.
To pass the course you must:
If you meet the requirements above I will compute your Course Grade by giving
a weight of 60% to your Test Component Score, and a weight of 40% to your
Average Program Score. In other words:
- receive a passing Test Component Score,
- turn in a working solution to every one of the programming problems, and
- receive a passing Average Program Score.
Course Grade = (0.60)(Test Component Score) + (0.40)(Average Program Score)
To compute your Test Component Score, I will first compute your Quiz Average
and your Final Exam Score. I will then compute the MAXIMUM and MINIMUM of
your Quiz Average and Final Exam Score. Your Test Component Score will be:
Test Component Score = (0.70)(MAXIMUM) + (0.30)(MINIMUM)
This way, if your performance on the quizzes and final exam differ, I
will give much weight to what you did better.
MISSED EXAMS AND LATE ASSIGNMENTS:
I will give quizzes on class days and I will give the final exam on the date
and time specified in the class schedule. It is your responsibility to be
available for testing. I will not offer any late, early or make-up exam
Get started on assignments early and keep on track to complete them early.
That way, if you run into difficulty, you can get timely help in class and/or
I will assess a
late penalty of 10% credit per calendar day
(including holidays and weekends) on assignments turned in between one and
five days late.
I will not accept assignments late more than 5
We can have class discussions about quiz dates and program due dates. I
may be willing to change some of these dates. If you want a change in
the schedule, please bring this up (in class, preferably) as soon as possible,
and not at the last minute. (It is usually a good idea for class members to
try to work out some consensus before bringing the subject up with me.)
If it becomes apparent you will not be able to
finish an assignment on time, please turn in whatever you
have done! It may be possible to get up to about half credit on an
unfinished assignment, depending on the quality of the work and the
To 'survive' in a class like this, you may need to overcome 'foolish pride',
stubbornness, and/or shyness. If you find you are not making sufficient
progress on some aspect of an assignment, seek help from me promptly. You may
speak to me after class or during my office hours. You may send me a message
by e-mail. You are entitled to get help this way. Please don't subvert your
chances of success by continuing to "spin your wheels" until it is too late.
Please understand that if you fail to turn in
any one of the assigned programs by the fifth day after the due date,
you will fail CS 2500. You will have my sympathy. However, I do not
make exceptions to this rule.
PROGRAM DESIGN METHODOLOGY:
Design each program using a top-down methodology, modular data structures, and
information hiding. Use the top-down method to design the instructions of
your program, the data structures, the documentation, and the test data. 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 sometimes require you to turn in two or three levels of your
programming assignments so that I can check your progress in creating your
top-down design. If so, I will assign some fraction of the total credit for
the program to each level. For example there might be a scheme like this:
01% level two program
02% level three program
05% final version of program
08% total credit for the program
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, I can
allow that, but you must speak with me in advance and reach an agreement on
some ground rules.
I hope to be accessible and helpful to you during this course. I want you to
get as much as possible out of it.
Remember, we are a team and you are a key player. Read
everything I assign as soon as possible, and read with care.
Read difficult material more than once! Attend all classes. Pay
close attention. Take notes. Review your notes before each
class. Get started on assignments early. Do a little each day,
and bring your questions and problems concerning these
assignments to class each day.
Finish assignments and reading on time. Do what you can to keep class
discussion lively and to the point. Reply to questions. Ask questions and
make remarks if you feel you have something to add, or if you feel something
needs to be explained better.
RESPONSIBILITY FOR YOUR OWN WORK - what is cheating and what is not:
Assignments: When your purpose is to clarify or to reach an
understanding of program specifications, you may discuss programming
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.
You are permitted to use algorithms or segments of code from
You are permitted to share such material, as described in 1-3 above, with
other members of this class.
- any printed material available for student check-out in our library,
- our course text, or
- any programming textbooks to which you have access.
You may ask me for help and hints on assignments. I prefer that you ask
questions in class if the others can benefit from the discussion.
On the other hand,
you may not give other members of this class programming code
that you created.
You may not accept program code or accept help from any source that is
not specifically listed above as permitted.
Exams: You must write your exams with no
discussion or help from anyone. The one exception is that you are
allowed to come forward and ask me to clarify the meaning of a test question,
if you wish. It will be up to me to decide how to answer, or whether to
answer at all. I will tell the class any new information that arises from
such an exchange.
Penalties: If there is compelling evidence that
an assignment or test was not done according to the above criteria, I will
NETWORK AVAILABILITY OF COURSE MATERIALS:
I will make course documents, assignments, supplements, and so on available on
the world wide web. To access the on-line CS 2500 materials, you can open the
There is also a miscellaneous collection of information that you may want to
use from time to time. It is located here:
You need to have an account that gives you access to all the Computer Science
multi-user computers. The computers have a network file system, which means
you get the same home directory and "computing environment," regardless of
which computer you log on to.
If you don't seem to have access to the lab computers, then let me know right
away, preferably by filling out and submitting this
Otherwise send me an e-mail or give me a piece of paper containing the
answers to the questions on the
We will have a special lab session to teach you what you need to know in order
to use the lab machines for class assignments.
The CS computers are located in the Computer Science Lab:
P-288 is in the Professional Schools Building (aka
Demergasso-Bava Hall), in the extreme northwest corner of the
I will test the programs that you write for this course by compiling and
executing them on one of the Sun Ultra computers in the
CS lab (saiph, deneb, castor, pollux, omicron, ceti, altair, arcturus,
or polaris). Therefore you must perform tests to make
sure that your programs compile and run without errors on one of those
machines. If you are accustomed to a different computing environment,
you will have to be careful about this. (Keep in mind that a program compiled
to execute on an Ultra won't execute on the Macintosh hardware, and
Generally, CS Department workstations are available for access and use on a
24-hour basis. However campus computer labs do not remain open at all hours.
Therefore sometimes network access is the only option. For more information
about establishing network connections, see the section below entitled
"INTERNET CONNECTIONS." Also see the course document entitled
P-288 will be open basically midmorning 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
staff and 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, in the "message of the day" that is
printed on your screen when you log on to your account, or
check on the web.
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, (209) 667-3273,
You may develop your programs on any of the computers in the CS lab. Some run
Windows, some Mac OS X. The Sun Ultra's run Solaris 10, a version of unix.
When you need to check your program on a Sun Ultra you will be able to access
it by logging in directly at the console, or by using remote login software
(ssh) from a lab computer running Mac OS X or Windows. (Keep in mind that a
program compiled to execute on an Ultra won't execute on the Macintosh
hardware, and vice-versa.)
Ssh makes it possible for many people to use a given workstation
simultaneously. We will have a demonstration of how to get an
ssh connection. (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 the
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 should be able to show you how to ssh to a CS Department
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, newspapers, and other media.
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.