COP3330: Object-oriented Programming in C++ (Spring 2019)
Instructor: Peixiang Zhao
| Syllabus | Announcement | Schedule | Assignment | Resources |
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, deques, 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!
- Lecture Time: Tuesday/Thursday 11am --12:15pm
- Lecture Venue: HWC 3100 (map)
- Instructor: Peixiang Zhao
- Office: 262 James Love building, Phone: 645-0346
- Email: zhao AT cs DOT fsu DOT edu
- Office hours: Tuesday 2pm-4pm, or by appointment.
- Section 1: Monday 8am - 8:50am, MCH 315A
- Section 2: Monday 11:15am - 12:05pm, MCH 315A
- Section 3: Tuesday 9:30am - 10:20am , MCH 315A
- Section 4: Tuesday 6:50pm - 7:40pm , MCH 315A
- Section 5: Wednesday 8am - 8:50am , MCH 315A
- Teaching Assitants:
- Hussain Islam (Recitation sections 1 & 2 & 5; Assignment; Exam)
- Office: Dittmer 336
- Email: islam AT cs DOT fsu DOT edu
- Office hours: Monday 9am - 11am
- Tejas Hasarali (Recitation sections 3 & 4 & 5; Assignment; Exam)
- Office: Dittmer 336
- Email: tdh17 AT my DOT fsu DOT edu
- Office hours: Wednesday 2pm - 4pm
- Cameron Farzaneh (Assignment)
- Office: CS Majors Lab
- Email: email@example.com
- Office hours: Friday 11am - 12pm
- Course website: http://www.cs.fsu.edu/~zhao/cop3330/main.html
- C++ Primer, 5th edition, by Stanley Lippman, Josee Lajoie, and Barbara Moo. ISBN: 978-0321714114, Addison-Wesley, 2013.
- The C++ Programming Language, 4th edition, by Bjarne Stroustrup. ISBN: 978-0321563842, Addison-Wesley, 2013.
- Thinking in C++, 2nd edition, by Bruce Eckel. ISBN: 978-0139798092, Prentice Hall, 2000.
- The C++ Standard Library - A Tutorial and Reference, by Nicolai Josuttis. ISBN: 978-0321623218, Addison-Wesley, 2012.
A C- or better in COP3014, or an equivalent introductory programming course.
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.
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 or 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.
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.
- Every student must write his/her own code and homework. You are responsible for ensuring that your code/documentation/results/homeworks are adequately protected and not accessible to others.
- Students in the class should have a computer account from the Computer Science Department (sign up for one if you don't already have one), and this can and should be used to store project files and access the compiler, g++, used in the course. Although we do not specify any editor/compiler/IDE you have to use to write your code (we will give several recommendations in the class), we do, however, only use the software, including make and g++, on linprog.cs.fsu.edu to evaluate your submissions. Therefore, it is the students' responsibility to make your code compilable and runnable on this linux server.
- Besides your source code, the submissions should include a makefile such that running make will create the required executable. Programs that do not compile result in zero point. Therefore, make sure your code compiles without any errors before you submit it! Furthermore, please also include a text file named readme, indicating what resources (people you talk to, books you read, website or YouTube videos you watch, for instance) you resort to in order to accomplish your assignment. The submissions should be ONE compressed file (in either .zip or .tar.gz format) including all your source code and the makefile.
- Project will be due 11:59pm on the due date. Late submissions will be accepted ONE day after the due date with the deduction of 50% of your raw points. Submissions more than a day late will not be accepted. All the programming projects should be submitted via Canvas.
- Projects will be assessed a grade in two stages. First an objective assessment will be done to test compilation and correctness of the running program. Then a member of the instructional staff will add subjective assessment based on the test results and source code. Note that You must understand your project work. If you are asked to explain your work while you fail to do so, you may be assigned a grade of zero.
- For the programming assignment specific rules and policies, please refer to the Assignment page.
- Attendance Policy: Excused absences in classes include documented illness from the Student Health Center or family physicians, deaths in the family and other documented crises, call to active military duty or jury duty, religious holy days, and official University activities. These absences will be accommodated in a way that does not arbitrarily penalize students who have a valid excuse. Consideration will also be given to students whose dependent children experience serious
illness. Any other excuses that are not medical or emergency related will be at the discretion of the instructor, and must be approved in advance. If you miss a test for any reason (without advance approval), you must notify me of the issue within 24 hours of the missed exam.
- Academic Honor Policy: The Florida State University Academic Honor Policy outlines the University's expectations for the integrity of students' academic work, the procedures for resolving alleged violations of those expectations, and the rights and responsibilities of students and faculty members throughout the process. Students are responsible for reading the Academic Honor Policy and for living up to their pledge to "...be honest and truthful and... [to] strive for personal and
institutional integrity at Florida State University." (Florida State University Academic Honor Policy can be found at http://fda.fsu.edu/Academics/Academic-Honor-Policy.)
In addition to this information, please be aware of the following:
- Students are expected to do their own work on any classwork or test submitted for a grade. It is NOT appropriate to work on assignments with other students or to give or receive solutions to or from anyone before an assignment is due and handed in (by all parties).
- When you turn in work with your name on it, you are representing that work as your own. If your submission matches with high similarity (measured and evaluated by both our TAs and the plagiarism detection software) that of another students or online resources, this is considered a violation of the Academic Honor Code.
- Discussing solutions and techniques on assignments with other students after the assignment has been graded and handed back is okay, and encouraged.
- Examples found in the course textbook may be used in programs, as long as the source is cited. This is appropriate, as some assignments may be based on program examples found in the book or contain other code that is provided to you in the assignment specification.
- DO NOT post your assignment code solutions to publicly searchable web sites. This includes online compilers/version management systems that may auto-post your code in a publicly searchable way. If you do, somebody else may copy your solutions --- and you'll be on the hook for providing it to them! Use common sense!
- A first violation of the honor code will result, at minimum (but not limited to), a penalty of a 0 grade on the assignment or test involved, along with a reduced letter grade in the course. Any second violation of the honor code will result in an automatic F in the course, and possible proceedings before the Honor Court.
- Syllabus Change Policy: Except for changes that substantially affect implementation of the evaluation (grading) statement, this syllabus is a guide for the course and is subject to change with advance notice.
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), firstname.lastname@example.org, http://www.disabilitycenter.fsu.edu/.
The course grade will break down as follows,
- Quiz: 10%.
- Midterm exam:15%;
- Final exam:30%;
Your final grade will be assigned as follows,
- Any regrading request should be submitted to the TA(s) within one week since the graded deliverables are handed out to students, or the grades are uploaded to Canvas. Otherwise, the request will not be considered.
- Students are also required to pass the ABET/SMALC program assessment instrument that is measured in this course. See ABET/SMALC Assessment section for details.
- Graduate students taking the course under a co-listed CGS 5xxx course number on S/U basis must earn a B- or better for a Satisfactory (S) grade.
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.
- A: 100 - 92.00; A-: 91.99 - 90.00;
- B+: 89.99 - 88.00; B: 87.99 - 82.00; B-: 81.99 - 80.00;
- C+: 79.99 - 78.00; C: 77.99 - 72.00; C-: 71.99 - 70.00;
- D: 69.99 - 65.00; D-: 64.99 - 60.00 ;
- F: 59.99 - 0.
Last updated: Oct.1st, 2018