Course staff & office hours
Instructor: | Jesse Tov | jesse@eecs
| Tu/Th 3:30–4:30 PM in Mudd 3510 |
---|---|---|---|
Grad TA: | Mohammad Kavousi | kavousi@u
| Office hours calendar |
Peer TAs: | Ann Pigott | AnnPigott2021@u
| |
Brando Socarras | BrandoSocarras2022@u
| ||
David Jin | DavidJin2022@u
| ||
Elise Lee | EliseLee2021@u
| ||
Margot Sobota | MargaretSobota2022@u
| ||
Max Chapin | MaxwellChapin2022@u
| ||
Naythen Farr | NaythenFarr2022@u
| ||
Priya Kini | PriyaKini2022@u
|
General information
CS 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 languages 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.
Prerequisites
CS 111 or proficiency with the HtDP Design Recipe. No further experience is required or expected.
Assessment
We will have two 80-minute, in-class exams:
- Tuesday, February 4
- Tuesday, March 10
There will be no final exam.
Resources
References
- C reference
- CS 211 Style Manual—follow this!
- C++ reference
- GE211 reference
- If you can’t find your answer in one of the above references, you should try our Campuswire discussion board
Software
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 your shell account.
- 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.
- Linux, UNIX, etc.: You need an SSH client (e.g., from Ubuntu’s openssh-client package) and probably a terminal emulator (e.g., xterm or rxvt).
Books
Optional textbooks:
- Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, Second Edition. Prentice Hall, 1988.
- The classic C book from the language’s inventors. The language has evolved somewhat in the 30+ years since the second (and most recent) edition was published, but it’s still the clearest introduction I know of.
- Bjarne Stroustrup, Programming: Principles and Practice, Second Edition. Addison-Wesley, 2014.
- Introductory programming book by the primary designer of C++. It’s a bit quirky, but a reasonably gentle introduction by the genius behind the madness.
- Paul Deitel & Harvey Deitel, C++ How to Program, 10th Edition. Pearson, 2017.
- Big, heavy, comprehensive textbook—likely overkill unless you like that sort of thing.
- Scott Meyers, Effective Modern C++. O’Reilly, 2014.
- For after the course, not during. If you want to continue using C++ and use it well, this book will teach you a lot.
Class schedule
This table specifies the course schedule; topics are tentative.
January | ||
---|---|---|
Tu | W | Th |
7 Administrivia [slides]; the edit–compile–run cycle [slides] | 8 Lab 1: Unix shell | 9 Typed imperative programming [slides]; separate compilation [slides] |
14 Separate compilation, ctd. [slides]; arrays and iteration [slides]; | 15 Lab 2: Control Statments | 16 Pointers [slides] Homework 1 |
21 Dynamic memory allocation [slides] | 22 Lab 3: Strings | 23 Linked data structures [slides] Homework 2 |
28 Linked data structures (ctd.) [slides] | 29 Lab 4: Debugging | 30 Linked data structures (ctd.) [slides]; C Wrap Up [slides] Homework 3 |
February | ||
Tu | W | Th |
4 First exam | 5 – No labs — | 6 C++ for the C Programmer [slides] Homework 4 |
11 Intro to GE211: The Model [slides, code, listing] | 12 Lab 5: Welcome to C++ | 13 Intro to GE211: The UI [slides, code, listing] |
18 Access control [slides, code, listing] Homework 5 | 19 Lab 6: Key Racer | 20 RAII [slides, code, listing] Starting at 11:59 PM: Rolling submission of final project proposals |
25 Dynamic polymorphism [slides, code, listing] Homework 6 | 26 Lab 7: Bejewelled | 27 No class Final project proposal |
March | ||
Tu | W | Th |
3 Object-Oriented Design [slides, code, listing] | 4 Lab 8: Asteroids | 5 Object-Oriented Design, ctd. [code, listing] |
10 Second exam | 11 – No labs — | 12 Exam return / STL Final project |
Lab sections
W | 9 AM | Tech L168 | Mohini Gupta | MohiniGupta2022@u
|
---|---|---|---|---|
10 AM | Tech L168 | Max Chapin | MaxwellChapin2022@u
| |
12 PM | Tech M166 | Mohammad Kavousi | kavousi@u
| |
1 PM | Tech L168 | Elise Lee | EliseLee2021@u
| |
3 PM | Tech F280 | Naythen Farr | NaythenFarr2022@u
| |
4 PM | Elder 032 | Margot Sobota | MargaretSobota2022@u
| |
4 PM | Locy 314 | Ann Pigott | AnnPigott2021@u
| |
5 PM | Tech LG72 | Priya Kini | PriyaKini2022@u
| |
Th | 9 AM | Elder 032 | David Jin | DavidJin2022@u
|
10 AM | Elder 032 | Brando Socarras | BrandoSocarras2022@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 Campuswire discussion 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 are subject to the same penalties as those who receive 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.
Homework
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.
Code submission
TBA.Self evaluation
Each 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
Late code will not be accepted.
Late self evaluations may be accepted at the Grad TA’s or instructor’s discretion; please email and ask.
Grades
Your grade will be based on these components:
What | Value | When | Count | Excused |
---|---|---|---|---|
Programming assignments | 50% | Thursdays | 6 | 1 |
In-class midterm exams | 30% | Tu 2/4 & Tu 3/10 | 2 | 0 |
Final project proposal | 5% | Fr 2/21 – Th 2/27 | 1 | 0 |
Two-week final project | 15% | Tu 3/12 | 1 | 0 |
Lab section attendance | * | weekly | 8 | 2 |
* Lab section attendance may be used for close calls or to tweak weights in your favor.
The mapping of raw point totals to letter grades is TBD.