|
Course Outline
Weekly schedule
Pre-requisites
Work Load
Homeworks and exams
Sample Programs Used in the class
References
Tips and guidelines for good programming
Academic dishonesty policy
Past courses I taught at Columbia University
|
Ramana Isukapalli's Columbia University Page
I am teaching W3101: Programming Languages: C++ in Spring 2014.
Day/Time: Tuesdays 6:10 - 8:00 PM.
Location: 825 Seely W Mudd Building.
Teaching Assitants:
- Siddhartha Chandra, sc3653, Office hours: Wednesday 1-2 PM
- Adith Tekur Srinivasmurthy, at2904, Office hours: Tuesdays 2-3 PM
- TA Office: Mudd 122 A.
First Lecture is on Mar 25.
My contact information
I work at Alcatel-Lucent.
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.
Weekly schedule
Date
|
Topics
|
Notes
|
Reference
|
Mar 25
|
- Course highlights
- Overview of C
- C data types, statements, expressions
- Usage of if, else, for, while, do, etc.
- functions and pointers.
|
Lecture1
|
C++ Language Tutorial
|
Apr 01
|
- Design principles of C++.
- Class, object, data and methods.
- Constructor
|
Lecture2
|
|
Apr 08
|
- Constructor and destructor
- Data encapsulation
|
Lecture3
|
|
Apr 15
Apr 17
|
- C++ string class
- Data encapsulation, contd.
- friend functions/classes
- Inheritance
- this, const functions
- Function overriding, overloading
- Passing arguments by value or reference
|
Lecture4
|
|
Apr 22
|
- Polymorphism
- Virtual functions
- Abstract classes
|
Lecture5
|
|
Apr 29
|
- Templates
- Operator overloading
- STL: vector, list classes, iterators.
- Standard template libraries
- Operator overloading
- Inline functions
- Casting in C++
- Namespaces
- Course summary
|
Lecture6
|
|
May 13
|
Final Exam
|
No lecture
|
--
|
Pre-requisites
- Some experience in programming or a programming language is
helpful for this class.
- If not, students should be willing to learning programming "quickly".
Work load
- Five programming assignments: 70%
- A final exam: 30%
Homeworks and exams
- Homeworks will be posted on my web page (this page).
Please complete them and submit them in Courseworks.
Please DO NOT mail them to me.
- Late submission policy: No late submissions please,
(unless of course, you have a really, really
good reason!).
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. Programs used in:
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:
Past Courses I taught in Columbia
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
| | |