Introduction to C programming
Welcome to Introduction to Programming in C,
Contents |
[edit] Goals
The goal of this course is to teach the basics of computer programming and software engineering, as well as the C programming language using free and open source tools available to users on all operating systems.
[edit] Prerequisites
You must be capable of using a computer (edit files in a text editor and know how to run a program) There's no need to understand compilers yet, that will be covered in the first lesson.
No previous knowledge of programming is required.
[edit] Development Timeline
This course is under active development. Readability and comments is finished as of 10/29/05. I hope to spend more time on this, and get up to the first homework within 2-3 weeks.
[edit] Enrollment
The teacher requests that you post your user name and where in the course you are on the Enrollment Page. This is so that he or she can judge how many people are taking the course, and how many office hours he needs to set and assignments he may need to grade. And so he can cry for help if it looks swamped. If you can, please keep your progress up to date.
[edit] Feedback
This content is very much a work in progress. Feedback on the content and how easily understood it is is greatly appreciated. Please leave those comments on the Talk page, Problems Page, or Forum.
[edit] Organization
Lessons in this course will come as a combination of reading from the C wikibook and lectures found here. The book will spend most of its time teaching the syntax of the language. The point of the lecture will be to explain the concepts behind the syntax and explain how to use them to write good programs.
In addition to lectures and readings, there are quizzes, homework, analysis, and projects. Quizzes are short series of questions and answers that you can use to check your knowledge. Homework is longer and generally involves a program to be written. Analysis sections actually take a small program apart and show you how it works and why it was written that way. Projects are large programming problems where collaborative effort is encouraged.
A lesson is not meant to cover a single lecture from a real world school. It is meant to cover a single topic. As such, some lessons will be significantly longer than others. Don't force yourself to do every lesson in the same amount of time. Relax and take it at a comfortable pace.
[edit] Chat resources
Sometimes static web pages just aren't enough. For more help with the material, we have office hours and our wiki forums. The wiki forums allows you to post a question to us, and we'll answer as we can. Feel free to answer a previous poster if you know the answer.
Office hours are held at <INSERT IRC SERVER AND ROOM HERE> on <INSERT DAY/TIME HERE>. You're welcome to stop in the room and see if people are there at any time, but we only promise to be present at the given hours.
[edit] Lessons
[edit] Lesson 1 - Introduction
Reading: Software needed and Introduction to Programming in UNIXw:Unix
Lecture: Hello World
[edit] Lesson 2 - Variables
Reading: Variables, Simple Math, and C types (this section of the page only)
Lecture: Variables
Quiz: Variables
[edit] Lesson 3 - Boolean logic and flow control
Reading: Flow control Read all of section 1 (on ifs) except the part on bitwise operators. Section 2 will be covered later.
Lecture: Boolean Logic and If
Quiz: Quizes/Boolean Logic
[edit] Lesson 4 - Comments and readability
Reading: C Structure and Style
Lecture: Comments and Readability
[edit] Lesson 5 - Basic IO
Reading: Simple IO
Lecture: BasicIO
[edit] Homework 1- Writing a calculator
Analysis 1: Your first program
Homework 1: Writing a calculator
[edit] Lesson 6- Debugging
[edit] Lesson 7- Loops
Reading: Understanding and Implementing Loops
[edit] Lesson 8- Arrays
[edit] Homework 2
... (breaking up the rest of the class)
[edit] Other sources
Here's some other sources, both plain text and web, that you may find helpful.
- Topic:C
- The C Programming Language - Kernighan and Richie