Assignment 1. Getting Your C++ Legs

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.

  • 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.

📦 Starter code

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.


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.


Before you call it done, run through our submit checklist to be sure all your ts are crossed and is 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.

🏁 Submit to Paperless

That's it; you're done! Congratulations on finishing your first CS106B assignment!