CPSC 335: C++ Programming

Meeting Times:M 1:00 – 1:50, JFRM 026
Instructor:Ian Finlayson
Email:ifinlay@umw.edu
Office:Farmer 043
Office Hours:MW 11:00 – 12:00, TR 11:30 – 1:00, or by appointment
 

Course Description

This course will teach students problem-solving skills using the C++ programming language. Programming fundamentals include variables, control statements, loops, arrays, pointers, functions, and object-oriented programming.


 

Course Goals & Objectives

Upon completion of this course, you should understand:


 

Student Learning Outcomes

After completing this course, you will be able to employ:


 

Class Structure

This class will be a flipped classroom with lots of in-class time spent working in teams on programming problems. When we begin a new topic, you will do a reading before class (from Learn C++, which is linked on the schedule below. You'll also take a short quiz before coming to class to check your understanding of the material. We'll then go over the quiz at the start of class and I'll briefly talk about the material and provide examples.

You will then get into your teams where you will work on programming problems using the techniques we cover. These will be stored in the Domjudge programming contest software, so you can submit them in class as many times as you like and they will be evaluated automatically. These do not have a specific due date, but your team should try not to get too far behind, as new problems will be added each week.

This class is structured this way to maximize our time working together on the problems, which most closely works the way computer scientists work together in industry and academia.

During the final exam period, some new problems will be posted for your team to work on, in addition to any problems that you missed.


 

Grading Policy

This class will used an XP-based grading scale. Each at-home quiz is worth 15 points. Each day you attend class and actively participate is worth 10 points. Each problem you and your team correctly solve is worth 15 points. I may add additional XP opportunities at my discretion.

Your final grade will be calculated using the following table:

GradeXP Threshold
A500
A-475
B+450
B425
B-400
C+375
C350
C-325
D+300
D275
F0

 

Student Conduct


 

Honor Policy

Students are expected to conduct themselves in a manner consistent with the letter and spirit of the Honor Constitution and CPSC department honor policy

For this class, you should take the quiz alone, using only the posted material as a source (so not search the web or ask an LLM). For the team programming problems, you should work together within your team only. You can search the web or use AI for small pieces of a problem (like "how to split a string into a list with C++"), but not for entire programs (like "how to solve the coin row problem in C++").

If you have any questions or need clarification, please don't hesitate to contact me!


 

Accessibility Statement

The Office of Disability Resources has been designated by the university as the primary office to guide, counsel, and assist students with disabilities. If you receive services through the Office of Disability Resources and require accommodations for this class, please provide me a copy of your accommodation letter via email or during a meeting. I encourage you to follow-up with me about your accommodations and needs within this class. I will hold any information you share with me in the strictest confidence unless you give me permission to do otherwise.

If you have not made contact with the Office of Disability Resources and have reasonable accommodation needs, their office is located in Seacobeck 005, phone number is (540) 654-1266 and email is odr@umw.edu. The office will require appropriate documentation of disability.


 

Title IX Statement

University of Mary Washington faculty are committed to supporting students and upholding the University’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence. Under Title IX and this Policy, discrimination based upon sex or gender is prohibited. If you experience an incident of sex or gender based discrimination, we encourage you to report it. While you may talk to me, understand that as a “Responsible Employee” of the University, I MUST report to UMW’s Title IX Coordinator what you share. If you wish to speak to someone confidentially, please contact the confidential resources found below. They can connect you with support services and help you explore your options. You may also seek assistance from UMW’s Title IX Coordinator, their contact information can be found below. Please visit http://diversity.umw.edu/title-ix/ to view UMW’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence and to find further information on support and resources.


 

Recording Statement

Classroom activities in this course may be recorded by student's enrolled in the course for the personal, educational use of that student or for all students presently enrolled in the class only, and may not be further copied, distributed, published or otherwise used for any other purpose without the express written consent of the course instructor. All students are advised that classroom activities may be taped by students for this purpose. Distribution or sale of class recordings is prohibited without the written permission of the instructor and other students who are recorded. Distribution without permission is a violation of copyright law. This policy is consistent with UMW's Policy on Recording Class and Distribution of Course Materials.


 

Tentative Schedule

Date Reading At-Home Quiz Class Topic
August 24 Course Introduction
August 31 0.3-0.5, Chapter 1, 2.1-2.7 Quiz 1: Fundamentals C++ Fundamentals
September 7 Labor Day Labor Day
September 14 Chapter 4, Chapter 5, Chapter 6 Quiz 2: Types and variables Types and Operators
September 21 No Class
September 28 Chapter 8, 2.8-2.12 Control Structures and Multiple Files Control flow and Multiple Files
October 5 Chapter 7, Chapter 16 Scope, Linkage, Vectors
October 12 A Fall leaf Fall Break
October 19 Chapter 10, Chapter 11 Type conversions, Function Overloading/Templates
October 26 Chapter 12, 19.1-19.2 References, Pointers, and Dynamic Memory
November 2 Chapter 14, Chapter 15, 19.3 Classes
November 9 Chapter 20, Chapter 21 Advanced Functions, Operator Overloading
November 16 Chapter 24, Chapter 25 Inheritance
November 23 Chapter 26 Template Classes
November 30 Chapter 18, Chapter 22 Iterators, Smart Pointers
December 9 Final Exam, 12:00 – 2:30