CS 70

Homework 1

This first assignment is a tad unusual: unlike all subsequent homeworks, this one does not use the CS 70 course server. Instead, you'll be getting some firsthand experience setting up a C++ development environment on your own laptop or PC! Then, you'll use this environment to practice using git, and writing and compiling C++ code.

  • Horse speaking

    Hay! If we're just going to be using the CS 70 server after this, what's the point of going through all the complicated steps of setting up a development environment on our own computer?

  • LHS Cow speaking

    Knowing how to set up a development environment from scratch is a key skill that may come in handy in future classes, research, or careers!

  • RHS Cow speaking

    It's also a skill you haven't had much chance to practice before: other languages like Python and Java tend to abstract away and streamline large parts of the development process.

  • LHS Cow speaking

    Plus, we just think it's really neat to peek "under the hood" at how much the CS 70 server and Helix are doing for you behind the scenes!

Getting Started

This assignment is paired, and your repository belongs to your pair. We have already made it—there is nothing to accept, no group to create on GitHub, and no name to agree on. Your pairing came from the availability and pairing board, and the repository is named after your group.

Both of you have push access to that one repository, so you are working in the same place rather than each having a copy to reconcile later. That is the point of pair programming and it is also the thing that makes it easy to see who did what.

  • Hedgehog speaking

    The link says the page doesn't exist!

  • LHS Cow speaking

    That usually means you are not in the CS 70 GitHub organization yet, rather than that your repository is missing. GitHub hides what you cannot see rather than admitting it is there.

  • Cat speaking

    So "not found" and "not allowed" look the same on purpose.

  • LHS Cow speaking

    Exactly—so that nobody can go fishing for the names of private repositories. On the server, cs70-fix-access will check your membership and sort most of this out for you.

Do NOT clone it yet. We are doing something a bit different for Homework 1, and the details are in Part 3 below. Cloning now will not break anything, but you will end up doing it twice.

Outline

Useful Information

Ask for (and give each other) help!

Post your questions there, and be sure to answer each other's. Even if you're not 100% sure of an answer, it's okay to jump in and try—we're all here to help each other!

Grading

Completing this assignment is worth 80 points, and will be graded as follows:

  • 8 points: Team Contract
  • 17 points: Written Questions
  • 10 points: Code reading
  • 45 points: Coding (completeness, correctness, clarity & style)

Resources

As you work through this assignment, we suggest you keep the following references handy:

  • You may want to refer back to the Git and GitHub Help Pages or the relevant sections of Homework 0 for details on how to set up this assignment.
  • We recommend working together in person whenever possible. If you have to pair program remotely, use any screen-share or collaborative-editing tool you both have access to.

Reminders

  • Pair Programming: Remember, you must work on coding and writing tests as a pair—two people working together at one screen. (Of course you can go ahead and read the assignment and think about it before you meet or in between meetings.)
  • Commit Early, Commit Often: Remember to add and commit your files regularly! In particular, don’t forget to push them when you’re finished.
  • As a general rule (even outside CS 70!), you should not add generated files of any form (e.g., compiled machine code) to a repository when those files can be automatically produced from files already in the repository. We’ll make one exception this week: we’ll ask you to commit a generated meme to share with the grutors.

(When logged in, completion status appears here.)