Instructor Dr. Teofilo F. Gonzalez Office: 2119 Harold Frank Hall
Phone: 893-3849
Office hours: W: 1:00 - 2:00 pm and F 2:00 - 3:00 pm
E-mail: teo@cs.ucsb.edu
Teaching Assistants
Harry Presman
Office: Phelps 1409c and/or 1413B (it is the same room) Phone (until 10/30/2009): 893 - 8588 Office hours: W: 11:00am - Noon, Th: 11:00am - Noon. TBA
E-mail: hpresman@cs.ucsb.edu
Rone Kwei Lim
Office: Phelps 1409c and/or 1413B (it is the same room) Phone (until 10/30/2009): 893 - 8588 Office hours: M: 3:00 pm - 4:00 pm and T: 4:00 pm - 5:00 pm
E-mail: rklim13793@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.
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 Unix Tutorial Unix Tutorial Unix Tutorial C Tutorial C Tutorial C Tutorial 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