Software 1, Spring 2004
0368215712


Instructor: Dan Halperin
Tuesday 10:00-13:00, Orebstein 5 (Dach)
Office hours: Tuesday 15:00-16:00, Schreiber 219

Teaching Assistants: Greta Yorsh and Efi Fogel
All practice-related information can be found at the Practice website

Helpdesk:
Ori Shalev, orish@post.tau.ac.il, Tuesday, 17:00-19:00
Angela Enosh, angela@post.tau.ac.il, Wednesday, 19:00-21:00


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 TAs (METARGELIM).

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

For the class on 18/5/04 please donwload the following two handouts:
(1) More on make
(2) Introduction to PERL

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

about shell scripts and scripting languages

new: secure programming , guest talk by Yedidyah Bar-David on 8/6/04

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

a brief introduction to C++


1 June 2004