(Latest Revision -- 08/03/00)
Course Description
for Computer
Programming II: CS 2500
TERM: Fall 2000
CLASS CODES:
40652 CS 2500 001 Computer Programming II Lec 3.0 MW 11:15-12:13 P-101
40653 CS 2502 001 Computer Programming II Lab 3.0 F 11:15-12:13 P-101
INSTRUCTOR: John Sarraille, Professor of Computer
Science
OFFICE: P-286, Professional Schools Building, Cal
State Stanislaus
OFFICE HOURS: MWF 9-10, TTh 11:15-12:15; or by
appointment
E-MAIL:
john@ishi.csustan.edu
HOMEPAGE:
http://www.cs.csustan.edu/~john/jsHomepage.html
PREREQUISITES:
You have to be adequately prepared for taking this course,
CS 2500. Check with me if you have not passed Computer
Programming I (CS 1500), or the equivalent.
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.
REQUIRED TEXTS:
Data Abstraction and Problem Solving
with C++: walls and mirrors (2nd edition)
, by Carrano, Helman, and Veroff,
published by Addison Wesley,
ISBN 0-201-87402-4.
Just Enough Unix (3rd edition)
, by Paul K. Andersen,
published by McGraw-Hill,
ISBN 0-07-230297-6.
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.
UNIX System V: A Practical Guide, 3/e
, by Mark G. Sobell,
published by Addison Wesley,
ISBN 0-8053-7565-1.
COURSE COVERAGE:
We will be covering chapters 1-4, 6-7, and 10 of Carrano
(program design, recursion, information hiding, lists,
stacks, queues, and trees). In Andersen we will cover
chapters 1-3, 5-12, 17-22, 25, 27-31, and appendices A, B,
D, E, and G (introduction to Unix, Common Desktop
Environment, Unix file system, tutorial on files,
directories, file manager, Unix shell, text editors,
networking, e-mail, remote login, ftp, startup files,
shell scripts, programming under Unix, terminal, man
pages, permissions, write, talk, and make).
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 2500 (lecture) and CS 2502
(lab). However, each class session will be some mixture
of laboratory and lecture activities. Mainly the purpose
of class sessions is twofold: to help students absorb the
readings and related material, and to help them complete
the programming assignments.
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.
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.
TESTS & GRADING:
The course has two main components: programs, and exams.
There will be three quizzes, an optional comprehensive
final exam, and about five programming assignments.
To pass the course you must receive a passing average in
both the programming component and the exam
component. You also must turn in a working solution to
every programming problem. If you do all this, then
your course grade will be determined by giving a weight of
60% to your exam average (20% per exam) and 40% to your
programming assignment average (about 8% per program).
If you get a failing exam average, a failing average on
your programs, or if you fail to turn in a program before
the final deadline, you don't pass CS 2500 this term.
THE OPTIONAL FINAL EXAM:
Under ideal circumstances you will not need to take the
final exam. However, if you miss a quiz or if you want 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 replace your lowest quiz score: it will
count 20% of your grade in the course and your two highest
quiz scores will each count 20%. If your score on the
final exam is equal to or lower than your lowest quiz
score, then nothing will change: your course grade will
be computed just as it would have been if you did not take
the final exam.
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.
PROGRAM DESIGN METHODOLOGY:
I will require you to design each program using a top-down
design methodology, modular data structures, and
information hiding. You will 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 employing the top-down design
method. For example, for a programming assignment worth
8% of your overall grade, the top and second levels might
count 2% each and the final level 4%.
LATE ASSIGNMENTS:
Get started early on your assignments. That way, if you
run into difficulty, you can seek help in class and/or
office hours in a timely fashion.
I will assess a late penalty of 10% credit per calendar
day (including holidays and weekends) on programming
assignments turned in between one and five days late. I
will not accept programming assignments late more than 5
days.
We can have class discussions about due dates and I may be
willing to move a due date back if the class can justify
this 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 cannot 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 program,
depending on the quality of the work and the
circumstances.
To "survive" in a class like this, you may need to put
aside "foolish pride," stubbornness, and/or shyness. If
you are failing to make 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
sitting and "spinning your wheels" until it is too late.
I'm sorry but if you fail to turn in just one program by
the fifth day after the due date, you fail CS 2500. You
will not be allowed to continue in the class. I will not
make exceptions.
PARTICIPATION:
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 ASAP, 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:
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 any of the published printed matter in our library,
from our course text, or from any programming textbooks to
which you have access.
You may ask me for help and hints. Ask in class, so that
everyone has a chance to benefit from the discussion.
You may not discuss or give away any program code
segments.
You may not accept program code or accept help from
any source other than those described above.
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
homework, programs, or tests were not done according to
the above criteria, I will withhold credit.
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 3100 materials, you can open the URL:
http://shalim.csustan.edu/~john/Classes/CS2500_Programming_II/
There is also a miscellaneous collection of information
that you may want to use from time to time. It is located
here:
http://shalim.csustan.edu/~john/Classes/General_Info/
COMPUTER EQUIPMENT:
Each of you is supposed to have an account that gives you
access to all the Computer Science Department Sun Ultra 10
and Sun Ultra 30 computers. The computers have a network
file system, so you get the same home directory,
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
you get an account. 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 and other CS computers are located in the
Computer Science Lab:
P-288.
P-288 is in the Professional Schools Building (aka
Demergasso-Bava Hall), in the extreme northwest corner 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, 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 and modem connections are the only means
available for connecting to a workstation. For more
information about network and modem connections, see the
sections below entitled "MODEM CONNECTIONS" and "INTERNET
CONNECTIONS". Also see the course 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 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 or in the "message of the day" that is
printed on your screen when you log on 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@eos.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 in 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.