Introduction. What the course is about. Getting started with C. Readings: KernighanRitchie Chapter 1.
1. Basic overview of the course
- What you will be doing
- Ten weekly assignments
- Write C programs that run on the Zoo
Submit using the submit script (see HowToUseTheComputingFacilities)
- Assignment grade is based primarily on automated testing
Some assignments will also be graded for programming style (see ProgrammingStyleGuidelines). Which assignments are graded for programming style will not be announced in advance, so you should follow the guidelines for all assignments.
- Two exams: closed-book, in class
See CS223/Assignments for schedule
- Ten weekly assignments
- Policies
- No collaboration on assignments
- You can talk to other students about assignments, but you have to wait long enough afterwards to make sure that when you write the code it's your own code.
- We may run similarity testing software to detect collaboration.
- There may be serious consequences if we detect collaboration or plagiarism.
- If we don't detect it, you will still fail CS323 if you don't learn to program in this course.
- Late assignments will be penalized (unless you have a Dean's Excuse).
- Plagiarism---which means using anybody else's work without attribution, including work in the public domain---is absolutely forbidden.
In keeping with Yale regulations, any computer problems that you experience are not permissible excuses for failing to turn assignments in late.
- If you expect possible difficulties, make sure to leave enough time to get your assignment in.
- Note that you can submit as many versions as you like of your assignments (only the last submitted version will count). Submit early and often!
- An exception to this policy may be made for disasters like the Zoo catching fire.
- No collaboration on assignments
2. What programs do
In this class, we assume that you have already had some prior programming experience and have background equivalent to taking CS201. The key concepts you will need are
- The notion of a program as a process running within an operating system.
- The distinction between source code (what you write, which needs to be readable by both other humans and machines) and machine code (what the computer actually executes).
- An understanding of what a compiler does (specifically, that you need to run it to translate source code to machine code).
- Some sort of idea of what a computer looks like at the machine code level. This includes an understanding of memory, addresses, etc. We will cover some of this in detail as it comes up, since you can't survive writing programs in C without having a very strong grasp of this.