[RiceCS]

COMP 320

[Rice]

Class

TTh 9.25a-10.40a, DH 1064

Tutorial

Section 1: Th 2.30p-3.50p, Symonds II

Section 2: Th 7.00p-8.20p, Symonds II

Tutorials will cover additional pragmatic material, especially the C programming language and programming skills, primarily useful for completing the programming assignments. Various programming skills will also be covered.

Course staff

Newsgroup: rice.owlnews.comp320 for questions of general interest
Email: comp320@rice.edu for questions specific to your assignments or grades
Send anonymous feedback to the instructor.
Role Name Email
@rice.edu
Phone Office Hours
Instructor John Greiner greiner x3838 TTh 1-2p Duncan 3118
Teaching Assistants Hyong-Youb (John) Kim hykim x5060 M 3-5p Duncan 3064
Santashil PalChaudhuri santa x2265 TBA Duncan 3013
Apan Qasem qasem x2062 T 4-6p Duncan 3057
Lab Assistants Vishal Patel vish   T 7-9p Ryon 102
Joe Montgomery montgom   W 9-11p Ryon 102
Lowell Meyer lowell   M 8-10p Ryon 102
Adam Bordelon me   W 3-5p Ryon 102

The second hour of each labby's and TA's office hours is cancelled during weeks that there is no programming assignment.


Prerequisites

There is one formal prerequisite: COMP 212: Intermediate Programming, which in turn has one prerequisite: COMP 210: Principles to Computing and Programming. This course is reasonably self-contained; the major informal prerequisites are some proficiency in programming and familiarity with basic data structures like arrays, lists, and trees. Strong students have been able to successfully take COMP 212 and 320 concurrently, although it is not encouraged.

If you are still unsure whether you have sufficient background, contact the instructor.

Non-Prerequisites

Knowledge of the C programming language is not a prerequisite, although it is helpful and somewhat expected that you have used Java in COMP 212, since Java's syntax is based on that of C. The first part of this course includes a crash course on some C fundamentals.

ELEC 326: Digital Logic Design is not a prerequisite, although students typically find its content helpful. COMP 320 and ELEC 326 have a small amount of overlap.


Why C?

This course is about low-level features in computers and programming, so we use a low-level programming language to emphasize that. Everything in C can be implemented on typical processors in a fairly straightforward manner, and it is thus often considered a high-level assembly language. Similarly, it exposes some details of the underlying machine, e.g., how data is stored in memory.

It is important to get experience in a variety of programming paradigms and languages. COMP 210 uses a mostly-functional language. COMP 212 uses an object-oriented language. COMP 320 uses an imperative language. Each of these has advantages and disadvantagees, which are best understood by personal use of each. (Note: There are other programming paradigms, too.)

To emphasize the importance of code documentation. Good code must be written so that others can understand it, and this requires extensive documentation. In COMP 210 and COMP 212, this is less obvious partly because they use higher-level languages in which code is usually easier to understand.

Why only C?

So you don't avoid the experience of low-level and imperative programming.

Pragmatically, it's easier to provide support code, answer questions, and grade when just using one language.