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

                       

Optional texts

 

                        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   %

 

 

 

 

 

Programming assignments

 

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 Outline

 

·       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()