Home ] [ Syllabus ] Schedule ] Assignments ] Grades ] Links ] FAQ ]


CS 60 - Introduction to C, C++, and Unix (Spring 2005)

Syllabus contents:
  1. General Information
  2. Prerequisites
  3. Course Objectives
  4. Class Attendance
  5. Textbooks
  6. Computing Facilities
  7. Assignments and Grading
  8. Academic Integrity
  9. Students With Disabilities
  10. Course Feedback


General Information

Accounting details

Computer Science 60, 4 Units

Enrollment Codes: 07336 (Wed discussion section), 07328 (Fri discussion section)

Meeting times and locations

Lecture: MWF 9:00-9:50am, South Hall 1431

Wed 4:00-4:50pm, Phelps 3515

Fri 11:00-11:50am, Bldg 387 Room 101 (directly west of the Psychology building - between Psychology and parking lot #3)


Prof. Matthew Turk

Contact info

Office Hours: Mon 10-11am, Wed 2-3pm, or by appointment. Or drop by another time and try your luck.

Teaching Assistants

Ryan Dixon

    rsd @ cs.ucsb.edu

    Office Hours: Tues 10:30-12:30

    Location: CSIL


Arun Qamra

    Email: arun @ cs.ucsb.edu

    Office Hours: Tues 3:00-5:00pm

    Location: Engr I, room 2164


Onur Sakarya

    Email: osakarya @ gmail.com

    Office Hours: Thur 12:30-2:30pm

    Location: Phelps 1413B

Course web site


This will be used extensively.  You must check the course web site regularly for assigned reading and homework, announcements, and any other relevant information.  Normally anything important will be mentioned in class (e.g., "The midterm is next week"), but in case you fell asleep at that moment, the web site may save you.  Lecture notes will be posted to the web site after each lecture, but keep in mind these are only notes - if you only read the lecture notes, you will probably miss important information.


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.

Course discussion site


This is a resource for you - use it for discussion, questions, public comments, etc.  It will be read regularly by the TAs (and semi-regularly by the instructor), but consider it as an unofficial course discussion forum.  To use this, you must sign up for the group at http://lists.cs.ucsb.edu/mailman/listinfo/cs60.



The formal prerequisite is CS20 (Programming Methods).  This implies that you have done a good bit of programming and have studied topics such as data structures, searching and sorting techniques, recursion, and induction. You should know how to write, edit, compile, run, and debug programs in Java. You should be familiar with computers. The purpose of this course is to learn new programming languages and environments, not to start from scratch.


Course Objectives

What is this course about?

From the course catalog: "Syntax and semantics of C and C++. Introduction to basic UNIX utilities and tools. Students complete several small projects that exercise their understanding of the material presented in class."


The programming languages C and C++ are fundamental programming languages, and a solid working knowledge of them is core to understanding many major areas of Computer Science, including Data Structures, Operating Systems, and Databases. UNIX is the default operating system used on most large computer systems. Being able to use the various tools available for program development, as well as proficiency with scripting and shell commands, are basic skills every programmer and developing computer scientist must master. Taken together, this course provides a solid foundation from which to launch the student into upper division coursework.

What you will learn

By the end of the course, you will be able to write, compile, run, and debug non-trivial programs in the C and C++ languages using the Unix/Linux environment. You will understand the basics of preprocessing, compiling, linking, using makefiles, combining multiple source files, and various useful Unix/Linux shell commands. You will also understand the fundamental data types and constructs of C and C++, and know how memory is allocated and managed, how C pointers work, how to do text I/O, how to build various data structures, how to spawn processes, how to handle exceptions, etc. You will understand how C++ is used to implement an object-oriented programming model. By the end of the quarter, you will be prepared to use all these concepts and tools in upper-division Computer Science courses.


Class Attendance

Class attendance is highly recommended:  you are responsible for everything that goes on in class.  "I wasn't there" and "I didn't know" are not valid excuses!  Prepare in advance for class by reading and studying the assigned text, and by making sure you understand the previous lecture. And, of course, by completing the frequent assignments fully and on time.

There will be a short quiz every Wednesday based on the required reading for the past week Bring paper and a pen or pencil.

Weekly one-hour discussion sections, led by the TAs, will focus on (1) presenting new core material; (2) presenting supplementary material (such as practical examples) to the lectures; and (3) answering questions (about lecture topics, homework problems, programming issues, etc.). It is expected that students attend these sessions - they are not intended to be "optional" sessions. You are responsible for what goes on during the discussion session. Students are encouraged to give the TAs (and, if appropriate, the instructor) feedback regarding particular topics or issues they would like to have discussed during this time.



These books are required:

There are many, many useful sources on these topics. See the Links page for some of them. (See Google or MSN Search for many more!)


Computing Facilities

You may use the CSIL (Computer Science Instructional Lab, in Engr. I, 1138) computers, or any other Unix/Linux machine you prefer as long as it supports the required software. If you need a computer account for this course, see Sandy Jacobs (sandyj@cs.ucsb.edu) in the Computer Science office (Engr I, Room 2106).


Assignments and Grading

It is our conviction that you learn programming by doing, not just by reading about it. Hence, the grades for this class are heavily dependent on your performance on programming assignments, and we have structured the class such that you will be programming throughout the quarter, and not just during a few 'hot spot' days before a large assignment is due. There will be two types of programming assignments, simple 'exercises', normally due next class, and a little more elaborate 'projects', for which you will have between 1 and 3 weeks. All programming assignments need to run on the Linux computers in the CSIL laboratory. You may use your own Unix development environment to come up with your solutions, but it is your responsibility to port the solution to CSIL computers and test, document, and submit it from there.

Grades will be based on homework assignments, projects, weekly quizzes, and a final exam:

30% Homework assignments
35% Projects
15% Quizzes
20% Final exam (Wednesday, June 8, 8-11am)

For the weekly Wednesday quizzes, the lowest two scores for each student will be dropped.

All assignments must be submitted (online) by midnight on the scheduled due date (meaning, by one second after 11:59:59pm on the due date). Late assignments will be penalized 10% per hour (yes, per hour). For example, if you turn it in between 00:01 (one minute after midnight) and 1:00am, you get 10% off. Between 1:01am and 2:00am, you get 20% off. After 9:00am you will receive no credit.

You may discuss homework assignments with classmates on a general level.  However, you may not share answers/code or collaborate on solutions unless otherwise directed to do so. All work turned in must be completely your own, including programming assignments. (See the Policy on Academic Integrity, below.) There may be exceptions to this early in the quarter, but only if explicitly announced (in class on on the Assignments page).

Any grading appeals must be made within 7 days of the grade being made available.

There will be no makeup quizzes or exams.


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):

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

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.)


Students with Disabilities

If you are a student with a disability and would like to discuss special academic accommodations, please contact the instructor. In addition, students with temporary or permanent disabilities are referred to the Disabled Students Program (DSP) at UCSB. DSP will arrange for special services when appropriate (e.g., facilitation of access, note takers, readers, sign language interpreters).  Please note that it is the student's responsibility to communicate his or her special needs to the instructor, along with a letter of verification from DSP.  


Course Feedback

Please feel welcome to give feedback to the instructor and/or TAs regarding the course material, pace, assignments... whatever you wish.  Don't just stew about it - let us know!


Cell phone policy - If it rings, I get to answer it. (Better yet, please turn it off.)

Back to home