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 TBA
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 Homework 2 24 Vectors, functions & debugging 25 C++ semantics PPP ch. 6–7
30 Structs Homework 3 31 Structs
February
TuWTh
1 Classes PPP ch. 8–9
6 Exam review Homework 4 7 Classes 8 First exam PPP ch. 10–11
13 Class abstraction Homework 5 14 Simple CAESAR 15 Memory, pointers, and the free store PPP ch. 17
20 Linked data structures Homework 6 21 Pointers vs. references 22 Binary search trees PPP ch. 18 & 19
27 Generics Homework 7 28 More pointers
March
TuWTh
1 Inheritance and virtual functions PPP ch. 20 & 21
6 Object-oriented design Homework 8 7 Templates and inheritance 8 Exam review
13 Second exam 14 No meeting 15 STL / Exam return

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.