Syllabus | CourseWorks | Bulletin Board | Grading | Submissions

CS W3101 – Section 001

Programming Languages (C)

Spring 2005, Mon 11am-1pm, 253 Engineering Terrace


Last updated on 3/08/2005.

Announcements

3/08/05 - HW 5 solution posted.

3/01/05 - HW 4 solution posted.

2/22/05 - Lecture 5 posted.

2/20/05 - HW 5 and Final Exam Info posted.

2/18/05 - HW 3 solution posted.

2/16/05 - Lecture 4 posted.

2/13/05 - HW 2 solution and HW 4 posted.

2/09/05 - HW 3 posted.

2/08/05 - Lecture 3 posted.

2/06/05 - HW 1 solution posted.

1/31/05 - HW 2 and Lecture 2 posted.

1/30/05 - Added link to ASCII table.

1/26/05 - Lecture 1 posted.

1/24/05 - HW 1 posted.

1/24/05 - Welcome to Programming Languages (C)!! The class bulletin board has been setup in CourseWorks.  All registered students should have access.  You can login using your UNI id (CUNIX id).  Use it to post general questions about the class, C, or the assignments.

An anonymous feedback form has also been setup in CourseWorks.  You can use this to let me know how I'm doing or suggest improvements.  Go to "Programming Languages (C)", "Test&Quizzes", and click on "Class Feedback".

Overview

By the end of the course, students will know how to write a significant program in C. Students will also learn the elements of good C programming style. The course is a good precursor to more advanced courses in system-level programming (Operating Systems) and object-oriented programming (C++, Java, C#). Students will learn

The course prerequisite is that students must be fluent in at least one programming language.

Every week (except the first) there will be a programming assignment due. You are responsible for all material covered in class and all the assigned reading, including any changes or additions announced in class.

Instructor

Marc Eaddy (homepage)
me133@columbia.edu
IM: marceaddynyc, AIM

Office Hours: Mondays & Thursdays, 1pm-2pm, and by appointment
Location: 603 CEPSR

Textbook

Required

Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, Second Edition, Prentice Hall, Englewood Cliffs, NJ, 1988.  ISBN 0-13-110362-8.  (Amazon) (errata) (click here and scroll down to see the funny cover art)

Optional

The Kernighan/Ritchie book is a great but minimalist reference for the C language.  If you want a more verbose textbook-like introduction complete with examples, tips, hints, etc. I recommend the following:


Tomasz Müldner, C for Java Programmers, Addison Wesley Longman, 2000.  ISBN 0-201-70279-7.  (Amazon) (errata)

The C Programming Language and C for Java Programmers should be available on Fri, 1/28, at Morningside Bookshop (Broadway b/w 113th and 114th St).

Syllabus

K&R = The C Programming Language book, aka "The C bible"
 
# Date Lecture Reading HW Assigned
1 Mon, Jan 24 Introduction, types K&R Chap. 1, 2 HW 1 (soln)
2 Mon, Jan 31 Operators, control flow, arrays K&R Chap. 3 HW 2 (soln)
3 Mon, Feb 7 QUIZ; Functions, modules, macros K&R Chap. 4 HW 3 (soln)
4 Mon, Feb 14 Preprocessor cont'd, pointers K&R Chaps. 5 & 7 HW 4 (soln)
5 Mon, Feb 21 Pointers, structures K&R Chap  6 HW 5 (soln)
6 Mon, Feb 28 EXAM (in class) K&R Chap. 8

(Note: Schedule is subject to change.)

Grading

The final grade will be based on:

    The best four homework assignments - 70%
    Quiz – 5%
    Exam –25%

Homework Submission

All assignments will be submitted electronically using a submission program called "submit". Please do not email me your submissions.  The "submit" program can be used from an AcIS/CUNIX (cunix.cc.columbia.edu) account. You should make sure your programs run on CUNIX, in addition to whatever machine you actually develop on.

See the individual assignments for submission information.

Troubleshooting

  1. Make sure you specify the correct argument to the submit script

    $ /opt/ACISsubmit/bin/submit cs3101-1
     
  2. Make sure you have enough free space on your account.  To find out how much free space you have run

    $ quota -v

Lateness Policy

Assignments are given every Monday and are due on the following Monday at MIDNIGHT.  Late assignments will be marked down according to the following policy:

Turned in before MIDNIGHT on:

Monday Full Credit
Tuesday -10% penalty
Wednesday -50% penalty

Assignments turned in after Wednesday will receive no credit.

Cheating Policy

Collaboration on any assignment is, as in all Columbia courses, strictly prohibited. Submitted assignments are automatically checked for similarities. Infractions will be given a zero for the entire assignment and the student(s) involved will be referred to the Deans. Please refer to Columbia University's Official Policy on cheating.

Please note that it is also not allowed to submit answers or homework solutions found online or from any other source, even if you cite the source. Feel free to ask me if you are unsure about something.

Computing Environment

All programming assignments will be submitted electronically (see Homework Submission above). Assignments will be graded using an automated test procedure. Although you are free to write the assignments in whichever text editor or development environment you want, you should make sure it compiles and runs on the CUNIX machines using the gcc compiler. I recommend you test your programs using the CUNIX machines to avoid any surprises. You can access these machines on-campus or off-campus via telnet/secure shell client.

AcIS Internet Software

I strongly recommend that you use a C development environment that includes an integrated debugger (Microsoft Visual Studio, Borland, Macintosh Programmer's Workshop, Watcom, Symantec, etc.).  This is the easiest way to find and fix bugs.  Otherwise you'll have to result to using gdb, a cryptic command-line debugger for Unix, or using low-tech "printf debugging".  No matter which development environment you use make sure you compile and test using gcc on the CUNIX machines as this is where the testing will be done.

Here is some additional info about developing off-campus.

EFNet Recommended C++ Compilers
Lint - static C program verifier/checker

Links

ASCII Table
C FAQ
C Questions
Quick Guide to Unix
Quick Guide to Emacs
History of the C Language
10 Commandments for C programmer
The Top 10 Ways to get screwed by the C programming language
MSDN C/C++ Languages Reference
How to write a Makefile

Other courses and notes:
    Aya Aner's C Notes
    Tutorial on pointers and arrays in C

Just plain silly:
    errno
    errors.funny


Copyright © 2004,2005 Marc Eaddy Updated 3/08/2005 All rights reserved.