Course staff & office hours
|Jesse Tov*||Ford 2-215||Gladly by appointment|
|Majed Valad Beigi†||Tech L458||M 12–2|
|Kyu Oh¶||Wilkinson||M 2–4|
|Matt Cheung¶||Wilkinson||Tu 12–2|
|Matthew Niemer¶||Wilkinson||Tu 3:30–5:30|
|Cem Ozer¶||Wilkinson||Tu 3:30–5:30|
|Vyas Alwar¶||Wilkinson||Tu 5:30–7:30|
|Scott Renshaw¶||Wilkinson||Tu 5:30–7:30|
|Sophia Lou¶||Wilkinson||Tu 7:30–9:30|
|James Whang¶||Wilkinson||Tu 7:30–9:30|
|Nathan Lindquist¶||Wilkinson||W 2–4|
|Nneoma Oradiegwu¶||Wilkinson||W 3–5|
|Shu-Hung You†||Ford 2-210||Th 5–7|
|Wyatt Cook¶||Wilkinson||F 12–2|
|Joe Severini¶||Wilkinson||F 2–4|
|* Instructor||† Head TA||¶ Peer TA|
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:
- Thursday, February 9
- Thursday, March 9
There will be no final exam.
- Bjarne Stroustrup, Programming: Principles and Practice, Second Edition.
- Paul Deitel & Harvey Deitel, C++ How to Program, 9th Edition.
Highly recommend optional book:
- Scott Meyers, Effective Modern C++.
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.
- Mac: Your computer comes with Terminal.app and OpenSSH, so you have everything you need. (Your instructor uses iTerm2 instead of Terminal.app.)
- Windows: PuTTY is a free program that does both terminal emulation and SSH. The easiest way to install it is the MSI installer.
- EECS 211 C++ Style Manual—follow this!
- Piazza discussion board—ask questions here!
- cppreference.com, a comprehensive reference to the C++ standard(s)
- cplusplus.com, a another comprehensive C++ reference
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|
|Wed||9 AM||Tech L168||Vyas|
|10 AM||Tech L168||Joe|
|12 PM||Tech L168||Nneoma|
|1 PM||Tech LG68||Sophia|
|2 PM||Tech LG72||Scott & Kyu|
|3 PM||Tech M166||Matt C.|
|4 PM||Tech M120||Cem|
|4 PM||Tech M128||Wyatt|
|5 PM||Tech F281||James|
|Thu||9 AM||Tech M166||Nathan|
|10 AM||Tech M166||Matthew N.|
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 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.