Course staff & office hours
Jesse Tov* | jesse@eecs
| Mudd 3510 | Gladly by appointment |
Kevin Qiu¶ | KevinQiu2020@u
| Tech M338 | Su 3–5 PM |
Jayden Soni¶ | JaydenSoni2020@u
| Mudd 3538 | M 12–2 PM |
Michael Cuevas¶ | MichaelCuevas2021@u
| Mudd 3538 | M 6–8 PM |
Elise Lee¶ | EliseLee2021@u
| Mudd 3538 | Tu 10 AM–12 PM |
Kieran Bondy¶ | KieranBondy2021@u
| Mudd 3538 | Tu 12–2 PM |
Jordan Zax¶ | JordanZax2021@u
| Mudd 3538 | Tu 12–2 PM |
Paul Farcasanu¶ | PaulFarcasanu2021@u
| Tech M338 | Tu 6–8 PM |
Sarah O’Brien¶ | SarahOBrien2020@u
| Mudd 3538 | W 12–2 PM |
Alex Rhee¶ | AlexanderRhee2021@u
| Mudd 3538 | W 2–4 PM |
Samuel Hill† | SamuelHill2022@u
| Mudd 3108 | W 4–6 PM |
Aaron Kaneti¶ | AaronKaneti2020@u
| Mudd 3538 | W 6–8 PM |
Matt Cheung¶ | MattCheung2019@u
| Tech M338 | W 8–10 PM |
Michael Ji¶ | MichaelJi2021@u
| Mudd 3538 | Th 12–2 PM |
Finley Lau¶ | FinleyLau2021@u
| Mudd 3538 | Th 6–8 PM |
Corinne Burger¶ | CorinneBurger2020@u
| Tech M338 | Th 8–10 PM |
German Espinosa† | GermanEspinosa@u
| Mudd 3538 | F 2–4 PM |
Mario Lizano¶ | MarioLizano2020@u
| Mudd 3538 | F 4–6 PM |
* Instructor | † Head TA | ¶ Peer TA |
Note: Tech M338 is Wilkinson Lab.
EECS 211 teaches foundational software design skills at a
small-to-medium scale. We aim to provide a bridge from the
student-oriented How to Design Programs curriculum to real,
industry-standard languages and tools. We begin by learning the basics
of imperative programming and manual memory management using the C
programming language. Then we transition to C++, which provides
abstraction mechanisms such as classes and templates that we use to
express our design ideas. Topics include expressions, statements, types,
functions, branches and iteration, user-defined types, data hiding,
basic UNIX shell usage, and testing.
EECS 111 or proficiency with the HtDP Design Recipe.
We will have two 80-minute, in-class exams:
There will be no final exam.
Optional textbooks:
Highly recommend optional book:
In a few weeks, we will switch to a full-featured IDE (integrated
development environment). For now, however, all you need is a terminal
emulator and SSH client to
login to Tlab.
This table specifies the course schedule; topics are tentative.
You may not collaborate with anyone on any of the exams. You
may not use any electronic tools, including phones, tablets,
netbooks, laptops, desktop computers, etc. If in doubt, ask a
member of the course staff.
Some homework assignments will be completed with an assigned partner
or team. You must collaborate with your assigned partner or team, as
specified, on homework assignments. You may request help from any staff
member on homework. (When you are working with a partner, we strongly
recommend that you request help with your partner.) You may use the Piazza
bulletin board to ask questions regarding assignments, so long as
your questions (and answers) do not reveal information regarding
solutions. You may not get any help from anyone else on a homework
assignment; all material submitted must be your own. If in doubt, ask a
member of the course staff.
Providing illicit help to another student is also cheating, and will
be punished the same as receiving illicit help. It is your
responsibility to safeguard your own work.
Students who cheat will be reported to the appropriate dean.
If you are unclear on any of these policies, please ask a
member of the course staff.
For each homework, we provide a TGZ or ZIP file containing starter
files. You must download this TGZ or ZIP file to start your homework, as
it has a Makefile or CMakeLists.txt with the correct
compiler settings and “starter” source files with the correct names that
the grading tests will expect.
Submit your code via GSC. (Please note that your GSC username must be
your 6- or 7-character Northwestern NetID.) Submit only files you have
added or changed. This means any .c, .cpp, or
.h files you edit or create, necessary game resource files, and
Makefile or CMakeLists.txt if you happen to change
that.
Do not ever submit executable files or other build products (meaning
those in your build or cmake-build-debug directory).
Late code will not be accepted.
Late self evaluations may be accepted at the instructor’s discretion;
please email and ask.
Your grade will be based on your performance on seven weekly programming
assignments, one two-week final project, and two midterm exams. There
will be no final exam.
Each exam counts for 15% of your grade. The final project counts for
20%. The balance (50%) is divided equally between your best six of the
seven weekly homeworks.
The mapping of raw point totals to letter grades is at the
discretion of the instructor.
General information
Prerequisites
Assessment
Resources
Books
Software
Online resources
Class schedule
January Tu W Th
8
Administrivia
[slides];
the edit-compile-run cycle
[slides]
9
Lab 1: Unix shell
[pdf]
10
Types, values & variables
[slides];
separate compilation
[slides]
15
Arrays and iteration
[slides];
pointers
[slides]
16
Lab 2
17
More pointers
[slides]
Homework 1
[pdf]
22
Dynamic memory allocation
[slides]
23
Lab 3: String functions
[pdf]
24
Linked data structures
[slides]
Homework 2
[pdf]
29
C Wrap Up
[slides]
30
– Cold —
31
The C++ Object Lifecycle
[slides]
Homework 3
[pdf]
February Tu W Th
5
First exam
6
– No labs —
7
Intro to GE211: model vs. UI
[C++ source:
zip or
pdf]
12
C++ for the C programmer
[slides,
source:
zip or
pdf]
13
Lab 4
[pdf,
zip]
Homework 4
[pdf]
14
Access control
[slides,
source:
zip or
pdf]
19
RAII
[slides,
zip];
figuring stuff out
[slides,
zip]
20
Lab 5
[pdf,
zip]
Homework 5
[pdf,
zip]
21
More RAII
[slides,
zip]
26
Generics
[zip]
27
Lab 6
[pdf,
zip]
28
Polymorphism
[pdf,
zip]
Due Friday at 11:59 PM
Final Project Proposal
[pdf,
code];
Due Saturday at 11:59 PM
Homework 6
[pdf,
code]
March Tu W Th
5
More polymorphism
[pdf,
zip]
6
Lab 7
[pdf,
zip]
7
Exam review
12
Second exam
13
No lab!
14
Exam return / STL
[pdf,
zip]
Final Project
[pdf,
code]
Lab sections
W
9 AM
Tech M166
Elise
EliseLee2021@u
10 AM
Tech LG68
Finley & Michael J.
FinleyLau2021@u
& MichaelJi2021@u
12 PM
Tech M166
Jayden
JaydenSoni2020@u
1 PM
Tech L168
Corinne & Matt
CorinneBurger2020@u
& MattCheung2019@u
3 PM
Annenberg G31
Jordan
JordanZax2021@u
4 PM
Tech F280
Kieran & Sarah
KieranBondy2021@u
& SarahOBrien2020@u
4 PM
Tech LG68
Alex
AlexanderRhee2021@u
5 PM
Tech LG62
Aaron & Mario
AaronKaneti2020@u
&
MarioLizano2020@u
Th
9 AM
Tech LG62
Paul
PaulFarcasanu2021@u
10 AM
Tech M349
Kevin & Michael C.
KevinQiu2020@u
& MichaelCuevas2021@u
Course policies
Collaboration and academic integrity
Homework
Code submission
Self evaluation
Every homework assignment will be followed by a 48-hour self evaluation
period on GSC. The self evalution will account for a potentially
significant portion of your grade–possibly upwards of 50% some weeks.
In other words, to get full credit for the code that you submit, you
must do self evaluation as well.
Late work
Grades