(Latest Revision -- 02/13/99) COURSE INFORMATION COMPUTER PROGRAMMING I CS 1500 (Lec) SECTION 1 AND CS 1502 (Lab) SECTION 1 MWF 10:10-11:08; P-101 (Professional Schools Building) TERM: Spring 1999 CLASS CODES: 20548 CS 1500 Section 001 20549 CS 1502 Section 001 INSTRUCTOR: John Sarraille, Professor of Computer Science OFFICE: P-286, Professional Schools Building, Cal State Stanislaus OFFICE HOURS: MWF 11:10-12:10, Tues-Thurs 13:30-14:30 or by appointment PHONE NUMBERS: Office: 667-3345; CS Dept: 667-3185 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 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. Most Fridays we will meet in the CS department lab (P-288) and do lab work. Most Mondays and Wednesdays we will meet in P-101 and do lecture and whatever else is needed. My expectation is that everyone will attend all the classes and keep current with everything that is happening in class. REQUIRED TEXTS: "A Computer Science Tapestry" by Owen L. Astrachan, McGraw-Hill publ. "Unix in a Nutshell" by Daniel Gilly, et al., O'Reilly & Associates publ. (If you don't see the Unix book in the CS 1500 section at the bookstore, look for it in the CS 3000 section.) PROGRAMMING LANGUAGE: This class is C++ oriented. You will be learning C++. You will be doing all your programming labs and assignments in C++. 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 on Fridays. 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 667-3130, 667-3794 & 664-7072 (28.8K); toll-free from Modesto 523-2173; toll-free from Merced 723-2810 & 723-2826; and toll-free from Stockton 467-5399. 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 access providers (ISP's) that service this area. You can find many of them by entering the keywords "internet service providers ISP" in a WWW search engine. Also, you can find ads in the yellow pages and newspapers. If you get an Internet connection, make sure you get "telnet" and "ftp" capability so that you can login remotely to your computer account at the college and also transfer files back and forth. To be ready to do telnet and ftp, you may need to get some special add-on software from your ISP. NETWORK AVAILABILITY OF COURSE MATERIALS: Many course documents, assignments, supplements, and so on will be made available via gopher. To access my gopher server, you can open the URL "gopher://ishi.csustan.edu" from any web browser on any computer connected to the campus network or Internet. From there, just select "Classes" and then "CS1500_Programming_I" to get to the area containing the class information. 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. A person who has learned the truly important principles of computer programming can learn the use of another programming language in two or three 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. COURSE COVERAGE: We will cover chapters 1-8 in "tapestry," chapters 1-7 in "nutshell," and more, if time allows. TESTS & GRADING: Your course grade depends on three components: labs, solo programming, and exams. The lab component consists of weekly work you will do with a lab partner in the CS lab on Fridays. 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 programming and quizzes, and your grade will be determined by giving a weight of 20% to your lab average, 40% to your solo programming average, and 40% to your quiz average. 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 these components, you fail the course, no matter how well you did 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! LATE ASSIGNMENTS: Please feel absolutely free to seek my help in office hours, lab, or lecture if you are having difficulty making progress on any programming problem. This is a service to which you are entitled. 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 (yes, including weekend days) up to a limit of 6 days, or up until such time that I show a solution to the class. Whichever comes first, after that time your submission will not be accepted. 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. (It is possible to get up to about half credit, 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. RESPONSIBILITY FOR YOUR OWN WORK: Feel free to discuss anything about Friday lab assignments with anyone. Feel free to give or accept any kind of help, 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.) The solo programming assignments have to be treated in a different manner. On the one hand, I encourage you to discuss solo 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 libraries. (Don't expect all of it to work perfectly! You'll probably 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, 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!