Spring 2005 CIS 15/615
Advanced Programming
Techniques Using C
Instructor Rave Harpaz
Email rbharpaz@sci.brooklyn.cuny.edu
Home page http://acc6.its.brooklyn.cuny.edu/~rbharpaz
Office 5316N
Telephone 718-9515527
Office hours Before and after class
Textbooks Required
C Programming: A Modern Approach by K.N. King
The
C Programming Language Second Edition
(by Brian W Kernighan & Dennis M. Ritchie)
Attendance Although class attendance is not mandatory, you are responsible for whatever is done in class. While our textbooks cover most basic concepts, class is your only source for the specifics that will allow you to learn the material – and pass the class. Make sure you get the notes and assignments if you miss a class. You should get at least one other students phone number.
Grading Your grade will be determined by your performance on 3 in-class examinations, a number of programming assignments and quizzes. Attendance is not compulsory but class participation will also be taken into account.
These will contribute to your grad as follows:
Programming assignments 20 %
Midterm #1 25 %
Midterm #2 25 %
Final exam 25 %
Class participation 5 %
There will be a total of 5-6 programs assigned throughout the semester. Most of your programs will be run on PC’s using any C compiler (Visual C++ Ver.6.0 or higher recommended). One or two assignments will be developed on the UNIX platform. You are responsible for obtaining the correct user account.
The programs will be assigned roughly every week. Typically, each program will be due 1 week after it is assigned. There will be a penalty for lateness, 10 % per week late. Each program will be graded and returned to you within a couple of days (no more than one week).
All handouts and assignments are posted on my web page. You are responsible
to download them before each class meeting !!!
· Course overview
· Review and extension of standard pointer, structure, array and string operations
· Combining pointers, structures and arrays with functions
These topics are the heart and soul of C
programming, you should be able to master them, without a thorough
understanding of these topics you will encounter difficulties with the advanced
topics. A quiz will be given after these topics are covered in class.
· Software engineering – we are going to cover a number of software engineering topics, the first topic will be: Coding style
· I/O, working with files/streams (handouts)
· Recursion and its applications
· Variable scope and allocation of storage
· Software engineering – the programming process, modular programming (handouts)
· The C preprocessor - macros, header files, separate and conditional compilation
· Unix fundamentals – basic Unix operations will be self-taught throughout the course using handouts, exercises and a tutorial posted on my web page. A brief introduction will be given in class. If time and logistics permit we will have a hands on lab class. You will be tested on some of the topics.
· Advanced pointers - dynamic memory allocation, pointers to pointers, command line arguments
· Advanced string handling
· Introduction to Data Structures – Sacks, linked lists
Other topics that will be
covered if time permits:
· Advanced functions - pointers to functions, functions with variable-length argument list
· System programming – creating a Concurrent process with fork()