(Latest Revision -- 09/04/2003)
Course Description
for Computer Programming II: CS 2500
TERM: Fall 2003
CLASS INFO FROM SCHEDULE:
40571 CS 2500 001 Computer Programming II Lec 3.0 MW 0800-0858 P-114
40572 CS 2502 001 Computer Programming II Lab 0.0 F 0800-0858 P-114
INSTRUCTOR: John Sarraille, Professor of Computer Science
OFFICE:
P-286, Professional Schools Building, Cal State
Stanislaus
OFFICE HOURS: MWF 1115-1215, MW 1400-1500, or by appointment
(Office hours commence on Friday Sep 05, 2003 and end on Monday Dec 08,
2003)
E-MAIL:
john@ishi.csustan.edu
HOMEPAGE:
http://www.cs.csustan.edu/~john/jsHomepage.html
PREREQUISITES:
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
equivalent.
COURSE OBJECTIVES:
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
workstations effectively; and gaining facility with jove, a plain-text editor
that is useful for editing and debugging program source files.
REQUIRED TEXTS:
SUGGESTED READING:
You should also consider getting a more comprehensive Unix book. Here are a
couple of possibilities:
COURSE COVERAGE:
- In Carrano/Prichard, we will be covering program design, recursion, data
abstraction and information hiding, lists, stacks, queues, and trees
(chapters 1-4, 6-7, and 10).
- In Andersen we will cover introduction to unix, introduction to the
Common Desktop Environment (CDE), unix file system, CDE File Manager, unix
shells, text editors, unix networking, startup files, shell scripts,
programming under unix, terminal settings, unix user manual, and the 'make'
facility (chapters 1-3, 5-23, 26, 28, 30-34, and appendices A, B, & G).
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 the
classroom. Always come to the classroom for class
unless I have previously announced that we will meet in the computer lab
P-288.
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.
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 grade will be based on two main components: examinations and programs.
There will be four quizzes , an optional comprehensive final
examination , and five programming problems.
To pass the course you must:
- receive a passing average score on the four quizzes or pass the
optional final examination,
- receive a passing average score on the five programming problems, and
- turn in a working solution to every one of the five programming problems.
If you meet the conditions above I will compute your grade by giving a
weight of 50% to your score on the examination component and a weight of
50% to your programming assignment average.
Your score on the examination component of the course will be the maximum of
- your score on the final examination, and
- the average of your quiz scores
MISSED EXAMS AND LATE ASSIGNMENTS:
I will give no make-up exams or early exams.
Get started early on 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 assignments turned in between one and
five days late.
I will not accept assignments late more than 5
days.
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's usually a good idea for class members to
try to work out some consensus before bringing the subject up with me.)
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 assignment, 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 find yourself unable 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 continuing to "spin your wheels" until it is too late.
I'm sorry but
if you fail to turn in the final version of 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.
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 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
07% final version of program
------
10% total credit for the program
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.
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 printed material available for student check-out in our library,
- our course text, or
- any programming textbooks to which you have access.
You are permitted to share such material, as described in 1-3 above, with
other members of this class.
You may ask me for help and hints on assignments. I prefer that you ask
questions in class, so that everyone has a chance to benefit from the
discussion.
On the other hand,
you may not give other members of this class programming code
that you composed (made up). You may not discuss or give away any
specifics of answers to homework problems.
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, quiz or test was 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 2500 materials, you can open the
URL:
http://www.cs.csustan.edu/~john/Classes/CS2500/
There is also a miscellaneous collection of information that you may want to
use from time to time. It is located here:
http://www.cs.csustan.edu/~john/Classes/General_Info/
COMPUTER EQUIPMENT:
You need 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, which means you get the same home directory and
"computing environment," regardless of which Sun Ultra you log on to.
If you don't have access to the Ultra's or you aren't sure whether you have
access, then let me know right away. You may fill out and submit this
form
.
Otherwise you may send me an e-mail or give me a piece of paper containing the
answers to the questions on the
form
.
We will 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, in the "message of
the day" that is printed on your screen when you log on to your Sun Ultra
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,
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 ssh or
telnet from some other kind of computer in the lab, such as a Macintosh or
a "Wintel".
Ssh and telnet make 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
labs:
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 ssh 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
Call Center
of the Office of Information Technology: (L-150,
209-667-3687,
OIT_Call_Center@csustan.edu)
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 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.