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:
- How to create computer programs in C++
- Memory management concepts including stack vs. heap allocation, pointers, and references
- The compilation process and how C++ code is transformed into executable programs
- Modern C++ best practices and coding standards
Student Learning Outcomes
After completing this course, you will be able to employ:
- Basic syntax, data types, and control structures
- Functions, function overloading, and parameter passing
- Classes, objects, constructors, and destructors
- Inheritance, polymorphism, and virtual functions
- Operator overloading
- Templates and generic programming
- The Standard Template Library (STL) including containers, iterators, and algorithms
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:
| Grade | XP Threshold |
|---|---|
| A | 500 |
| A- | 475 |
| B+ | 450 |
| B | 425 |
| B- | 400 |
| C+ | 375 |
| C | 350 |
| C- | 325 |
| D+ | 300 |
| D | 275 |
| F | 0 |
Student Conduct
- You should attend each class period that you are able to. The fact that things come up and most people will have to miss a day or two is assumed and built into the grading table above. But you should be here most of the time.
- You should not be on your phone or computer while we are working together on concepts or example problems.
- You should actively work with your team when working on programming problems together.
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 | |||
| 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 | |||
| 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 | ||