Course Outline
Pre-requisites
Work Load
Homeworks
Sample Programs Used in the class
References
Weekly schedule
Tips and guidelines for good programming
Academic dishonesty policy

Ramana Isukapalli's Columbia University Page


My contact information

I work full time at Alcatel-Lucent.

Mailing address:
67, Whippany Road
Lucent Technologies, Bell Labs Innovations
Whippany, NJ 07981

Office hours: Mondays 10 AM to 11 AM
Office: 464 CSB (Mudd building)
Please note that I am available in the office ONLY during the office hours.
Columbia email:

Course outline

This course covers C++ from an "Object Oriented Programming" (OOP) perspective. At a high level, we will cover the concepts of classes, objects, data encapsulation, inheritance, polymorphism, etc. in C++. This will be a hands on course --- we will see many programming examples throughout the course. Homework assignments are intended to make the students familiar and confident of writing C++ programs. The aim of this course is to make students design and write C++ programs in the area of their study/research.

Pre-requisites

  • It is highly recommended that students taking this class know C programming.
  • If not, they should be good with any other programming language and should be capable of learning C "quickly" (less than a week).

Work load

  • Four programming assignments: 60%
  • A midterm: 15%
  • A final exam: 25%
Homeworks:
  • Each programming assignment is due by 11 AM the following Monday.
  • No late submissions please, unless you have a genuine reason and inform me in advance.

Homeworks

  • Sep 18, 2 AM -- HW1 is posted
  • Sep 24, 11:18 PM -- HW2 is posted
  • Sep 24, 12:39 AM -- HW3 is posted
  • Oct 10, 1:25 PM -- HW4 is posted

    Solutions

  • Sep 30, 3:20 AM -- HW1 solutions
  • Oct 06, 6:00 PM -- HW2 solutions
  • Oct 18, 2:31 PM -- HW3 solutions
  • Oct 26, 1:10 PM -- HW4 solutions

    Sample Programs Used in the class

    As requested by some students in the class, I am giving access to the sample programs that I used in the class. Please note that these programs are kept simple intentionally, to explain the concepts.


    References

    There are many textbooks available on C++; there is a lot of material available on the web. Any of these should be fine. Lecture notes will be provided prior to each lecture. In addition to these, you can use the following material:

    Weekly schedule


    Tips and guidelines for good programming

    Here are some tips you may find useful when writing code. Please follow these when you submit your homeworks.
    • Include comments wherever you can. Make sure that your code can be easily understood by others (and you yourself, in future).
    • Use meaningful names for variables and constants.
    • If some code segmenet ( e.g., computing the outcome of some mathematical functions like factorial or exponent) has to be used in several places, it is better to have a separate function for it. In general, the same piece of code should, in general, not appear twice anywhere in your code. If you have to change it future, it is much easier to change it in one place, than in many places.
    • If a constant (like "pi") value has to be used in many places, define it as a const variable once ( e.g., const double pi) instead of using the value (3.1415..) in many places.

    Academic dishonesty policy

    The aim of the course is to learn C++ in a relaxed and informal atmosphere. If you have problems following the course material or doing any homeworks, please discuss with me. Go through the academic dishonesty page and please do not cheat in the homeworks or in the exams. I will be forced to follow the rules strictly if such a situation arises.
    Ramana Isukapalli
    Last modified: Fri Oct 26 13:13:41 EDT 2007