COP3330: Object-oriented Programming in C++ (Spring 2020)

Instructor: Peixiang Zhao

| Syllabus | Announcement | Schedule | Assignment | Resources |

Course Description

The objective of this course is to encourage you to learn the C++ programming language and use C++ to solve real-world computational problems in a correct, systematic, and efficient way.

Writing correct, efficient, easy-to-understand, and reusable C++ code is a challenging task, due in particular to the fact that C++ is a large, complicated language. This course will primarily help you learn the object-oriented programming paradigm in modern C++. In addition, It will also expose you to the use and design of other advanced C++ features, including the standard template library (STL), whose wide-spread availability have changed the way modern C++ code is written. In general, this course involves intensive programming, understanding, and creativity. We hope this course is an enjoyable learning experience, and will be helpful in your future explorations in the broader computer science, data science, and information technology domains.

This course will expose you to the fundamental features in C++ as well as help you design software using the object-oriented paradigms of programming. This course is the next step towards becoming a good C++ coder for the real world. We plan to cover the following topics in this course (tentative): (1) Basic programming principles and C++ coding standards; (2) Review of C++ fundamentals and non-OO features; (3) Class design and data abstraction; (4) Object-oriented programming: constructors, destructors, operator overloading, friends, type conversion, inheritance, dynamic vs. static binding, virtual functions, abstract classes; (5) I/O: streams, file I/O, stream manipulators, stream errors, string streams; (6) Basic data strctures, such as vectors, list, stacks, queues, using C++ standard library (STL); (7) Templates and generic programming.

Acknowledgement: The course materials are adapted and revised from those prepared by Bob Myers, Sonia Haiduc, Xin Yuan, Andy Wang, and Piyush Kumar. Thank you!

Basic Information





A C- or better in COP3014, or an equivalent introductory programming course.

Format and Activities

  • Lectures: we encourage (and appreciate!) students to attend classes, because effective lectures rely on students' participation to raise questions and contribute in discussions. We will provide lecture notes and related readings before class, which will be posted on the schedule page.

  • Programming Assignments: The best way to learn C++ is by programming. Unless you learn how to solve problems and program solutions to problems, I promise that you will get burned on the exams and thus for your final grade. There will be around one programming project biweekly in this class (Except the midterm and final weeks).
  • Quizzes: There will be a series of quizzes with aims of (1) testing basic understanding of key concepts, knowledge, and programming techniques, and (2) calling for attendence in classes and recitations. Quizzes may be given in either lectures or recitation classes. No makeup quizzes will be given (no exceptions).

  • Exam: There will be an in-class midterm exam held in the middle of the semester, and a final exam at the end of the semester. Both exams are in the normally scheduled classroom. On-campus students will be required to bring and show your Student ID on test days. The final exam will be cumulative. Tentative test dates are listed in the Schedule page. Be aware that these may change slightly depending on where we are in the course materials.

  • ABET/SMALC Assessment: This course is one of the Computer Science department courses designated for assessing certain student outcomes, required by SMALC/SACS and ABET for accreditation purposes. The specific outcome being measured in this course is: Students will be able to construct computer software solutions for simple programming problems. This assessment will be done with 2 different programming assignments in the course, designated as such because they will incorporate multiple aspects of programming skills learned to date. They will be scored in several areas on a scale of values including "Ineffective", "Effective", and "Highly Effective". Each student must achieve an overall score of "Effective" or higher (Earning 70% of available assignment points will count as "Effective") on at least ONE of the two designated assignments. The assignment writeup for each will designate it as a programming assignment used to measure the ABET Outcome Assessment.

    Course Policies

    General Policy

    Students with Disabilities

    Americans With Disabilities Act: Students with disabilities needing academic accommodation should: (1) register with and provide documentation to the Student Disability Resource Center; (2) bring a letter to the instructor indicating the need for accommodation and what type. This syllabus and other class materials are available in alternative format upon request. For more information about services available to FSU students with disabilities, contact the: Student Disability Resource Center: 874 Traditions Way, 108 Student Services Building, Florida State University, Tallahassee, FL 32306-4167. (850) 644-9566 (voice), (850) 644-8504 (TDD),,

    Grading Policy

    The course grade will break down as follows,

    Your final grade will be assigned as follows,

    This table indicates minimum guaranteed grades. Under certain limited circumstances (e.g., an unreasonably hard exam), we may select more generous ranges or scale the scores to adjust.

    Last updated: Dec.24th, 2019