CMPSC 16: Problem Solving with Computers
Course Information
Professor: Chad Spensky
Office Hours: Thursday 2-4pm in HFH 1107
TA: Adam Ibrahim
Office Hours: Monday 1-3pm in Trailer 936
TA: Mohammad Javad Amiri
Office Hours: Tuesday 2-4pm in Trailer 936
Class: Tuesday/Thursday @ 12:30-1:50pm in Phelps 1260
Lab 1: Monday @ 9:00-10:15am in Phelps 3525
Lab 2: Monday @ 10:30-11:45am in Phelps 3525
CSIL Lab (1138 HFH): Monday - Friday / 8:00am-4:45pm
Catalog Description: Provide the fundamental building blocks for solving problems using computers. Topics include basic computer organization and programming constructs (i.e., memory, CPU, binary arithmetic, variables, expressions, statements, conditionals, iteration, functions, parameters, recursion, primitive and composite data types, and basic operating system and debugging tools). C++ will be used as the primary programming language.
Course Material
Slides and Resources: Github
Assignment Submissions: Submit.cs
Assignments and Discussion: Piazza
Previous Offerings: Sp2016, W2016, W2015, Su2014
Textbook: W. Savitch. Problem Solving with C++. 9th Edition, 2014
Our Journey: Chapter Map
Lab Assignments: 30%
Class Project: 30%
Quizzes: 20% (5% each) (Results)
Final Exam: 20% (Results)
Course Schedule
Mon Tue Wed Thu Fri Comments
Week 1
Lab Canceled Introduction
Chapter 1
Chapter 1
Week 2
Lab 1, Lab 2
Bugs (C++)
Chapter 2
Doubles (C++)
Types (C++)
Chapter 3
Enums and Types (C++)
Quiz 1
Lab 1 and 2 Due
Week 3
Lab 3 Chapter 3
Switch/Case and Loops (C++)
Chapter 4
Functions (C++)
Week 4
Lab 4 Chapter 5
Functions 2 (C++)
Chapter 6
File I/O (C++)
Quiz 2
Lab 3 and 4 Due
Week 5
Lab 5 Chapter 6 Chapter 7 Lab 5 Due Chad on Travel
Week 6
Lab 6 Chapter 7
Arrays (C++)
Chapter 7
Arrays 2 (C++)
Quiz 3
Lab 6 Due
Week 7
Lab 7 Chapter 14
Recusion (C++)
Chapter 8
Strings and Vectors (C++)
Lab 7 Due
Week 8
Lab 10 Chapter 9
Pointers and Dynamic Arrays (C++)
Chapter 10
Structs and Classes (C++)
Quiz 4
Lab 10 Due
Week 9
Lab 9 Chapter 10
Structs and Classes 2 (C++)
Chapter 11
Lab 9 Due
Week 10
Lab 8 Referesher / Networking Final Exam Lab 8 Due
Final Project Due
Final Projects (Pick 1)
Sudoku Solver
Maze Solver

Lab 1: Hello World
Lab 2: Introduction to Input/Output
Lab 3: Arithmetic Operations
Lab 4: Functions
Lab 5: File I/O and String Operations
Lab 6: Hexadecimal and Advanced String Operations
Lab 7: Debugging and Multidimensional Arrays
Lab 8: Dynamic Arrays and Pointers
Lab 9: Vectors and Sorting
Lab 10: Recursion
No late assignments will be accepted!
Teamwork is encouraged, cheating is not!
E-mails sent outside of working hours (9am-5pm) or on the last day of an assignment may not receive a prompt response.
Google: The answer to most of your questions.
C++ Development with Xcode (OSX)
CodeLite (All Operating Systems)
Eclipse C++ Interactive Development Environment (IDE)
Visual Studio (Windows)
Command Line Cheat Sheet
Random Links
The International Obfuscated C Code Contest