EECS 211: Fundamentals of Computer Programming II

Syllabus – Winter 2017

Tech Lecture Room 3, TuTh, 2–3:20 PM

Course staff & office hours

Jesse Tov* jesse@eecs Ford 2-215 Gladly by appointment
Majed Valad Beigi mvb541@eecs Tech L458 M 12–2
Kyu Oh chankyuoh2018@u Wilkinson M 2–4
Matt Cheung mattcheung2019@u Wilkinson Tu 12–2
Matthew Niemer matthewniemer2018@u Wilkinson Tu 3:30–5:30
Cem Ozer cemozer2018@u Wilkinson Tu 3:30–5:30
Vyas Alwar vyasalwar2018@u Wilkinson Tu 5:30–7:30
Scott Renshaw scottrenshaw2018@u Wilkinson Tu 5:30–7:30
Sophia Lou sophialou2017@u Wilkinson Tu 7:30–9:30
James Whang sungyoonwhang2017@u Wilkinson Tu 7:30–9:30
Nathan Lindquist nathanlindquist2018@u Wilkinson W 2–4
Nneoma Oradiegwu nneomaoradiegwu2019@u Wilkinson W 3–5
Shu-Hung You Ford 2-210 Th 5–7
Wyatt Cook wyattcook2018@u Wilkinson F 12–2
Joe Severini josephseverini2017@u Wilkinson F 2–4
* Instructor Head TA Peer TA

General information

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. Our language will be 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 in-class examinations:

There will be no final exam.



Optional textbooks:

Highly recommend optional book:


Soon we will switch to a full-featured IDE, CLion. For now, however, all you need is a terminal emulator and SSH client to login to Tlab.

Online resources

Class schedule

This table specifies the course schedule; topics are tentative.

4 No lab 5 Administrivia [slides]
10 The edit-compile-run cycle [slides, code]; types, values, variables, assignment [slides] 11 Lab 1: Unix shell [pdf] 12 Control statements and functions [slides, code]
17 Separating I/O from computation [slides, code] Homework 1 [pdf, code] 18 Lab 2: Control structures [pdf] 19 Errors and exceptions [slides, code]
24 Headers and testing [slides, code]; references and the stack [slides] Homework 2 [pdf, code] 25 Lab 3: CLion [pdf] 26 References and the stack [code]; shared pointers and the free store [slides]
31 Linked data structures [code, slides] Homework 3 [pdf, code]
1 Lab 4: Shared pointers [pdf] 2 Invariants and encapsulation [code]
7 Slack / exam review Homework 4 [pdf, code] 8 Lab 5: Linked lists [pdf] 9 First exam
14 Classes [slides, more slides, code] Homework 5 [pdf, code] 15 Lab 6: Classes [pdf] 16 Raw pointers and memory management [slides, code]
21 Generics [slides, code] Homework 6 [pdf, code] 22 Lab 7: Raw pointers [pdf] 23 The STL [slides, code]
28 Virtual functions and inheritance [code] Homework 7 [pdf, code, example]
1 Lab 8: Inheritance [pdf] 2 Object-oriented design [code]
7 Exam review Homework 8 [pdf, code] 8 Lab TBA 9 Second exam

Lab sections

Wed 9 AM Tech L168 Vyas vyasalwar2018@u
10 AM Tech L168 Joe josephseverini2017@u
12 PM Tech L168 Nneoma nneomaoradiegwu2019@u
1 PM Tech LG68 Sophia sophialou2017@u
2 PM Tech LG72 Scott & Kyu scottrenshaw2018@u & chankyuoh2018@u
3 PM Tech M166 Matt C. mattcheung2019@u
4 PM Tech M120 Cem cemozer2018@u
4 PM Tech M128 Wyatt wyattcook2018@u
5 PM Tech F281 James sungyoonwhang2017@u
Thu 9 AM Tech M166 Nathan nathanlindquist2018@u
10 AM Tech M166 Matthew N. matthewniemer2018@u

Course policies

Collaboration and academic integrity

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.


You should submit your homework according to the instructions on the web page for the individual assignments. More TBD.

Late work

Late work will not be accepted.


Your grade will be based on your performance on seven or eight programming assignments and two midterm exams. There will be no final exam.

Each exam counts for 15% of your grade. The balance is divided among the homework assignments, with the first four counting for somewhat less than the last four. Your least favorable homework score will not be counted.

The mapping of raw point totals to letter grades is at the discretion of the instructor.