Due Friday, October 1 at 11:59 pm
- Submissions received by the due date receive a small on-time bonus.
- All students are granted a pre-approved extension or "grace period" of 48 hours after the due date. Late submissions are accepted during the grace period with no penalty.
- The grace period expires Sun, Oct 3 at 11:59 pm, after which we cannot accept further late submissions.
- All due dates and submission times are expressed in Pacific time.
Here it is – the first programming assignment of the quarter! Completing this assignment will get you up and running with the C++ language and the tools used in CS106B. The work involves a mix of coding, testing, and debugging tasks. By the end of this assignment, you'll have fully gotten your C++ legs under you! (our apologies for the bad pun…)
The code you will write involves expressions, control structures, functions, and string processing. You have prior experience with these concepts, but the tricky part is figuring how to map what you already know to the strange new world of C++. The transition is what this assignment is all about. In addition to giving you practice with C++ syntax and libraries, the assignment will guide you through the tools and approaches you can use to test and debug your code. By the time you've completed it, you'll be a lot more comfortable working in C++ and will be ready to start building larger projects!
This assignment is to be completed individually. Working in pairs/groups is not permitted.
Learning goals
- To become comfortable using the Qt Creator IDE to edit, build, run, and debug simple C++ programs.
- To practice writing C++ functions that manipulate numbers and strings.
- To learn basic use of the SimpleTest framework for unit tests and time trials.
Assignment parts
This assignment consists of two parts. Click on the links below for the full instructions.
-
Perfect Numbers
is a fun warmup exercise involving number theory, algorithms, and optimization. It gives you a guided transition into C++, as well as the CS106B testing and debugging tools. You can start on this task right away — and we recommend doing so! Completing this warmup in the first few days reserves the better part of the week for the bigger second part.
-
Soundex Search
is a complete program that demonstrates a nifty algorithm for matching and grouping names based on their pronunciation. This program uses C++ strings, console I/O, and the
Vector
class. There is a substantial chunk of code for you to write, so get an early start to give yourself sufficient time to work through issues and reach out for help if you hit any snags.
Getting started
We provide a ZIP of the starter project. Download the zip, extract the files, and double-click the .pro
file to open the project in Qt Creator.
The two source files you will edit are:
perfect.cpp
soundex.cpp
Additionally, you will write short answers to some questions in short_answer.txt
.
Resources
- The CS106B Style Guide reviews the coding standards in the rubric applied to grading the style of your submission.
- The CS106B guide to testing your code explains the use of
SimpleTest
. - This guide to transitioning from Python to C++ points out syntactical and functional differences between the two languages. Thank you to section leaders Jillian Tang and Ethan Chi for this wonderful resource!
- Resolving Common Build/Run Errors, compiled by section leader Jillian Tang.
Getting Help
Keep an eye on the Ed forum for an announcement of the Assignment 1 YEAH (YEAH = Your Early Assignment Help) group session where our veteran section leaders will answer your questions and share pro tips. We know it can be daunting to sit down and break the barrier of starting on a substantial programming assignment – come to YEAH for advice and confidence to get you on your way!
We also here to help if you get run into issues along the way! The Ed forum is open 24/7 for general discussion about the assignment, lecture topics, the C++ language, using Qt, and more. Always start by searching first to see if your question has already been asked and answered before making a new post. To troubleshoot a problem with your specific code, your best bet is to bring it to the LaIR helper hours or office hours.
Submit
Before you call it done, run through our submit checklist to be sure all your t
s are crossed and i
s are dotted. Then upload your completed files to Paperless for grading.
Please submit only the files you edited; for this assignment, these files will be:
perfect.cpp
soundex.cpp
short_answer.txt
You don't need to submit any of the other files in the project folder.
That's it; you're done! Congratulations on finishing your first CS106B assignment!