pchapin's C++ Programming Syllabus, Fall 2023

Instructor

Peter Chapin. Email: peter.chapin@vermontstate.edu. I will usually respond to email within 24 hours, not including weekends or holidays. Email is the best way to contact me. I am also sometimes on the Libera IRC network under the nickname pcc. Some students maintain a Discord server for CIS classes at Vermont State University. I can usually be found there as pchapin. Use this link to join that system: https://discord.gg/4HkPgdJruX. My office is in WIL-414. Office hours are by appointment.

Course Description

The official course outline lists high-level course objectives and content.

As the title implies, this course is about using the C++ programming language to develop software. Although not a first course in programming, you may pick up some general software development concepts along the way. However, the emphasis is on the technical details of using C++, the language. We will cover C++'s support for creating and using abstract data types (classes, etc.), templates and the standard template library, and how to do object-oriented programming in C++. We will use C++ 2020 as the base language for this course, although much of what we will cover will be applicable to earlier standards as well.

C++ is very large and complex, and no single course can do justice to the entire language. We will not attempt to cover everything. However, by the end of the course you should have a good feeling for what programming in C++ is like, and be well positioned to explore more advanced topics in the language.

Prerequisites

This course assumes you are already familiar with the basic concepts of programming and have taken courses in C and/or Java. This course also assumes you are familiar with the basic concepts of object-oriented programming (data encapsulation, inheritance, etc).

Contrary to what you might think, fluency with C is not particularly required. In fact, some people believe it is better to learn C++ without the "corrupting" influence of a C background. Although I wouldn't go that far, it is true that programming with modern C++ is a very different experience than programming with C. Thus, it is best to avoid bringing too much of a C bias to this course.

Resources

The primary text is C++ Primer, Fifth Edition by Stanley B. Lippman, Josée Lajoie, and Barbara E. Moo. Copyright 2013. Published by Addison Wesley. ISBN=0-321-71411-3. You do not need to buy this book!. Instead, you can access the text and several other C++ books that I will make available via the O'Reilly eBook Collection (use your VTSU credentials to log in).

The primary text is a well-respected book written by several C++ experts. The latest edition covers the C++ 2011 standard, which is currently somewhat old. However, although I will be teaching to the newer C++ 2020 standard, the primary text still provides a lot of useful and relevant information. The O'Reilly eBook Collection playlist that I provide includes some C++ 2020 specific texts as well.

I have created an email distribution list for the class. I will use this list to distribute announcements and other supplementary materials. Be sure to check your mail regularly (daily) or you might miss something important. If you send a question in email directly to me, I may reply to my distribution list if I think that others would benefit from my answer. If you would rather I did not reply to the list, please say so in your message.

My home page contains various documents of general interest.

Grading Policy

I grade on a point system. Each assignment is worth a certain number of points. At the end of the semester, I total all the points you earned and compare that to the total number of possible points. In this course there is one component to your grade.

  1. Homework. 20 pts/each. There will be approximately eight assignments during the semester for a total of 160 points. You will have approximately two weeks to do each assignment. Most, if not all, of these assignments will entail writing C++ code.

Important! Please be sure any programs you submit to me at least compile. I will subtract a distressingly large number of points if they do not ("programs" that don't compile are not really programs). Our reference compiler will be g++ as installed on Lemuria. You may use another development environment if you wish, but be sure your programs compile and work as expected using g++ on Lemuria before you submit them.

You can discuss the assignments with other students and post questions related to the assignments in on-line forums. However, you should still do your own work. See the section on "Copying Policy" below for more information.

I will not formally take attendance, but I will notice people who seem "disengaged" in the class. Although attendance is not specifically part of my grading policy, it will, like other intangible items such as "professionalism," play a role in how likely I am to round up borderline grades.

Late Policy

Roughly, late submissions are not accepted. If something comes up that prevents you from handing in an assignment on time, contact me, before the deadline if at all possible, to discuss your issue. As a practical matter, I can accept a late submission if I have neither distributed a solution nor graded the assignment. Since either of those things can happen at any time after the due date, you should plan on submitting all materials on time.

Copying Policy

I encourage you to share ideas with your fellow students, so I won't be shocked to learn that you've been talking with someone about an assignment. In fact, if you worked closely with someone else, you should make a note on your submission that mentions the names of your associates.

However, I do ask you to do your own work in your final submissions. If two submissions exhibit what I feel to be "excessive similarity" I will grade the submissions based on merit and then divide the grade by two, assigning half the grade to each submission. If I receive more than two excessively similar submissions, I will divide the grade by the number of such submissions and distribute the result accordingly.

Since "excessive similarity" is a bit subjective, I may only give you a warning if the similarity is not too excessive—especially for a first offense. However, I will be much less inclined to be forgiving the second time. If you are concerned about the possibility of submitting something that might be too similar to another student's work, don't hesitate to speak with me first.

If you find material on the Internet or in a book that seems to address the requirements of an assignment, you may include such material in your submission provided you properly reference it. If I discover that you have included unreferenced material from such sources, I may not give you any credit for the assignment, or the relevant part of the assignment. You do not need to provide a reference to the official text book(s) or to materials I specifically provide in class.

NOTE!

If you include code generated by an AI assisted code generator such as Google Bard, or similar, and if that code is longer than a few lines, please indicate which code was generated and which generator you used. You are, of course, still responsible for any errors in the generated code.

Other Matters

Students with disabilities may request accommodation as provided within federal law. All such requests should be made by first contacting disabilityservices@vermontstate.edu.


Last Revised: 2023-08-18
Copyright 2023 by Peter Chapin <peter.chapin@vermontstate.edu>