Instructor: Regis Smith
Èmāiĺ: smithr ăŧ elac dőt edu
Office Hours: Tuesday/Thursday 2:00-4:00pm via Zoom, anytime via email, or by appointment
Moodle Site: https://moodle.whistlin.com
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
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.
Important general concepts from computer science will be emphasized, including understanding how a computer works at a basic level, designing programs and checking them for correctness, and learning general object-oriented techniques and recursion. The C++ language is used primarily, so we will learn C++ programming and design concepts such as RAII, polymorphism, and inheritance.
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.
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.
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 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.
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.
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.
After completing this course you should be able to
The official course learning outcomes this semester are