Course Introduction, Intro to C++

Welcome to EECS 280! This lecture presents our motivations and big-picture goals, some course logistics, and an introduction to programming in C++.

Updated Fall 2024

Participation credit for async lectures is automatically recorded once you complete the embedded exercises. Take a look at the top left of the page. You'll need to sign in with your @umich.edu Google account so that we know it's you.

Completion of individual exercises is tracked in the navigation panel to the left and section headers within the page. Once all exercises are complete, you'll see a "Completion Verified" message.

To earn participation credit, complete the lecture by 11:59pm on the day the lecture is scheduled.


1: The Big Picture

What's EECS 280 all about? Why are we here? Why do we care?


While the overall goals of EECS 280 haven't changed since… checks video… 2021… a few specific things have! I'll make sure to call out anything specific you need to know for the current term.

Where course content has changed or I figure out a better way to teach something, I'll also make sure to record updated videos. Sometimes I reuse a video and point out a few minor differences. Because course policies change slightly each term, this lecture has more cases of that than usual…



2: Course Essentials

Let's take a look at the major parts of the course, including resources and websites you'll use to engage with the course and how the overall course is graded.


Don't worry if this all seems a bit overwhelming. There are a lot of different components to the course and a bunch of different resources to get used to. You can find everything from eecs280.org, and we'll try to keep you up-to-date with the most relevant material. I also highly encourage that you ask questions if you're feeling lost - on Ed, Discord, in office hours, in lab, etc.

Setup Tutorials
Here's my recommended approach to getting your computer set up for C++ development:


C++ Walkthrough Sessions
Join us for a live walkthrough session via Zoom on C++ development including set up, compilers, makefiles, C++ IDEs, EECS 280 project workflow, and open Q&A.

  • Wednesday, Aug 28 at 7-8:30pm via Zoom.
  • Separate, concurrent sessions for Windows/Mac.
  • Links on eecs280.org. Recordings will be posted.


3: Evaluation and Grading
3.1 Not Started

It's not terribly exciting, but let's take a bit of time to discuss assignment weights, exams, and overall grading in the course.


3.1 Exercise: Evaluation and Grading

Here's your first participation exercise! Fill in the blanks below.

are the only part of the grade computation that is curved.

In previous terms, were not graded, but now they are worth an optional 3%.

A student scoring 89.7% overall (with 91.8% on projects, 86.8% on exams) would earn a grade of .

A student scoring 78.2% overall (with 58.1% on projects, 93.25% on exams) would earn a grade of .



4: Lab Groups and Exercises

Lectures are followed up with labs, where you work with small groups of other students to further explore and pratice the course material.




5: Machine Code and Compilation

Let's take a break from talking about course logistics and dive into our first sequence of course material! We'll start with a brief introduction to the nature of C++ as a compiled language.




6: Demo: A First Progam in C++

So, what does it actually look like to write a program in C++, compile it, and run it?


There were several commands in there, including the g++ hello.cpp -o hello.exe that I used to compile the program. Don't worry about memorizing any of this right now. The tutorials and C++ setup walkthrough sessions will go into some more depth on these.



7: A Tour of C++
7.1 Not Started

Now, we'll spend some time on a brief, whirlwind-style tour of some of the characteristics of C++. This is just a high-level overview, and we'll spend more time on a lot of details throughout the rest of the course.


It's worth looking at expressions and variables in a bit more detail, especially the way variables and their types relate to the underlying memory used in our program.


Understanding variables as a name for an object in memory also helps us understand what would happen if a variable were declared, but not properly initialized before we use it…


Finally, we'll look at a few ways the compiler checks for common errors in programs before we're allowed to run them, using rules of scope and static typing.


7.1 Exercise: C++ Fundamentals

Complete each of the tasks described in the comments.


Sample solution…

  #include <iostream>
  using namespace std;

  int main() {

    // Task 1: Define a variable called price with inital value 7.99.
    double price = 7.99;

    // Task 2: Define a variable called quantity with initial value 4.
    //         The variable's type should only allow whole numbers.
    int quantity = 4;

    // Task 3: Print the result of multiplying the variables to cout.
    //         (Use the unqualified name cout, not std::cout.)
    cout << price * quantity << endl;
  }



8: Projects and Autograder

You get to exercise the skills you learn in lecture and lab in six large-scale programming projects throughout the course, designed to solidify your understanding and give you a chance to build some neat applications with real-world appeal!




9: Collaboration and Honor Code

We want you to learn with and from each other! Enjoying the class with others and having a network you can reach out to for help is highly encouraged. At the same time, we want to make sure everyone has an opportunity to learn for themselves and that nobody takes credit for someone else's work. We follow the UM CoE Honor Code.


The stuff I said in that video all still applies… but that chart is pretty old. Here's a more recent chart from the terms of EECS 280 (and excluding ENGR 101) that I've been involved with. The takeaway is the same - we only report cases to the honor council where there is compelling evidence plagiarism occurred.


Generative AI Policy
Finally, it's worth mentioning our Generative AI Policy. The short version - you're encouraged to use tools like ChatGPT, Copilot, etc. to help you learn, but you aren't allowed to use them to do your work for you. The full version in our syllabus is also worth a read.

In almost all cases in EECS 280, I highly recommend against using generative AI tools for writing ANY code, regardless of the amount. A huge part of this course is building up your own programming skills.



10: Wrapping Up

Just a few parting thoughts.


You've reached the end of this lecture! Your work on any exercises will be saved if you re-open this page in the same web browser.

Participation Credit
Make sure to sign in to the page, complete each of the exercises, and double check the participation indicator at the top left of this page to ensure you've earned credit.