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 Discussion:
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
Office Hours: Mon 10-11am, Wed 2-3pm, or by appointment. Or drop by another time and try your luck.
rsd @ cs.ucsb.edu
Office Hours: Tues 10:30-12:30
Email: arun @ cs.ucsb.edu
Office Hours: Tues 3:00-5:00pm
Location: Engr I, room 2164
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.
email@example.com 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.
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 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:
- The C Programming Language, 2nd Edition, Brian W. Kernighan and Dennis M. Ritchie
- Practical C++ Programming, 2nd Edition, Steve Oualline
- Programming with GNU Software, Mike Loukides and Andy Oram
- Linux in a Nutshell, Ellen Siever
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!)
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 (firstname.lastname@example.org) in the Computer Science office (Engr I, Room 2106).
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
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.
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:
Cheating. Whether on exams or homework assignments, this includes copying the work of other students, and asking or allowing another student to do your work.
Plagiarism. Also known as "academic theft," it refers to the use of another's ideas or words (or source code) without proper attribution or credit.
Collusion. "Any student who knowingly or intentionally helps another student to perform any of the above acts of cheating or plagiarism is subject to discipline for academic dishonesty. There is no distinction between those who cheat and plagiarize and those who willingly allow it to occur."
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.)
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.
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