Introduction

Welcome to COP 3330, Object Oriented Programming. This is the second in a series of four courses:

  1. COP 3014: Introduction to Programming with the C++ Language.
    Prerequisite: MAC 1140.
  2. COP 3330: Object Oriented Programming.
    Prerequisite: CGS 3408 or a comparable course in C or C++ programming. Pre- or Corequisite: COP 3353.
  3. COP 4530: Data Structures, Algorithms and Generic Programming.
    Prerequisites: COP 3330; MAD 2104 or 3107. Pre- or corequisite: CDA 3100.
  4. COP 4531: Complexity and Analysis of Data Structures and Algorithms.
    Prerequisite: CDA 3101; COP 4530; MAD 3105 or 3107; STA 4442.

Each of these courses is highly dependent on its predecessors in the sequence as well as the other stated pre- and co-requisites.

Subject Material

This is a second course in programming, and the last one in the sequence that focusses primarily on programming. The coverage can be divided into three categories, as follows:

Object Based Programming:

Object Oriented Programming:

Data Structures:

All of these topics will be explored in depth in the context of the C++ programming language.

Course Goals and Objectives

At the end of this course, the student should be able to accomplish the following:

Object Based Programming in C++

Object Oriented Programming

Data Structures

In particular, this is the last course that will emphasize object oriented programming. Thus this course serves not only as fundamental background for courses in data structures, algorithms, and generic programming but also as an undercarriage to higher level software engineering courses that emphasize object oriented design and analysis.

Prerequisites

This course assumes that you have a working knowledge of the basics of programming in C or C++. These basics will be reviewed very briefly, but in-depth coverage will be assumed to have taken place in CGS 3408 (or some equivalent previous course).

This course also assumes that you have some experience using Unix and the programming environment supplied to you by our department. These basics will be reviewed briefly also. The details are left to the pre-/co-requisite COP 3502.

To give you a feel of where you should be, here are some things that should be familiar concepts and that are central building blocks to this course:

Programming concepts from C/C++

Implementation skills

Bottom line: A thorough understanding of the material in Chapters 1-11 of [Gaddis] (or Chapters 1-13 of [Dale & Weems], or Chapters 1-8 of [Deitel]), commensurate programming experience, and rudimentary familiarity with the CS Unix environment will be assumed.

Course Work Environment

There is a common environment for remote access that the department supports for this course (and a number of other courses in the curriculum). That environment consists of the following components:

For a complete description of the system see: http://system.cs.fsu.edu/

For distance students and any others who plan to work remotely, be aware that unencrypted telnet access to departmental servers is not supported: only secure (encrypted) connections using SSH are supported. SSH, SecureCRT, or a similar system supporting ssh, is a required addition to your local workstation. See https://system.cs.fsu.edu/ for the latest information on support of SSH and how to get software.

Once you have an ssh client installed, you should begin to familiarize yourself with the electronic environment in the cs.fsu.edu domain. You are entitled to a login account which is essential to participation in this course. New students should see the information at https://system.cs.fsu.edu/newuser to get started.

Work Rules

  1. Do your own work. This means:
    1. Do not copy any code from any source (electronic or printed) other than official course sources such as lecture slides, lecture scripts, and official code distributions.
    2. Do not read any code from other students, and do not provide help for any other student in the class; this means you should neither send nor receive Email containing code with anyone other than course instructors.
    3. You may not read code off another person's computer screen.
    4. Do not seek help from anyone other than the instructors, and do not give help to anyone else in the class.
  2. Get help from your instructors, in class or in the designated discussion forum. This means:
    1. Discussion Board. The preferred method of seeking help is the class discussion board. The forums and topical threads therein provide a historical record of all questions, answers, and explanations. These are extremely useful to all students and can be accessed 24/7. Email may be used, but is appropriate only when code must be quoted or a private matter is concerned. For all other issues, the discussion board should be the primary interactive resource and archive.
    2. Email. To discuss personal matters or code (which should not be posted publicly), seek help from your instructors, in person or via Email. Always bring an up-to-date printout of your source code when seeking help in person. When using Email, put the code you want to discuss in the body of your Email and embed questions inside the code beginning with
      // Q: (insert question here)
      Remember, this is appropriate in Email to instructor(s) but not in a discussion forum (see below).
    3. It is perfectly OK to bring up anything in class (lecture, recitation, or discussion board), and it is encouraged that you participate in these discussions. You may use any material or information said, written, or handed out in class.
    4. You may not put more than two (2) lines of code in any public message (i.e., discussion forum or chat room). No code that is a solution to an assignment should be posted publicly.
  3. Keep your files organized
    1. Create a directory "cop3330" and do all work for this class inside that directory. Make sure this directory has permission code 700. (In the parent directory of cop3330, enter the command "chmod 700 cop3330".)
    2. Create a separate subdirectory, and work within that subdirectory, for each class project or homework assignment.
    3. When you have source code, we advise not keeping the object code or executable. This will save your disk space allocation. (An instance where time is cheaper than space.)

How to Work



Assignment Submission Process

Assignments account for a large portion of the grade for this course, and probably for an even larger portion of learning. To get credit for your hard work, it is important to adhere to our assignment submission standards.

Each assignment is due before midnight (i.e., on or before 11:59:59 PM) on the due date. There is no room for individual flexibility on assignment (or homework) deadlines, because code releases for the class are timed to the assignment deadlines. Allowing an individual to turn in a assignment late would result in either giving that individual access to solutions, or delaying code distributions for the entire class. Neither option is viable, because we cannot extend the ultimate deadline -- the end of the semester. Early submission of assignments is acceptable, however, we cannot give early substantive feedback, assignments submitted early will be assessed together with all other submissions.

In order to maintain uniformity, we will adhere to the time on shell.cs.fsu.edu. To check the time on shell:

All directories and files submitted should be named in accordance with the specifications listed in the assignment document. All filenames should be in lowercase unless otherwise specified. A makefile is required for most assignments.

To submit assignment X:

  1. Copy the file LIB/scripts/submit.sh into your .bin directory.
  2. Change the permissions for submit.sh to rwx------
  3. The new command submit.sh will be used to submit all programming projects.
  4. Copy the project-specific configuration file deliverables.sh into your project directory.
  5. Execute the submission process by entering the command submit.sh deliverables.sh in your project directory. Read the diagnostics on screen.
  6. You should receive two connfirming Email messages from the softbot responsible for receiving, unpacking, and storing your assignments. The first indicates receipt of the submission, the second contains a copy of exactly what was stored in your portfolio from the submission.
  7. Be sure to check your Email for a confirmation that your assignment submission was received. Save this Email. It is your time-stamped proof of submission in the unlikely event that your assignment gets lost.
  8. Also check for the second Email containing the received contents of your submission. Look at this content to be sure that what was received is what you intended to submit.
  9. If you do not receive both confirmation Emails within a few minutes of submission, contact the instruction staff for further advice. Re-submit only if the submit script issued warnings (in red).
  10. See this link for more details.

Course Tour

The Course Syllabus is the primary source for course policies, including the following:

The Course Organizer is a central access point for all "outgoing" course content. Part of the organizer is the Course Calendar. Lecture notes and assignments are released through the organizer/calendar.

Most course communication is handled through the Blackboard course site.