Welcome to EECS 280! This lecture presents our motivations and big-picture goals, some course logistics, and an introduction to programming in C++.
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: Introductions, The Big Picture
Hello! Let's get started with EECS 280! A notes for async lectures:
|
2: Course Essentials
Let's take a look at the major components of EECS 280 and course resources, all accessible from our website at eecs280.org. 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 it 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 C++ Walkthrough Sessions
Syllabus |
3: Evaluation and Grading
3.1
Here's a very quick look at assignments, exams, and grading policies in EECS 280. We'll come back to review this and add more detail later in the term. (Although it's all there in the syllabus and grade calculator on the website if you'd like to look now.) I also want to emphasize the importance of keeping up with lectures and actively participating…
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. Participation in is optionally graded, worth 3% if it helps you. 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
You'll work small groups of other students to further explore and pratice the course material in lab exercises. Pretty sure I heard a meow at the end of that video… |
5: Machine Code and Compilation
Let's take a break from talking about 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 |
7: A Tour of C++
7.1
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…
|
8: Fundamental Types and Implicit Conversions
Let's take a look at the set of fundamental data types built in to the C++ language, as well as the rules for implicit conversion between them. I'll also point out that explicit conversions are possible, where we directly request a conversion. In some cases this may be necessary. In others, it's stylistically preferrable to make an otherwise implicit conversion more obvious. Here's a few examples:
In C++, the |
9: 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! |
10: Collaboration and Academic Integrity
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. It's also important to do the (sometimes challenging, sometimes frustrating!) work yourself, because otherwise you're not going to get much out of the course. This informs 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. I recommend against using such tools for any code generation, no matter how small. The full version in our syllabus is also worth a read. |
11: Wrapping Up
Just a few parting thoughts. |