Winter 2004 CS 31 (Shinnerl) Course Syllabus

Please don't print this document. It will be available online the entire quarter.

This document is divided into the following sections:

Course Information Summary
Academic Honesty and Software Theft
Subject Matter and References
Lectures, Discussion Sections, and Notes
Office Hours and E-mail

Course Information Summary

Course Title: Introduction to Computer Science I
Instructor: Joseph R. Shinnerl ("shin-AIR-ull"), Lecturer
Mail:    Postal mailbox in BH 4732N.
Office and Phone #: BH 4731A, (310) 794-4752
Regular Office Hours: TuTh 9:30--11:30AM in BH 4731A; subject to change.
Virtual Office Hours: Please do not use the campus "virtual office hours" system for this course. Instead, send e-mail directly to a TA or to Professor Shinnerl as appropriate. Questions by e-mail are encouraged and will be answered promptly.
Electronic Resources: Important electronic handouts are posted on the course home page:
For general information on SEASnet and the SEAS Labs, visit
Lecture: TuTh 2:00--3:50 PM, BH 5252
Teaching Assistant: Alex Dow,
Discussion Sections: 1A: F 8:00--9:50 AM, BH 5419.
1B: F 2:00--3:50 PM, BH 5272.
SEASnet Labs: BH 3436, BH 4405, BH 4442; open M 10am--11pm, Tu-Th 8am--11pm, F 8am-6pm, Sat 9am-9pm; Sun 1pm-11pm; hours subject to change on holidays. The SEASnet Help Desk is in BH 2684. The official software platform for this course is Microsoft Visual Studio .NET on Microsoft Windows XP. If you wish to install the course software on your own computer, you may pick up your free copies of the installation CD's from Julie Austin at BH 2567, Mon--Fri 9am--4:30PM except 12--1PM lunch.
Required Text: Absolute C++ by W. Savitch.
Recommended References:
(placed on reserve at Powell)
C++: An Introduction to Computing, 3rd Edition, by J. Adams and L. Nyhoff.
The C++ Programming Language, 3rd Edition, by Bjarne Stroustrup.
Exam Dates: Midterm: Tues., Feb. 10th, during lecture.
Final: Sat., Mar. 20th, 3--6PM; site to be announced
Do not take the course if you cannot take the final exam as scheduled.
Grading Policy: 40% Homework
20% Midterm Exam
40% Final Exam

To pass the course with grade C or better, you must

  • pass both the programming homework and the final exam
  • complete all programming assignments within the time limits specified in the Homework Section below. A passing score is typically 60% or above.
  • If you submit all homework assignments and they all demonstrate serious and prolonged effort, then your least homework score will not be counted.
    Prerequisites: Mathematical tools and concepts will be used in this course. Although no mathematics beyond typical high-school algebra is required, a willingness to learn and use mathematical ideas is important.
    Wait-List Policy: At present, overenrollment is not expected to be a problem this quarter. Detailed enrollment information is available from the UCLA Registrar's Web Pages. Please see Prof. Shinnerl if you encounter any difficulty.


    Cutoffs for letter grades at the end of the quarter will be close to the scale of 85% or above for an A-, 70% or above for a B-, etc. The cutoffs may be lowered somewhat but will not be raised. Of students who receive grades, usually about 25% receive A's, 35% receive B's, and 35% receive C's. Exceptions are sometimes made for classes perceived to be significantly stronger or weaker than the norm.

    All scores and grades are posted online at as soon as they are known. Please check your scores frequently and let the TA know at once if you believe any score to be in error.


    Exam questions will be based on principles and examples covered in lecture, discussion section, and the homework assignments. Exams are written and may include multiple-choice, short-answer, and coding questions. Limited partial credit on short-answer questions will be given only to answers that are substantially correct in some aspect of the problem. Attendance at all exams is mandatory. Bring an ID card with your photo on it to every exam. Arrive early; seating at exams is assigned. You are allowed to bring one two-sided 8.5" by 11.5" page of notes on white paper to each exam, provided you prepare the notes yourself. Remember that both the midterm and final exams are usually held at locations different from the regular lecture location. Exam locations are announced in lecture and posted online.

    There will be no makeup exams. For students who are ill or have other genuine, documented reasons for missing the midterm, the final will count for 60%. If you believe you will not be able to attend the midterm, inform Professor Shinnerl by e-mail of the reason for your absence before the exam. You must attend the final exam at the officially scheduled time. If you can't, please take the course a different quarter.

    You should carefully look over your graded exams to make sure that no error has been made in evaluating your work or in adding up your score. However, you must do this in the presence of your TA or professor. Once you leave your instructor's presence with your exam, no regrade request can be accepted. Submit any formal regrade request by e-mail to whoever gives your graded exam back to you.


    This section is divided into the following subsections:

    Posted Handouts
    Due Dates
    Formatting Programming Assignments
    Grading of Homework
    Homework Regrades
    Software Platform and Working at Home
    In order to learn programming, you must program. Most assignments are intended to require from 10 to 15 hours of work. However, successful completion of an assignment often requires more time than you expect. Start the homework early to allow yourself time to receive help in discussion section and office hours.

    Posted Handouts

    Programming assignments are posted as electronic handouts called specifications ("specs") on the course Web page. Helpful hints are also posted electronically in "FAQ" (frequently asked questions) format. If you believe you need more information than is provided in the initial assignment specification, be sure to check the FAQ handout. If you still need more information, let a TA, lab assistant, or Professor Shinnerl know. Your question and its answer may be added to the FAQ file to help others.

    Most assignment specifications will be posted early in a clearly marked preliminary form called a beta version to encourage you to start early and to allow for early correction or clarification of any possible errors or ambiguities in the handout. Your constructive feedback on these beta versions is appreciated. The final official version of each assignment will always be posted at least one week before its due date. As there is usually no significant difference between the beta spec and the official spec, you should not hesitate to start working on the assignment from the beta spec. However, please be sure that your submitted assignment conforms to the specs of the official assignment handout, not the beta version, to ensure that your assignment is graded properly.

    A page of frequently asked questions (FAQ) and answers will accompany each specification. FAQ pages provide useful hints and clarifications and are updated frequently.


    You are expected to learn the use of a debugger program; this will reduce your debugging time significantly. A debugger allows you to run your program one line at a time, watching how your variables change as you go. Alternatively, you can set breakpoints and halt execution only at those points. Try it. The TA and Lab Assistants can help get you started. The Visual Studio package includes a debugger.

    Due Dates and Late Submission

    Programming homework is usually due Wednesdays at 10:00 PM. Late homework may be turned in until the following Friday (2 days later after the due day) at 10:00 PM. Late penalties are levied as follows.

    Penalties for Late Homework
    Less than 24 hours late -10% of points possible
    Less than 48 hours late -25% of points possible
    More than 48 hours late -50% of points possible
    After the final deadline of 10:00 PM on Friday, homework cannot be submitted by the usual method and must be submitted directly to a TA. Limited partial credit not to exceed 50% of the total amount possible may be given to these late assignments, at the TA's and grader's discretion.

    It is required that you complete every programming assignment by within 2 weeks of its due date or by the last day of instruction, whichever comes first. Any assignments that you complete but do not submit within two days of the due date must be given directly to your TA (e.g. by e-mail) before these deadlines expire. Please send all questions regarding late submission of homework assignments to your TA rather than to Professor Shinnerl.

    Configuring and Formatting Programming Assignments

    Before you begin coding, you must configure the Visual Studio integrated development environment (IDE) in a certain way. Follow the instructions given online.

    To receive full credit for your work, you must follow the Programming Project Requirements. Please follow the link and read this handout carefully before you begin.

    If you regularly attend a discussion section other than the one in which you are enrolled, you should list both of these sections on your assignments and exams and specify which is which. If possible, you should attend the discussion section in which you are enrolled. If you can't, then you may attend any other discussion section that has room for you.

    Grading of Homework

    Graded programming projects are returned to you by your TA in discussion section about one week after their due dates. Homework grades will be based both on the program's operation (50--80%) and on its adherence to the principles of good style and structured programming discussed in lecture and the text (20--50%). Blocks of code should be separated by explanatory comments. Partial credit will be given to programs that are substantially correct. Programs which do not compile cannot be run and will receive at most half credit. Programs which compile but do not do anything sensible when they are run will also receive at most half credit. As some of the grading process will be automated, it is imperative that your program follow the specifications in the assignment exactly. In particular, make sure data items are inputted and outputted in the proper sequence and format. Failure to comply with the assignment specifications may result in both substantial penalty and significant time loss as you go through the regrade process.

    Because exceptional circumstances like illness or accidents sometimes arise, and because grading mistakes are sometimes made, your lowest program score of the quarter will be dropped. However, this courtesy does not excuse you from completing any assignments. You must complete and submit every assignment by within the final submission deadlines if you wish to pass the course.

    Please do not ask for permission to submit homework late without penalty unless the circumstances are particularly extreme, such as severe and prolonged illness with documentation. If for any reason you are unable to complete more than two programming assignments on time, you should drop the course.

    Homework Regrades

    If you believe an error was made in the grading of your program, you may submit a written request for regrading by e-mail to your TA. These requests must be submitted no more than a week after the graded project is made available to you to be picked up. Check with your TA, and, if the regrade has not been resolved after 2 weeks from the time you request it, inform Professor Shinnerl. No requests for regrades will be considered unless they meet these deadlines. It is your responsibility to verify that the request has been processed on time. Be forewarned that the whole piece of work will be regraded, so the grade may go down rather than up. Pick up graded work from your TA.

    Software Platform and Working at Home

    The compiler used for CS 31 is currently Microsoft Visual Studio .NET running on Microsoft Windows XP, as installed in the SEAS Labs. You are encouraged to work at home on whatever platform you normally use, and as a registered CS 31 student you may obtain a free copy of Visual Studio from Boelter Hall 2567 (Mon.--Fri 9--4:30) for your own personal academic use. There are subtle differences between different compilers and even between different versions of the same brand of compiler running on the same or on different operating systems. If your platform at home is at all different from the one in the SEAS Labs, you should play it safe and test your programs in the SEAS Labs before submitting them for grading.

    Visit the SEASnet Web pages to learn how to activate your seasnet account. Human assistance is available Monday--Friday from 8--4:30PM at the SEASNET Help desk in 2684 Boelter Hall.

    Academic Honesty Policy

    You are both allowed and encouraged to discuss general algorithms and approaches to programming problems with your classmates. But these discussions must remain at a high level and not involve actual C++ statements being exchanged. In particular, THE CODE YOU SUBMIT AS SOLUTIONS TO PROGRAMMING ASSIGNMENTS MUST BE YOUR OWN INDEPENDENT WORK. DO NOT SHARE CODE. Do not use any code other than that which you write yourself or which is posted publicly on the course web pages. Any algorithm, code, or idea that you adapt from the course texts or any other text must be explicitly attributed to that source in your documentation.

    Please read the additional academic integrity guidelines posted separately. They are part of this policy.

    Be aware that any detected activity bordering on infringement of these academic honesty guidelines will be forwarded to the Dean of Students for full investigation. The penalties may be severe. In several recent cases, students have been suspended and have had the incident permanently recorded. If you witness any cheating by classmates, please report it to Professor Shinnerl as soon as possible.

    Before your programming projects will be graded, you must read sign and submit the hardcopy Academic Honesty Pledge distributed in lecture the first day of class. The pledge simply states that you understand the policy expressed here and agree to follow it.


    Unauthorized copying of any proprietary commercial software is a crime and is therefore strictly prohibited. Don't do it . Any evidence of such copying will be reported at once to the Dean of Students and may result in disciplinary action. If you witness any such copying, report it at once.

    Subject Matter and References

    We will cover most material in the course text by Walter Savitch. On exams, you will be expected to understand everything covered in lecture or discussion section. You will not be held responsible for material in the text that is covered neither in lecture nor in discussion.

    You are encouraged to consult the references listed above and placed on reserve at Powell library.

    Lectures, Discussion Sections, and Notes

    Regular attendance at lecture and discussion section is strongly recommended.

    You will learn best if you use all the sources of instruction available to you. Participating actively in lectures and TA-led sections is especially important. This means nodding your head once in a while when you understand, and shaking it when you don't. Pertinent questions help everyone. Please ask them, and please pay attention when others ask them. If you can't hear the question, ask for it to be repeated. It is ok to interrupt if you do it politely and discreetly. It is also ok to whisper to your neighbor, if you are trying to clarify a point being made by the speaker. Talking in lecture for any other reason is distracting, inconsiderate of other students, and inappropriate. Please let Professor Shinnerl know if someone else's conversation is distracting you.

    Please refrain from any activity in lecture that might be disruptive to the learning process; for example, talking, eating and drinking, reading, or leaving early from the center of the room. If special circumstances require you to leave early, plan ahead and sit near the exit. Thank you.

    Taking notes is a good way to help yourself stay focused, but it is probably best to take them selectively. As all programming examples covered in lecture will be made available to you in the online handouts (see "Electronic Resources" above), copying down the code of each example is unnecessary. It is far more important to understand the purpose and syntax of each program presented.

    If possible, you should attend the discussion section in which you are enrolled. If you can't, then you may attend any other discussion section that has room for you, but list both and indicate which is which on all your homework and exams.

    Office Hours and E-mail

    Professor Shinnerl and the TA will all hold office hours at various regularly scheduled times throughout the week. Most of these will be held in regular offices in Boelter Hall (BH). but some may be held in the SEAS Labs. Attending office hours now and then with your specific course-related questions is a great way to accelerate learning. Be advised, however, that office hours tend to be rather crowded at peak times, like the day before a tough homework assignment is due, or the day before an exam. Preparing your questions in advance helps everyone. At other times office hours are often empty, and you can receive relatively detailed one-to-one help.

    Virtual Office Hours

    Please do not send questions through the campus "virtual office hours" system. Instead, e-mail them directly to a TA or to Professor Shinnerl. This ensures a more prompt response and facilitates construction of the FAQ files.

    Electronic Mail

    You are encouraged to send questions, comments, and requests via e-mail. Professor Shinnerl and the TAs usually check their E-mailboxes several times a day for messages. Keeping your message clear and concise greatly increases the chances of a prompt response. Requests for help with homework projects should usually be sent to your TA rather than to Prof. Shinnerl.

    Do not send your entire program's source code for help with debugging. To receive debugging help, you must do your part by narrowing the error down to at most 5 or 10 lines of code. Longer fragments received by e-mail are unlikely to be read. If you cannot narrow the error down, try bringing a printout of your code and a flowchart or other design diagram to office hours.

    When you e-mail Prof. Shinnerl, please specify your discussion section and TA; your message may be forwarded to him or her on busier days.