EECS 230: Programming for Engineers

Syllabus – Winter 2018

Tech M345, TuTh, 12:30–1:50 PM

Course staff & office hours

Instructor: Jesse Tov jesse@eecs Ford 2-215 Gladly by appointment
TAs: Izaiah Wallace IzaiahWallace2014@u Tech L324 F 1–3 PM
Gino Wang ginowang.sh@u Wilkinson lab M 9:30–11:30 AM

General information

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.

Prerequisites

This course assumes nothing beyond basic computer literacy.

Exams

We will have two in-class examinations:

There will be no final exam.

Resources

Books

Required textbook:

Highly recommend optional book:

Software

The course uses C++ 2014, the currently supported 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.

Online resources

Class schedule

This table specifies the course schedule; topics are tentative.

January
TuWTh
9 Introduction [slides] “What Software Is Made Of” 10 Tool setup [lab] 11 Types, values & I/O [slides] PPP ch. 2–3
16 Control statements and functions [slides, code] Homework 1 17 Small programs [lab] 18 Errors, exceptions, & debugging tactics [slides, code] PPP ch. 4–5
23 How to design programs [slides, code] Homework 2 24 Vectors, functions & debugging [lab] 25 C++ semantics [slides] PPP ch. 6–7
30 Structs [code] Homework 3 31 Structs [lab]
February
TuWTh
1 Classes [code] PPP ch. 8–9
6 Exam review Homework 4 7 Classes [lab] 8 First exam PPP ch. 10–11
13 Class abstraction [slides, code] Homework 5 14 Simple CAESAR [lab] 15 Memory, pointers, and the free store [slides, code] PPP ch. 17
20 Linked data structures [code] Homework 6 21 Pointers vs. references [lab] 22 Binary search trees [code] PPP ch. 18 & 19
27 Generics [slides, code] Homework 7 28 More pointers [lab]
March
TuWTh
1 Inheritance and virtual functions [code] PPP ch. 20 & 21
6 Object-oriented design [slides, code] Homework 8 7 Templates and inheritance [lab] 8 Undefined behavior [code]
13 Second exam 14 No meeting 15 STL / Exam return [slides]

Lab sections

Wed 2 PM Tech LG72 Izaiah IzaiahWallace2014@u
3 PM Tech L170 Gino ginowang.sh@u
4 PM Tech M120 Izaiah IzaiahWallace2014@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.

Homework

You should submit your homework according to the instructions on the web page for the individual assignments. See here for general instructions.

Late work

Late work will not be accepted.

Grades

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.