Introduction to Programming in C is a general introduction to
computing and programming in the C language. The course serves as an
introduction to some of the core principles in computer science while
developing proficiency with C. This course is rooted in learning C
programming in a UNIX environment while simultaneously developing
portable programming skills and related topics in Computer Science.
Course Materials
For this course, you will need both a C reference book as well as a
more broad computer science text. If you already have experience
programming, you might be able to skip the computer science text and
obtain the reference book only.
I am requiring the C reference book below and making the text
optional. However, if you are not familiar with programming, you will
want more than one book. I have recommended one textbook book below, but you
might want to look at both below before making a purchase. In general,
reactions to programming textbooks vary wildly from one reader to the
next. I will post readings in all books listed here,
although you technically only need the C reference book.
Note that Barnes and Noble offers same day delivery for
the cost of ground shipping to Manhattan residents. Please email me if
you would like to ship your books to the Columbia Department of
Computer Science.
Required C Reference:
The C Programming Language
Brian W. Kernighan and Dennis Ritchie
Second Edition, 1989. ISBN: 0131103628 Barnes
And Noble, Amazon.com
Optional Programming Textbooks (Obtain one of the following):
First Option (Recommended): Computer Science: A Structured Approach Using C
Behrouz Forouzan, Richard Gilberg
Second Edition, 2001. ISBN: 0534374824 Barnes
And Noble, Amazon.com
Second Option: The Art and Science of C: A Library-Based Introduction to Computer
Science
Eric S. Roberts
First Edition, 1995. ISBN: 0201543222 Barnes
And Noble, Amazon.com
Third Option: C How to Program
Harvy M. Deitel, Paul J. Deitel
Fourth Edition, 2003. ISBN: 0131426443 Barnes
And Noble, Amazon.com
Assignments
Daily Responses or Participation
Given the time frame of the course, it is important to keep up with
the material. Being an active participant during lectures and
demonstrations is one way to do this. However, if you would prefer to
listen only during class, I would ask for a short one-paragraph note
either asking a question or summarizing and connecting concepts
mentioned in class.
I will collect these papers (with your name) any time during class.
In particular, if you have any questions during
the first half of class, writing them down into a reasonably coherent
paragraph and handing it to me during break will allow me to address it during the
second half. These will not be graded -- they are very
informal. Again, active class participation can waive this
requirement.
Homework
There will be 4 programming homework assignments. These are to be
completed alone and will consist of a few programming problems. Please
see the links section for technical information. You can
develop these programs on any platform you like, but you must test
them on the Columbia Cunix machines as this is where they will be
graded. We will walk through the cunix environment in class.
Submission
All homework assignments will be submitted electronically. There is an
automated submission script on CUNIX with detailed submission instructions
Collaboration
All homework is to be completed individually. While I encourage
collaboration among your peers, please do not discuss potential
solutions. Please refer to Columbia's
policy on cheating for more information.
Late Policy
Homework is due by the date and time listed at the top of each assignment.
Everyone begins the course with an account of 3 late days. Each late
day grants you an extra 24 hours to work on the assignment. All late
days are indivisible; you may not use fractions of late days. You may
spend them as you wish with the exception that you may use at most 2
late days on the first assignment. In the interest of posting
solutions quickly, submissions that violate this rule cannot be
accepted. It is always best to turn in your current work for partial
credit than turn in nothing.
Exams
There will be one final exam during class on Wednesday, June 30th. More
details will be posted closer to the middle of the course.
Grading
Grades will be based on:
Responses/Participation (5%)
Homeworks (70%)
Homework 1 (15%)
Homework 2 (15%)
Homework 3 (25%)
Homework 4 (15%)
Final Exam (25%)
Open Door Policy
We would like the course to run smoothly and enjoyably. Feel free to let us know what you find just, good, and interesting about the course. Let us know sooner about the reverse. See us, leave us a note, or send us email.