User Tools

Site Tools


Syllabus for Math 173: Object-Oriented Programming and Design

Instructor: Regis Smith
Èmāiĺ: smithr ăŧ elac dőt edu
Office: G5-111W (323) 265-8887
Office Hours: MTWR 1:30-2:00 in the classroom, or by appointment

Textbook: How to Think Like a Computer Scientist: C++ Version by Allen B. Downey (with revisions)
Textbook (Recommended): Programming: Principles and Practice Using C++ by Bjarne Stroustrup (ISBN: 978-0-321-99278-9)
Textbook (Recommended): Game Programming Patterns by Robert Nystrom

We will use the SFML library for graphics programming. There are several tutorials available.

This course introduces the “object oriented” style of computer programming, using the C++ programming language. You will learn to read, interpret, and write computer programs using appropriate object oriented designs. Interesting mathematical examples will be presented throughout the course.


The primary text for this course is Allen B. Downey's How to Think Like a Computer Scientist: C++ Version. This is a free book. However, the version available on his website is old, so I provide updated chapters here. Please do not mistakenly use the old version.

I also suggest, but do not require, Bjarne Stroustrup's Programming: Principles and Practice Using C++. It is available from a well known online store for around $25 used (as of June 9, 2019). Stroustrup is the creator of C++ and has written a well-known C++ reference which is impossible for beginners to read. The text I am recommending here is the exact opposite, and it includes excellent exercises and advice.

The last text, Game Programming Patterns by Robert Nystrom, is available online for free, as well as a soft cover book. This is a good reference for a few ideas we will use near the end of the course.

Assignments and Grading

You are required to complete five programming projects, including a final project which covers all object oriented concepts discussed in class. In addition, there are quizzes and lab assignments given every class meeting, homework assignments, three terms exams, and a final exam. Daily quizzes will be given from 10:35-10:40. You are required to write computer programs by hand (without the aid of a computer) on quizzes and exams; however, accommodations will be made if you have a documented disability which precludes this (see below). Your final grade is a weighted average of the following.

  • Programming Projects (30%)
  • Daily Quizzes and Homework (10%)
  • Lab Assignments (10%)
  • Three Term Exams (30%)
  • Final Exam (20%)

Some additional short assignments and quizzes will count towards your quiz grade. Final averages are rounded to the nearest tenth of a percent. Letter grades are assigned in the standard way: 90.0%+ A, 80.0%–89.9% B, 70.0%–79.9% C, 60.0%–69.9% D, 0.0–59.9% F. I usually lower cutoffs for letter grades a little, so typically 88% gets you an A, and 67% might get you a C. There is no extra credit.

Some assignments will be given a preliminary grade by a computer program. The final grade on all such assignments will be determined by the instructor. (Sometimes a small error will be graded harshly by the computer, so I will adjust the grade upwards. On the other hand, if a student cheats on an assignment, their grade will be changed to 0.)

Please note that most programming assignments take a considerable amount of time to complete. You must start early and program every day.

Students with Disabilities

Students with disabilities who need reasonable accommodation must provide verification of their disability to Disabled Student Program and Services (DSP&S). DSP&S is located in E1-106 and appointments can be made by calling (323) 265-8787. Upon verification of a disability, DSP&S will provide a letter outlining accommodations which the student must deliver to the instructor. If a student believes that accommodations offered are inappropriate or insufficient, (s)he should seek the assistance of the DSP&S Coordinator and/or the Vice President of Student Services.

Makeup Work

You are required to attend all lectures and labs. Absences are excused only if documentation is provided and verified by the instructor. If you have an excused absence, it is your responsibility to arrange a time to make up missed work. Late work is never accepted without a legitimate excuse.

Academic Honesty (Don't Cheat!)

You are encouraged to discuss homework assignments with others, but the code you write must not be copied from them or elsewhere. In particular, do not copy code from websites on the internet. If you cheat on an assignment, your grade is 0 and you may be suspended from class for two days. Please read the ELAC Academic Honesty Policy which applies to this course.

Learning Outcomes

After completing this course you should be able to

  • write clear, efficient, and correct computer programs to solve computational problems,
  • debug and improve programs written by yourself and others,
  • use external libraries in your computer programs,
  • design and program C++ classes to solve problems, when appropriate,
  • create models by designing and implementing abstract base classes with useful derived classes.

The official course learning outcomes this semester are

  • Design and create an abstract base class and a series of derived classes that model closely related derivational properties and behavior.
  • Determine what an operator function is to complete a C++ program.
  • Write an implementation for the given operator declaration to complete a C++ program.

2019q2m173.txt · Last modified: 2019/07/09 21:15 by Regis Smith