Instructor Dr. Teofilo F. Gonzalez Office: 2119 Engineering I
Phone: 893-3849
Office hours: M 2:00 - 3:00 pm, W 3:00 - 4:00 pm and F 1:00 - 2:00 pm
E-mail: teo@cs.ucsb.edu
Teaching Assistants
Patricio Jara-Ettinger
Office: CSIL (during office hours)
Office hours: Tu 10:30 am - Noon and Th 2:00 - 3:30 pm.
E-mail: pjara@cs.ucsb.edu
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.
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.
UNIX account creation should be fairly automatic. For those students needing accounts, they should go to: [ https://accounts.engr.ucsb.edu/create ] If by the latest of Tuesday or 24 hours after opening an account you do not have access to the CSIL machines, please send e-mail to support@cs.ucsb.edu and state: (1) you real name, (2) UNIX account name (the name used to open the account) and (3) add that you want CSIL access for CS 60. Add September 30, 2009 as your Expected date of graduation date.
Course Rules and schedule (also available from the CS 60 WEB page (this page) www.cs.ucsb.edu/~teo/cs60.rules.html) PENDING READING ASSIGNMENT: None so far. Here are some tutorials available in the WEB. Note that the C, C++ and Unix they discuss might not be exactly the GNU versions and Linux C++ Tutorial C++ Tutorial C++ Tutorial C++ Reference Library Unix Tutorial Unix Tutorial Unix Tutorial C Tutorial C Tutorial C Tutorial (very slow, but with animation) C Tutorial GNU compiling Cpp4u
Introduction
C
Introduction, History and Compilation Process
Basic Data Types and Operators
Derived Types (arrays, strings, new, delete, pointers, etc.)
Loops and Relational Expressions
Branching and Logical Operators
Functions
Pointers and Storage Management
System Calls
C++
Objects and Classes
More on Classes
Class Inheritance
Reuse Code (Templates)
Friends and Exceptions
Standard Template Library
File I/O
UNIX
UNIX Philosophy and History
Basic Commands
UNIX Shells (C Shell + others)
Some utilities (find, awk, ln, spell, Perl)
C Programming Tools (make, prof, dbx)
File and Process Management