Computer Science 215 - Tools and Techniques for Software Development - Section 2 - Spring 2001

This document can be found in
The department syllabus can be found in

Objectives: Study software development using an imperative language.

Major Concepts:

Prerequisite: C or better in CPSC 212 (CPSC 241)

Meetings: 12:20-1:10 MW in Daniel Hall room 408
Late Arrival: Please wait up to 15 minutes if I am late to class.

Required Textbooks:
1. H. Deitel, and P. Deitel, C: How To Program, 3rd ed., Prentice Hall, 2001, ISBN: 0-13-089572-5. (book web site)
2. S. Sarwar, R. Koretsky, and S. Sarwar, Unix: The Textbook, Addison-Wesley Longman, 2001, ISBN: 0-201-61260-7. (book web site)

Recommended Professional Reference Books:
1. S. McConnell, Code Complete, Microsoft Press, 1993, ISBN: 1-55615-484-4. (TOC and excerpts)
2. B. Kernighan and R. Pike, The Practice of Programming, Addison-Wesley, 1999, ISBN 0-201-61586-X. (book web site)
3. B. Kernighan and D. Ritchie, The C Programming Language, 2nd (ANSI-C) ed., Prentice Hall, 1988, ISBN: 0-13-110362-8. (book web site)
4. B. Stroustrup, The C++ Programming Language, 3rd ed., Addison-Wesley Longman, Inc., 1997, ISBN: 0-201-88954-4. (book web site)
5. P. Plauger, The Standard C Library, Prentice Hall, 1992, ISBN 0-13-131509-9.

Instructor: Mark Smotherman, 441 Edwards Hall,, 656-5878
office hours: 11:00-12:00 M, W, and by appointment




Attendance: Class attendance is not graded.

Drop Days: Last day to drop without record is January 24; last day to drop without grades is March 2.

Academic Integrity: "As members of the Clemson University community, we have inherited Thomas Green Clemson's vision of this institution as a `high seminary of learning.' Fundamental to this vision is a mutual commitment to truthfulness, honor, and responsibility, without which we cannot earn the trust and respect of others. Furthermore, we recognize that academic dishonesty detracts from the value of a Clemson degree. Therefore, we shall not tolerate lying, cheating, or stealing in any form."

from Academic Integrity Policy

See also the department statement.

Specifically, for this class: Publicly-available code or other material may be freely used if appropriately attributed. Each student is responsible for protecting his or her files from access by others. Work that is essentially the same and submitted without proper attribution is considered to be a violation of the academic integrity policy by all those submitting the work, regardless of who actually did the work.

Spring 2001 Approximate Schedule

month M W class category topic (text) lab topic (text)
Jan 10 Class 01 C intro, UNIX, C, C++, Java (DD 1,2) (no lab)
15 no class, MLK day
17 Class 02 C i/o, functions (DD 2,5) Lab 01 UNIX commands (SKS 4,9)
22 Class 03 C arrays, pointers (DD 6,7)
24 Class 04 SW-1 software development, testing Lab 02 editors (SKS 5)
29 Class 05 SW-1 separate compilation, makefiles (SKS 20)
PROGRAM 1 DUE: array-based stack implementation using a test driver (use handin.215.2 1 filename) grading scheme
31 Class 06 C string handling, i/o (DD 8,9) Lab 03 email (SKS 6)
Feb 5 Class 07 C struct, union (DD 10)
7 Class 08 C dynamic memory allocation, linked lists (DD 12) Lab 04 UNIX file system (SKS 7,8)
PROGRAM 2 DUE 2/12/01: calculator w/ stack using makefile (use handin.215.2 2 filename) grading scheme
12 Class 09 C cpp, va_arg(), command line parameters (DD 13,14)
14 Class 10 C other standard library routines (DD 14) Lab 05 shell, pipe, redirection (SKS 4,12)
PROGRAM 3 DUE 2/23/01: queue manager using doubly-linked lists and test driver (use handin.215.2 3 filename)
19 11 ** FIRST EXAM ** study guide
21 Class 12 GUI GUIs, event-driven programs, GTK+ (web) Lab 06 adv. file processing, regex (SKS 10)
26 Class 13 GUI packing boxes, labels, colors (web)
28 Class 14 GUI key presses, more widgets (web) Lab 07 processes (SKS 13)
PROGRAM 4 DUE 3/2/01: calculator using queue manager (use handin.215.2 4 filename)
Mar 5 Class 15 SW-2 debugging
7 Class 16 SW-2 shells (SKS 4,17,18) Lab 08 debuggers (SKS 20)
12 Class 17 SW-2 versioning, packaging (SKS 20)
14 Class 18 IO UNIX files, stream I/O, redirection (SKS 7,8,12) Lab 09 shells (SKS 15-18)
PROGRAM 5 DUE 3/16/01: GUI calculator (use handin.215.2 5 filename) grading scheme
19 no class, Spring break
21 no class, Spring break
26 Class 19 IO formatted vs. binary I/O (DD 11)
28 Class 20 IO sequential vs. random I/O (DD 11) Lab 10 remote use (SKS 14)
Apr 2 Class 21 IO low-level (unbuffered) I/O (DD 11)
4 Class 22 ** SECOND EXAM ** study guide Lab 11 packaging/config/inst (SKS 19)
9 Class 23 C++ intro to C++, classes (DD 15,16)
11 Class 24 C++ const, friend, new/delete, containers, iterators, STL (DD 17) Lab 12 versioning (SKS 20)
PROGRAM 6 DUE 4/13/01: GUI image viewer (use handin.215.2 6 filename) grading scheme
16 Class 25 C++ overloading, constructors (DD 18)
18 Class 26 C++ inheritance, polymorphism (DD 19,20) Lab 13 Xwindows (SKS 21)
23 Class 27 C++ streams, templates, exceptions (DD 21,22,23)
25 Class 28 evaluation, review Lab 14 ** LAB FINAL **
(EXTRA CREDIT) PROGRAM 7 DUE 4/27/01: calculator in C++ (use handin.215.2 7 filename) grading scheme
30 Class 29 ** FINAL EXAM -- Monday, April 30, 1-4 ** study guide

Learning C after Java...
        Imagine there's no classes,
        It isn't hard to do.
        No objects to send messages
        No references too
        Imagine all the methods
        Static and you've got C.
        O-ho you might say that that's a nightmare
        And you're not the only one
        But the language has its uses
        And like Java can be fun.

by David Arnow (

Web pages on vi

Web pages on C

Web pages on coding guidelines

Web pages on C99

Web pages on C++

Web pages on C++ STL

Web pages on comparing Java and C/C++

Web pages on GUIs and esp. GTK+

Web pages on Scripting Langauges

Web pages on history

[Mark's homepage] [CPSC homepage] [Clemson Univ. homepage]