Course staff & office hours
||Ford 2-215||Tu 3:30–5, Th 10–12, and gladly by appointment|
||Tech M338 (Wilkinson)||Th 5–7|
||Tech M338 (Wilkinson)||M 4–6|
EECS 230 teaches foundational programming skills with an emphasis on professionalism. In order to learn to program, we need a language; our language will be C++, but our focus will be on design and pragmatics, not the language itself. Topics include expressions, types, functions, branches and iteration, user-defined types, data hiding, source control, and testing.
This course assumes nothing beyond basic computer literacy.
We will have two in-class examinations:
- Tuesday, May 3
- Tuesday, May 31
There will be no final exam.
- Bjarne Stroustrup, Programming: Principles and Practice, Second Edition.
Highly recommend optional book:
- Scott Meyers, Effective Modern C++.
The course uses C++ 2014, the current version of the C++ programming language; earlier versions of C++ may not work for all the code we write. The instructor will be using
a cross-platform IDE, and we recommend that you use it as well. CLion ordinarily costs money, but student licenses are available for free.
If you are using windows, you need to install two other programs before CLion:
The first lab will guide you through this setup.
If you don’t like CLion, you may use any conforming C++ compiler (GCC, Clang, MSVC) you wish with any programming environment (XCode, Visual Studio, Emacs, Vim, Sublime Text, etc.). Homework assignments will build using the CMake build system, which supports a variety of programming environments and probably isn’t very difficult to get to work with yours. However, CLion is the only supported option—with anything else, you’re on your own.
- Piazza discussion board—ask questions here!
- cplusplus.com, a comprehensive C++ standard library reference
This table specifies the course schedule; topics are tentative.
|30 Tool setup [lab]||31 Introduction / Hello C++ [code] “What Software Is Made Of”|
|5 Types, values & I/O [slides] PPP ch. 2–3||6 Small programs [lab]||7 Control statements and functions [slides, code] Homework 1|
|12 Errors, exceptions, & debugging tactics [slides, code] PPP ch. 4–5||13 Vectors, functions & debugging [lab]||14 How to design programs [slides, code] Homework 2|
|19 C++ semantics [slides] PPP ch. 6–7||20 Structs [lab]||21 Structs [code] Homework 3|
|26 Classes [code] PPP ch. 8–9||27 Classes [lab]||28 Exam review Homework 4|
|3 First exam PPP ch. 10–11||4 Simple CAESAR [lab]||5 Class abstraction [slides, code] Homework 5|
|10 Memory, pointers, and the free store [slides, code] PPP ch. 17||11 Pointers vs. references [lab]||12 Linked data structures [code] Homework 6|
|17 Binary search trees [code] PPP ch. 18 & 19||18 More pointers [lab]||19 Generics [code] Homework 7|
|24 Inheritance and virtual functions [code] PPP ch. 20 & 21||25 Templates and inheritance [lab]||26 Design patterns Homework 8|
|May 31 Second exam||1 Exam return||2|
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. See here for general instructions.
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.