Assignment 1. Getting Your C++ Legs


Due Friday, July 7 at 11:59 pm Pacific

  • Submissions received by due date receive a small on-time bonus.
  • All students are granted a pre-approved extension or "grace period" of 24 hours after the due date. Late submissions are accepted during the grace period with no penalty.
  • The grace period expires Sat, Jul 8 at 11:59 pm Pacific, after which we will deduct 15% per late day.
  • You must submit the assignment by Thu, Jul 13 at 11:59 pm Pacific to receive any credit. We will not accept any submissions past this date.
  • In this course, we express all date/times in Pacific time GMT -7. Our Paperless submission system also displays/records due dates and submission times in Pacific time.

Here it is – the first programming assignment of the quarter! It will consist of a mix of coding, testing, and debugging tasks that get you practicing with the C++ language and development tools.

The code you are to write uses expressions, control structures, functions, and string processing. You all have prior experience with these concepts; the novelty comes in figuring how to take what you already know and translate into the strange new world of C++. In addition to the language transition, you'll practice with the development tools and be introduced to strategies for testing and debugging your code. By the time you've completed the assignment, you'll be more comfortable working in C++ and ready to start building larger projects, or as we like to say, you'll have gotten your C++ legs under you! (apologies for the bad pun… ‍☠️)

Like all assignments this quarter, this assignment is to be completed individually. Working in pairs/groups is not permitted.

Learning goals

  • To become comfortable using Qt Creator 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 warmup exercise involving number theory, algorithms, and optimization. It gives you a guided transition into C++ and the testing and debugging tools we use. You can start on this task right away — and we recommend doing so! Completing the 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.

Resources

  • The CS106B guide to SimpleTest on testing your code using the SimpleTest framework.
  • A guide to C++ strings written by our awesome colleague Keith Schwarz.
  • This Python to C++ transition guide 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.
  • The CS106B Style Guide explains the rubric and standards we use when evaluating the style of your code.

Getting Help

We're having Assignment 1 YEAH (Your Early Assignment Help) hours, in which a veteran section leader will answer your questions and share pro tips. We know it can be daunting to sit down and embark on a substantial programming assignment - come to YEAH for advice and confidence to get you on your way! More logistics on YEAH can be found in an announcement on the course homepage.

We're 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 with the course instructors. Office hours are listed on the course homepage under each instructor's photo.

Submit

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

Please do not 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!