(Last Revision: 02/09/98) COURSE INFORMATION FOR COMPUTER PROGRAMMING II CS 2500 (Lec) SECTION 1 AND CS 2502 (Lab) SECTION 1 Tu-Th 9:40-11:07; C-202 (Classroom Building) TERM: Spring 1998 CLASS CODES: 20258 CS 2500 Section 001 21448 CS 2502 Section 001 INSTRUCTOR: Prof. John Sarraille OFFICE: CS-102B, Cal State Stanislaus OFFICE HOURS: Tues 13:00-14:30, Wed 9:00-12: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 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 C-202. However, during the semester class will meet occasionally in the Computer Science Department Computer Laboratory (The Lab: CS-102). We will meet there if we need to do some hands-on computer work. Always come to C-202 for class unless I have previously announced that we will meet in the Lab. Everyone is expected to attend all the classes. It is your responsibility to keep current with everything that is happening in class. PREREQUISITES: It is important that you adequately prepare for taking this course, CS 2500. Check with me if you have not passed: CS 1500 (Computer Programming I), or the equivalent. REQUIRED TEXT: "Data Abstraction and Problem Solving with C++: walls and mirrors" by Carrano, Helman, and Veroff (2nd edition) SUGGESTED READING: If you have no experience using Unix computers, you ought to get a copy of this (very inexpensive) book. Our Kiva bookstore usually has a few copies in stock. If they don't have it, you can order it from them: "Learning the Unix Operating System" by Grace Todino, John Strang, and Jerry Peek (3rd Edition). EQUIPMENT: SUN SPARC COMPUTERS: Each of you will have an account on the Computer Science Department Sun Microsystems Sparc computers. If you are not familiar with the Sparcs, I will show you everything you need to know about how to use them. The Sparcs are named sirius, sparky, omicron, and reddog. They are located in CS-102. CS-102 is in the Computer Science Building. The Computer Science Building is on the west side of the campus, next to the Music Building. I will test the programs that you write for this course by compiling and executing them on a Sun Sparc. Therefore you must write programs that will compile and run without errors on these machines. If you are accustomed to using a different C++ compiler, you will have to be careful about this. Generally, the Sparcs 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 the Sparcs. For more information about network and modem connections, see the sections below entitled "MODEM CONNECTIONS" and "INTERNET CONNECTIONS". Also see the document entitled "loginDirections". The CS lab facilities are located in two rooms: CS-102, and CS-103. The CS Department Lab is open during certain hours (basically mid-morning until about 5:00 p.m.). During these times, you can be physically present in the department lab while using a Sparc or other computer. This can be very beneficial when you desire to work and communicate with fellow students and members of the faculty. Due to budgetary constraints beyond our control, the hours that the CS Department Lab will be open are subject to change on short notice. Please check the postings of lab hours that are given in the "message of the day" that is printed on your screen when you log in to your Sun account. While you are in the Lab, you will be able to access the Sparcs by logging in directly at the console, or by using telnet from one of the other computers in CS-102 or CS-103. Thus, many people can use one Sparc simultaneously. For those of you that need it, I will arrange a demonstration of how to telnet to the Sparcs. Also, you can often find out a lot just by asking people in the lab. You can also access the Sparcs via a telnet connection from most any computer on the campus local network. There are many such computers in the campus general computing labs in L-125 and L-145. Generally these 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 sirius, sparky, omicron, or reddog. 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 473-1225 (28.8K). 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 searching "internet service providers ISP" in a web-browser. Here are some possibly useful URL's from a search that I did: http://thelist.internet.com/areacode.html http://www.isps.com/advscripts/United_States/California.asp http://www.herbison.com/herbison/iap_meta_list_us_ca.html http://www.gvn.net/~creative/access.htm 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 connect to your computer account at the college and 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 do the command "gopher ishi" from most any networked Unix computer on campus, or 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 "CS2500_Programming_II" to get to the area containing the class information. 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, 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 Pascal features such as pointers, sets, arrays, records, variant records, 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-7 and 10 of "Walls and Mirrors". If you are not yet familiar with Unix, I expect you to read chapters 1 and 3-7 of Todino, Strang, and Peek in the first 2-3 weeks of the course. Material from Todino, Strang, and Peek will be discussed as needed. TESTS & GRADING: The course has three main components: homework, programs, and exams. The homework component consists of 5 EXERCISE SETS due about every two to three weeks. The program component consists of assignments to write 5 PROGRAMS. I will require you to design each program using a top-down design methodology. You will use the top-down method to design the data structures, documentation, and test data of your program, as well as the program instructions themselves. A programmer using the top-down method develops the program level by level. He or she 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 homework, textbook, programming assignments, and lecture. Ideally, you will do well on all the homework, programs, and quizzes, and your course grade will be determined by giving a weight of 2% TO EACH EXERCISE SET score, 8% TO EACH total PROGRAM SCORE, and 16.66% TO EACH QUIZ SCORE. 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 grade on the final exam is higher than your lowest quiz score, I will replace your lowest quiz score with your grade on the final exam. If your grade on the final is equal to or lower than your lowest quiz score, then your grade on the final will not count. LOOPHOLE: One over-all exception to the above: 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. To pass the programming component, you must do all the programming assignments. 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 the 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 if you miss the due date for the final version of just one programming assignment, then you have failed the course. SPECIAL PROBLEMS: If you think you may have to miss a quiz or a due date because of circumstances beyond your control, then let me know about the problem at the earliest possible time. I will try to be fair. RESPONSIBILITY FOR YOUR OWN WORK: I encourage you to discuss program and homework 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 the course text book, or from any of the published printed matter in our library. (Don't expect all of it to work perfectly! You'll have to adapt and even debug some of it.) Aside from the exceptions described above, 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. When you do homework, you may use your text book to find help on answers, but do not copy the answers of other people. If there is compelling evidence that homework, programs, or tests were not done according to the above criteria, credit will be withheld. FREE LUNCH: I hope to be accessible and helpful to you during this course. I want you to get as much as possible out of it. However remember that education is a two-way street. You have to do your part by participating. Spend a lot of time reading your textbook, and stay well ahead of what I am doing in the lectures. Do all assignments early. Attend every class. Listen. Take notes. Review your notes before each class. Ask questions. Make remarks. If you have something half-way important to say, please say it. If you don't want to speak up in class, you can persuade one of your outgoing classmates to ask a question. Also you can ask me a question after class. Bring a little enthusiasm and sense of adventure and fun with you when you come to class. Come to office hours or see me after class if you want to discuss something one-on-one. (P.S. There is no free lunch.)