Text: Programming: Principles and Practice Using C++, by Bjarne Stroustrup.
Course Homepage: http://www-cs.ccny.cuny.edu/~wes/CSC103F17/
Time and Place: T,R 11:00-11:50AM Marshak MR4
Instructor: William E. Skeith (WES)
Office: Shepard 279


You will learn the basics of procedural computer programming (primarily in C++). This includes an understanding of datatypes and variables, branching and looping constructs, pointers and recursion. Additionally, we will introduce some standard tools for programming, and cover the basic operation of a computer. Lastly, we introduce elementary data structures, the standard template library, and the basics of object oriented programming.




You are strongly encouraged to attend lectures. I believe in a close, open and interactive classroom environment whenever possible. This typically leads to far greater understanding than what the (non-interactive) book alone can offer.


There is no attendance policy for recitation either, but most recitations will feature a quiz, and it will be hard to score well if you don’t show up to take them. Also, recitation will be used for group projects, so failing to attend will also be a disservice to your teammates.

What I Expect; How to Succeed (Important!)

  1. Do the reading (including those tutorials) and go to class.
  2. Do all the TODO exercises from the lectures.1
  3. Work with your team on the projects.

That’s it. If you spend time after every lecture working out the problems I’ve left for you, the quizzes and exams ought to be pretty easy. Working on the projects will give you the chance to write some more involved programs as well as the chance to learn from and teach your classmates which is also very valuable.

Note that the TODO exercises are not graded, but they will be similar (identical in some cases) to exam and quiz problems. At any rate, working out problems is the only way you will learn this subject. If you don’t spend time on those every week, you will most likely fail.

Lastly, a remark or two on the tutorials may be in order:

How to Get Help

Please direct all questions to piazza (and please read the guidelines first).


There will be a zero-tolerance policy regarding cheating. Given the severe consequences of this offense, let me be perfectly clear on its definition. There are of course the classic forms of cheating, which include copying the work of another student, either during an exam, or on the homework, but more generally, cheating includes turning in work that is not your own, regardless of the source, even if the source is well known (e.g., wikipedia). Anything you submit, you had better be very well prepared to explain to me. Trying an assignment and failing is OK! Sometimes the problems are difficult, and I don’t expect everyone to get everything right. What is not OK, is to submit work that is not your own. Consider the following quote, taken from the CUNY Policy on Academic Integrity:

Academic Dishonesty is prohibited in The City University of New York and is punishable by penalties, including failing grades, suspension and expulsion.

Upon a single offense, you’ll at a minimum be removed from the class with a failing grade.


There will be one midterm and a Final exam.
The midterm will be October 19th
The final exam will be December 14th from 10:30am – 12:45pm
Cell phones, computers etc. are not allowed in the exams. Bring your student ID.

There will be no make-up exams.


The final grade will be based on the best of the following:

HW-10%, Quizzes-10%, MT-35%, Final-45%,
HW-10%, Quizzes-15%, Final-75%.

Computing Facilities

You are strongly recommended to use the virtual machine setup, although if you really want to work in your own environment, no one will stop you. A few things to consider:

  1. Any inconsistencies between your compiler and the gcc version on the VM are considered your problem. Furthermore, the VM will be used to grade your homework, so you should always make sure it compiles there.
  2. We will at times make use of the shell (for a few examples, and for running pretty much all of the test scripts for the projects). None of this will work well on Windows.2
  3. Even if you are comfortable developing C++ code on Windows or Mac, using the VM might be a great opportunity to expand your horizons. Linux / unix has a lot to offer, especially to a CS major.

Note: if you don’t have a computer available at all, the virtual machine is also set up in the Student Computer Labs.

Supplemental References

For a quick, online C++ reference, you may want to try this. For a more in-depth study of C, try this which has answers to many exercises here.

Lecture notes

Here are some excellent notes by one of my former UCLA professors, Charles Li. These make a nice complement to the textbook, as they are often much more detailed.

Vim references

If you are planning on trying Vim (highly recommended!) here are a few resources that might help you (there is a bit of a learning curve):

There is also a nice interactive tutor.3

Practice problems

I’ve borrowed some problems from another intro course. It would be good for you try most of them soon, but especially relevant are the following: Numbers 1, 2, 3, 5, 6, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 25, 26, 27, 28, and 29 – 38, but with “array” replaced by “vector”.

Other Remarks

Your time is valuable; I want you to get as much as possible out of your time in the classroom with me. Please don’t hesitate to let me know how you feel about the pace, or just about how things are going in general.

Back to the 103 homepage

  1. Please read the workflow suggestions I left for you.

  2. Cygwin will get you closer, but will still have some issues. And besides – the VM is probably a better alternative to Cygwin in the first place.

  3. Note: if you use this tutor in firefox, you will want to make sure the “search when I start typing” feature is disabled (see Edit->preferences->advanced->general).