CS 60 (Spring 2010)
C, C++ and UNIX

Professor Teofilo F. Gonzalez
Department of Computer Science
University of California, Santa Barbara

  • Prerequisites
  • CS 20.

  • E-mail, CSIL Computer Account, and CSIL Access
  • I will use umail.ucsb.edu account to e-mail you information about the course and your grades. You will need a CSIL computer account (or CSIL Access for non-CS majors with COE accounts). For ALL new students without an account, they should try to create one here: [ https://accounts.engr.ucsb.edu/create ]. For continuing Engineering students, their accounts had CSIL access "automagically" added, so they can login to CSIL workstations now. Miscellaneous: For students without an UCSBNetID (sometimes Extension and Open enrollment students), give me you name, an email address, and the the type of students you are (extension, open enrollment, etc.). Then I will use the page [ https://accounts.engr.ucsb.edu/invites ] to start the process of opening your account. This link,
    CSIL Tech. Support and Information,

    has information about remote access, tech support, etc.

    The COE Computer Accounts (which handles the CSIL accounts) periodically cancels accounts. If this happens to you go to the CS Office to get your account reinstated. If the CS office is closed send me e-mail (with copy to the TAs and support@cs.ucsb.edu) indicating that this has happened and we will try to get it reinstated as soon as possible. Sometimes the COE sends you e-mail to your CS account warning you that if you do not change certain feature (password, disk space, etc.) your account will be closed. So you need to READ your CS account mail at least once every day. You may do this with the command "pine" or you may create a .forward file that will automatically forward your CS mail to your umail.ucsb.edu (or other) account or when you opened your account you set the forwarding address so your mail will be forwarded to that account. More information about mail and .forward files appears in CSIL Tech. Support and Information.

  • Email
  • Emailing to cs60@cs.ucsb.edu forwards to both the instructor and the TAs. Use this to ask questions or send comments. Direct email to the instructor is fine, but in general the "cs60" alias is preferred.

  • Assignments
  • There will be 8 programming assignments. Instructions on how to turn in your assignments will be given later. The programming assignments will be due on (Friday) June 26th, (Friday) July 3rd, (Friday) July 10th, (Friday) July 17th, (Friday) July 24th, and (Thursday) July 30th. The code for the Programming Assignment must compile and execute in the Linux PCs in the CSIL Lab. The code must be in gcc (GNU C) or g++ (GNU C++). JAVA IS NOT ALLOWED. JAVA IS NOT ALLOWED. JAVA IS NOT ALLOWED. In the past, students have used C or C++ on their PCs, and then transfer their code to the Linux Unix PCs. This process is acceptable. However, we must warn you that C and C++ compilers are different, and your code might work on your PC, but not in the Linux PCs. So if you follow this approach, make sure that you leave some time to debug your code on the Linux PCs, even if the program works correctly on your PC. We can only run your code on the Linux PCs in CSIL. We can only run your code on the Linux PCs in CSIL. We can only run your code on the Linux PCs in CSIL. All the assignments will have a due date and a deadline. If you hand them in after the due date, then 8% of the total points the FULL ASSIGNMENT is worth (not just the part that is late) will be automatically deducted each day (rounded UP) the assignment (or part of the assignment) was late (excluding Saturdays, Sundays and University Holidays). Assignments will not be accepted after their deadline.

  • Exams
  • There will be six quizzes, two mid-term exams and a final exam. The quizzes will be held (during the lecture normally at the end of class) on (Tuesday) April 6th, (Tuesday) April 13th, (Tuesday) April 20th, (Tuesday) May 4th, (Tuesday) May 11th, and (Tuesday) May 25th. The mid-terms exams will be held during part of the lecture period on (Thursday) April 27th and (Tuesday May 18th). The final exam will be on Tuesday June 8th (4:00 pm - 7:00 pm). All of the exams and quizzes are closed book and notes. However you may be allowed to bring one 8.5" by 11" page (you may write on both sides) with notes to the midterm and final. The exams will be based on all the material covered up to the day of the exam in the lectures and discussion sessions. The quiz will cover the material since the previous quiz or exam, except the first one that will cover all material discussed so far. There will be no makeup exams. There will be no makeup exams. There will be no makeup exams. In the past 35 years there have been very few exceptions to this rule. There will be no make up quizzes, but we will count only the the five best quiz grades.

    The ACM Tutoring service will be available for all lower division courses (including our course) every Monday night from 6 to 8pm in HFH-1152.

    Campus Learning Assistance Service: 893-3269. CLAS helps students increase their mastery of course material through course-specific tutoring and academic skills development. Check out their tutorial groups and drop-in tutoring schedules posted on their web site: www.clas.ucsb.edu. Sign up for services at their main office, Building 477 9-5 daily.

    Counseling & Career Services: (893-4411, www.counseling.ucsb.edu) offers counseling for personal & career concerns, self-help information and connections to off-campus mental health resources.

    Disabled Students Program: 893-2668; www.sa.ucsb.edu/dsp DSP provides academic support services to eligible students with temporary and permanent disabilities. Please inform (Prof. Gonzalez) if you require special classroom accommodations due to a disability. You must register with DSP prior to receiving these accommodations.

  • Grading Policy
  • The weights for the assignments and exams are given below.

  • Relevance to Program
  • Assignment/Exam Number Points
    Programming Projects 8 400 (about 50 each)
    Quizzes (Best) 5 (grades) 150 (about 30 each)
    Mid-Term Exams 2 200 (100 each)
    Final Exam 1 250

    To make the programming projects count a little bit more, we always include in the final exam a couple of questions from the programming projects.

    There will be no incomplete grades, there will be no incomplete grades, there will be no incomplete grades, and there will be no incomplete grades. The Statue of Limitations for any grading is 7 days or the day of the final exam (whichever comes first). I.e., if there is an error in the grading, it must be settled within 7 days of the time the assignment or exam was returned and before the final exam. If you have any questions about the grading, see the TA. If you cannot reach an agreement, please see the instructor. Only letter grades will be given, i.e., A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, and F.

    The grades are normally computed as follows: Normally, students with the average number of total points receive a C+ or B-. It will in the B- range (or slightly higher) if the students are active participants in class and almost all of the students show up for class during the whole quarter, but in the C+ range (or lower) if the students are not active participants. I expect the average points for the programming homework to be very high (about 90%). The exams are complex, it is nearly impossible to Ace them. But note that they are hard for everybody. This means that may earn an A+ even if your scores in the exams, quizzes and mid-terms are not perfect!

    All the written assignments, exams and the programming projects must be done INDEPENDENTLY. Why work independently? Because quite of bit of the learning process for this course is learning by doing and the skills you will develop will not only help you solve problems in this course, but they will also help you solve problems in the future. To motivate you into working independently we will recycle up to 40 points that you loose in the programming assignments and assign those points to the final exam. I.e., If the total number of points that you earned in the programming assignments is 366, then the minimum of (400 - 366) and 40 points will be assigned to the final exam. In this case your final exam will be worth 34 extra points. So, if in the final exam you earn 70% of the 240 points the final is worth, you will recover 70% of the points lost in the written homework, which is 0.70 * 34 = 27.3. If the above rule does not motivate you to work independently and we can prove that two or more students solved together an assignment or part of an assignment, the case will be reported to the appropriate administration officials. You are allowed to study in groups and you may discuss the homework problems with other people in order to fully understand the problems you are being asked to solve in the homework; however, you may not SOLVE the assignment or any part of the assignment or the exams in groups, and you may not ask anyone how to solve any particular problem or subproblem in a homework assignments. If we can prove that two or more students solved together an assignment (exam or project) or part of an assignment (exam or project), the case will be reported to the appropriate administration officials.

    Policy on Academic Integrity

    The university, the department, and this instructor all take the issue of academic integrity very seriously.  A university requires an atmosphere of mutual trust and respect.  While collaboration is an integral part of many scholarly activities, it is not always appropriate in a course, and it is never appropriate unless (1) explicitly allowed and (2) due credit is given to all participants in the collaboration.  This goes for both ideas and programming or other work.

    The university labels each of the following activities as academic misconduct:

    The following are examples of violations of academic conduct (this list is not inclusive):

    • Working together (that is, actually writing the computer code) with another student.
    • Showing any portion of your code (no matter how small) to another student.
    • Viewing any portion (no matter how small) of the code of another student.
    • Copying any portion, no matter how small, of another student's code for use in your program.
    • Modifying another student's work to make it "your own."
    • Sharing solutions in the form of pseudocode.
    • Asking a fellow student to help you find a bug in your program, or to help you write any portion of your program, no matter how small.
    • Using the Internet or Library to seek explicit solutions to programming projects.
    • Knowingly allowing any of the above to take place.

    The following is a description of allowed forms of seeking help with a programming assignment (this list is not inclusive):

    • Discussing your project with your TA, professor, a CS tutor, or the email help-desk.
    • Discussing the general ideas of solving the project, or relevant lecture and textbook materials, with a friend or fellow student.
    • Using the Internet or Library to read about the general principles that apply in the project.

    For some views on academic integrity at UCSB, please see:

    Any act of cheating will result in an "F" for the course and a report to the associate dean of students. This includes any sharing of computer code.

    Summary: Academic integrity is absolutely required - dishonesty (cheating, plagiarism, etc.) benefits no one and will not be tolerated! If you are not sure whether or not something is appropriate, ask the instructor or a TA beforehand. (Don't try the "I didn't know" route.)

     

  • Reference Books
  • [So] Oualline, S., "Practical C++ Programming," 2nd Edition, O'Reilly. (Required Text)

  • [LO] Loukides, M., and Oram, A., "Programming with GNU Software," O'Reilly. (Required Text)

  • [Si] Siever, E., Linux in a Nutshell," O'Reilly. (Required Text)

  • [KR] Kernigham, B. W. and D. Ritchie, "The C Programming Language," Second Edition, Prentice Hall, 1988. (Required Text)

  • [GA] Glass, G. and Ables, K., "UNIX For Programmers and Users," Second Edition, Prentice Hall, 1999.

  • [P] Prata, S. "C++ Premier Plus, Third Edition," The Waite Group, 1998.

  • [St] Stroustrup, B., "The C++ Programming Language, 2nd Edition," Addison-Wesley, Menlo Park, CA (1991). (QA76 / 73 / C15 S79)

  • [CD] Cohoon, J. P. and Davidson, J. W., "C++ Program Design," McGraw-Hill, 1999.
  • The Course Schedule appears here