Software 1, Spring 2003

Special OFFICE HOUR toward the exam:
Wednesday 18/6, 16:00-17:00 (and longer if needed)

You can bring to the exam 2 DAPEI EZER + the table of operator priority

Instructor: Dan Halperin
Tuesday 10:00-13:00, Dan-Daviv 001
Office hours: Tuesday 15:00-16:00, Schreiber 219

Teaching Assistant: Efraim Fogel
Practice website
Practice: Sunday 10:00-13:00, Tuesday 15:00-16:00
Office hours: Sunday 15:00-16:00

Helpdesk: Alexandra Shulman
Sunday 18:00-20:00, Tuesday 16:00-20:00, Schreiber open space at entrance floor

The course will cover three topics:

 the C programming language,
 basic system software and the UNIX programming environment,
 a brief introduction to C++.

A short bibliography for the course.

The main textbook used in the course: A Book on C---3rd or 4th Edition, by Kelley and Pohl. The book is at its 4th edition, but for all the course's purposes the 3rd edition is as good. One of the advantages of this book is that its example programs are available on-line: browse the examples or download the dos version.

The final grade will be determined by your assignments grade (25%) and the final exam (75%). To be eligible for a final grade students must submit ALL exercises. Note that the exercises do not necessarily have equal weight in the final assignment grade. The assignments distribution and submission will be coordinated by the TA (METARGEL).

During the course you will need an account on the school's UNIX machines. Most of you probably have an account already. If not check with the help desk on the entrance floor to Schreiber.

Syllabus and Handouts

The chapters below refer to the chapters of "A Book on C"---3rd or 4th Edition. Note that this course outline is tentative. During the semester we also maintain a brief summary of the actual material taught in class.

course overview. requirements.

introduction to "C" (chapter 0)

example programs in C (chapter 1)

a brief history of the UNIX operating system
Beginner's Unix commands

lexical elements (chapter 2)

writing a C program in UNIX

fundamental data types (chapter 3)

floating point standards and signed numbers; for more details see "Computer Arithmetic" by David Goldberg, Appendix A of "Computer Architecture, a Quantitative Approach" by Hennessy and Patterson, 2nd Edition, Morgan Kaufman.

flow of control (chapter 4)

random number functions from the book "Programming Abstractions in C" by E. Roberts, Addison Wesley,
and a small program that tests some random number functions and sample runs

functions (chapter 5)

runtime environment and the control stack; for more details see "Runtime Environments"-Chapter 7 of "Compilers, Principles, Techniques and Tools" by Aho, Sethi, and Ullman, Addison Wesley.

arrays, pointers, and strings (chapter 6)

structures (chapter 9)

dynamic matrix allocation (from chapter 12) , matrix.tgz---the source code and makefile

preprocessor (chapter 8)

bitwise operators and enumeration types (chapter 7)

self-referential structures, linked lists , binary trees (chapter 10)

stacks (also from chapter 10)

introduction to the unix make untility (type "unix make untility" in google to find more on-line guides/manuals)

input/output, files (chapter 11)

for more information on UNIX I/O, see Advanced Programming in the UNIX Environment / W.R.Stevens, Addison-Wesley.

executing commands from within a C program

environment variables

lint, profiler

timing a C program, using pipes from within a C program

compilation options, making a library, timing C programs

process control in UNIX, pipes, signals (chapter 12)

about shell scripts
testing which file was modified later: ls.c , stat.c , script1 , script2 ,

An Introduction to the C Shell (44 pages, no need to print out, much more than will be covered in the course)

UNIX utilities (those will be mainly studied in the TIRGUL): sort, find, tar, gzip, uuencode/decode, background, fg, jobs, soft links

introduction to C++

7 Apr 2003