CS197C - Programming in C++ (Fall 2011)

Announcements

I have been remiss in the past about updating the site. I'm hoping to remedy that this year, but know it's a habit-change in progress.
  • Sept 5, 2011 : Updated website contents for F11 course.
  • Sept 14, 2011: Added Lecture 2 and Q2 to the site.

Q & A

I will place salient questions and answers here.

Schedule

Date Topic Programming Assignment Quiz Examples
9/7/2011 C/C++ basics, tools, Makefiles,
C data types, ADTs
P1 [tar] [zip]
(due in Spark 9/21/2011)
Q1
Submit to Spark by 9/9/2011
 
9/14/2011 C libraries   Q2
Submit to Spark by 9/16/2011
C library
9/21/2011 Classes in C++, C++ I/O P2 [tar] [zip] [soln]
(due in Spark 10/5/2011)
Q3
Submit to Spark by 9/23/2011
Classes  CppIO
9/28/2011 Memory & Pointers     pointers  soundex
10/5/2011 More Pointers P3 [tar] [zip]
(due in Spark 10/19/2011)
Q4
Submit to Spark by 10/7/2011
 
10/12/2011 Templates and the STL   Q5
Submit to Spark by 10/14/2011
templates
10/19/2011 Reflection, Exceptions, C++11 P4 [tar] [zip]
(due in Spark 11/2/2011)
Q6
Submit to Spark by 10/21/2011
 
10/26/2011 NO CLASS
11/2/2011 Advanced Topics: More C++11, Boost and OpenGL     boost

Submission Policy

Concerning submission of homework and quizzes:
  1. THERE ARE NO LATE DAYS FOR THIS CLASS. There are many, many of you, and one of me. You have more than enough time to complete the given assignments in the time allocated (2 weeks). I will also make an earnest attempt to make the assignments available to you ahead of time, but I reserve the right to edit the assignment without warning until the day it's officially assigned. These will mostly be minor changes, but still, be aware. In terms of the quizzes, they should not take you more than 20-30 minutes, tops. You have 2 days to do them. Don't turn them in late.
  2. YOUR SUMITTED CODE MUST COMPILE ON THE EDLAB LINUX MACHINES. If the code does not compile without modification on one of these machines, you will receive a zero for the assignment.
  3. I WILL NOT PROVIDE HELP IN SETTING UP ANY DEVELOPMENT ENVIRONMENTS. You can ace this class writing your code in Notepad (Windows), TextEdit (Mac OS X), or Emacs/Vim (Linux). In fact, if you prove to me that you did, you will receive extra credit because that's hardcore and awesome. Setting up Visual Studio, Xcode, NetBeans, or Eclipse is a waste of your time. I'm not saying you can't use them, but I am saying that I will not help you set them up since you definitely don't need them to pass.
  4. DO NOT EMAIL YOUR CODE TO ME OR THE GRADER(S). All homework and quiz submissions will be made to the Spark website. This will allow us to securely and efficiently provide you with grades as soon as possible, as well as avoid any confusion concerning submission times. Both assignments and quizzes will be available from this site (see Syllabus). In the case of programs, you will provide the source code files and the Makefile necessary to build the program from your source. In the case of quizzes, just submit a plain text file containing the answers to the questions.

Classroom Behavior

I tend to be a bit flippant in class - I probably do this in order to loosen the atmosphere and hopefully make a rather dry topic a little less boring. Although I have no problem with in-class or banter in communication (i.e. email), please remember to be professional and tasteful. Should I find your behavior overly familiar, I will inform you once that you need to watch yourself and maintain some amount of distance. If you continue to behave in a way that I find unacceptable, I will escalate the matter to the undergraduate program director, which most likely will then go to the department chair and/or the dean of students.

Academic Dishonesty

The official university policy on academic dishonesty can be found here. If you are found cheating (using someone else's work as your own, violating the aforementioned policies, or collaborating without permission), you will be disciplined pursuant to the university policy on academic dishonesty. In terms of my response in class, the offending individual(s) will receive a zero for the given assignment, and their participation contribution in the class is automatically reduced to zero with no negotiation possible.
Instructor: Marc Cartright (irmarc AT cs DOT umass PERIOD edu)
Graders:
  • Nicolas Ioannou
  • Jie Bing

Lecture Hours: 3:35 - 5:00 p.m. on Wednesdays in CMPSCI 142. This course will span eight lectures starting September 7, 2011. Please make sure that you attend this first lecture.

Office Hours: Thursdays, 10am-12pm, currently in room 366.

Online Resources:


Textbooks:

No textbook is required for the course. Computer Science textbooks get expensive quickly, and I believe about 90% of the most common details can be learned from online resources. However far be it for me to deny someone a book recommendation if they eagerly want one. Below are a few books I recommend. While I do not think you need a book to learn C++, having one as a reference is very convenient.

Recommended Books:
  • "C++ for Java Programmers" by Mark Allen Weiss, Pearson Prentice Hall, 2004.
  • "Practical C++" by Robert W. McGregor
  • "C++ Primer" by Stanley B. Lippman (I have this one. It's a hefty thing, but I really like it)
  • Note : The template and a lot of material for this course page (including lectures and some homeworks) is borrowed from the course pages of Mark Smucker, Ed Walters and Nilanjan Banerjee.