An Introduction to C

Introduction

The aim of this course is to provide students with a generous study of the C programming language, while nurturing and developing logical thought. To achieve this, I strive for a pedagogical balance of rigorous study and paced learning. At the conclusion of the course, students will possess a heightened understanding of computer programming as it applies to C, while grasping logical concepts relevant to other programming languages, as well.

Crucial concepts such as arrays, memory management, structs, preprocessor directives, compiler translation phases, side effects and sequence points, and pointers will be covered in exhaustive detail. The topics of primitives, selection structures, and looping constructs, to name a few, will receive less scrutiny. The former group of topics requires more discussion and analysis, while the latter group will be reinforced through textbook study.

Prerequisite

Other than handling basic computer tasks, such as navigating the Internet, using email, and installing/uninstalling software on a computer, no prior programming experience is required.

Topics Covered

Readings

The required textbook, from which the semester's readings (listed below) are assigned:

[Cover of C How To Program by Deitel & Deitel]
Title: C How To Program
Edition: Fourth Edition
Author: Deitel & Deitel
ISBN: 0–13–142644–3
Chapter 1: Introduction to Computers, the Internet and the World Wide Web
pages 8 — 10 (§ 1.8, 1.9)
pages 13 — 15 (§ 1.14)
Chapter 2: Introduction to C Programming
pages 26 — 44 (§ 2.1 — 2.6)
Chapter 3: Structured Program Development in C
pages 57 — 82 (§ 3.1 — 3.12)
Chapter 4: Program Control
pages 100 — 126 (§ 4.1 — 4.12)
Chapter 5: C Functions
pages 143 — 198 (§ 5.1 — 5.15)
Chapter 6: Arrays
pages 199 — 240 (§ 6.1 — 6.9)
Chapter 7: Pointers
pages 258 — 297 (§ 7.1 — 7.12)
Chapter 10: C Structures, Unions, Bit Manipulations and Enumerations
pages 393 — 418 (§ 10.1 — 10.11)

Assignments

There will be three homework assignments spread out by about four weeks each. You are welcome to discuss them with classmates, as a discourse is always helpful, but not to share source code.

Compiling Environment

To an experienced programmer, the Integrated Development Environment, or IDE, can be helpful in writing and building programs. However, in the hands of an inexperienced programmer, an IDE typically displays a high learning curve, proves to be confusing, and distracts from learning how to program. Thus, gcc, a C compiler whose primary variant runs in a command–line interface and is available for Windows®, Mac, and Linux, will be the compiler used for in–class examples and assignments. No IDE will be supported.

In terms of editors, you're welcome to use any program that renders basic text. I can provide support if you use Emacs, which is available for the three major operating systems.

Announcements

7 February 2011:
Although this Friday is a holiday, we will still be meeting at our regular time.
4 February 2011:
Welcome to the class. Any important announcements will be made here and also on the private Google group for this course.

Schedule

Homework

Homework 1: due Thursday, 10 March 2011, by 11:59 PM
Homework 2: due Thursday, 7 April 2011, by 11:59 PM
Homework 3: due Thursday, 28 April 2011, by 11:59 PM

All work is due by 11:59 PM on their respective days. Click the following link for directions on how to submit your homework: HW submission instructions.

Resources

Software

Tutorials

Papers

Books

For those of you looking for a deeper understanding of C, the following is a list of excellent C reference texts.

Title Author Edition ISBN Book Cover
C Programming FAQs Steve Summit First 0131103628 [Cover of C Programming FAQs]
C in a Nutshell Peter Prinz & Tony Crawford Second 0201845199 [Cover of C In A Nutshell]
C Pocket Reference Peter Prinz & Ulla Kirch–Prinz Third 0596004362 [Cover of C Pocket Reference]

Videos

[Cover of Abelson's and Sussman's Structure and Interpretation of Computer Programs]

The 1986 SICP video lectures by MIT's Hal Abelson and Gerald Jay Sussman are fantastic resources in helping to understand logic in programming languages. Although Professors Abelson and Sussman teach LISP in these lectures, the themes are universal. The lectures' accompanying book, The Structure and Interpretation of Computer Programs, AKA The Wizard Book, is available in HTML format for free.

SICP videos: http://groups.csail.mit.edu/mac/classes/6.001/abelson–sussman–lectures/
SICP online book: http://mitpress.mit.edu/sicp/full–text/book/book.html

Contact

Email

r v a n e g a s a t h u n t e r d o t c u n y e d u

[Valid HTML 4.01!] [Valid CSS 2.1!] [wai – wcag compliant]

Last modified: