CS3060 (Spring 2013)

Object-Oriented Programming Using C++

Quick Info

Object-Oriented Programming Using C++
Brian Parks (bparks AT uccs DOT edu)
Tuesday 4:45 PM - 7:20 PM, ENGR 233
Office Hours: by appointment only

About the course

The course catalog has the following to say about this course:

The principal goals of this course are: 1) to learn the fundamentals of object-oriented programming, 2) to gain skill and proficiency in using the C++ programming language, 3) to exercise the C++ language in implementing a moderate sized software system designed with objects. Prer., CS 2060 and CS 2080.

This format for the class is new and different, so we'll be working through it together. In the past, it was a lecture-style class, with several projects of various size and difficulty. This semester, we will spend part of the time each week dealing with one topic in either OOP, C++, or techniques for "large" programming projects and the remainder will be "lab time." "Lab time" will be an opportunity to work through real examples of the material and/or work through projects to be submitted for a grade (the bulk of which is still expected to be completed outside of class) with me present to field questions as they arise.

As of right now, I am still deciding on a text, but the likelihood is that there will not be a required text. A recommended text is Bruce Eckel's Thinking in C++, which is available for free on his web site at http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html (g here for the actual book). Of course, it is also available from various sources in the traditional "dead tree" variety. I haven't nailed down exactly what topics we'll cover when, but I'll try to give you a heads-up of what we'll be covering a week or two beforehand so you can read ahead. It is up to you whether you choose to follow along in a text or not, but I expect you to come to class with some knowledge of the topic at hand (i.e.: it should not be your first exposure to the material).

Grades will be assigned based on the total points system. There will be an opportunity for between 1000 and 1150 points; I will divide by 1000. There will be two exams (a midterm and final) each worth 200 points. The remaining 800 – 950 points will be distributed in varying quantities among projects of varying size. This will all be better nailed down shortly after the start of the semester. I will not be posting grades to Blackboard as I have in previous semesters; please track your own grades.

Each programming assignment is expected to be submitted on paper at the beginning of class on the day on which it is due. Each assignment will have slightly different deliverables, so check the individual assignments for details.

The final exam will be cumulative. For fairness, both will be closed book, closed notes. Each will consist of an in-class programming-oriented (though still most likely written) portion worth half the points and a take-home portion worth the remainder of the points testing general concepts.


Lecture Schedule

Topics will be noted as they are determined

  1. Tuesday, 22 January — C Refresher
  2. Tuesday, 29 January — Projects with multiple files
  3. Tuesday, 5 February — Objects in C++, Operator Overloading
  4. *Tuesday, 12 February — Insertion Operator, Destructors, Overloading
  5. Tuesday, 19 February — const, static, Heap
  6. *Tuesday, 26 February — Copy constructors, Signals, Sockets
  7. Tuesday, 5 March — Inheritance, Polymorphism, Threads
  8. Tuesday, 12 March — MIDTERM EXAM
  9. *Tuesday, 19 March — Templates
  10. Tuesday, 26 March — SPRING BREAK
  11. *Tuesday, 2 April — HTTP Echo Server
  12. Tuesday, 9 April — Modular HTTP Server with Dynamic Loading
  13. Tuesday, 16 April — HTTP Server with GET arguments
  14. *Tuesday, 23 April — Modular HTTP Server with POST arguments
  15. Tuesday, 30 April — TBD
  16. *Tuesday, 7 May — TBD
  17. Tuesday, 14 May (4:45 – 7:15) — FINAL EXAM


  1. C++, I/O — due Tuesday, 12 February (100 points)
  2. Objects, Stack Arithmetic — due Tuesday, 26 February (100 points)
  3. TCP Echo Server — due Tuesday, 19 March (100 points)
  4. TCP Chatroom — due Tuesday, 2 April (150 points) — Extend PA3 to allow multiple concurrent connections (i.e.: add threading where each thread handles one accepted socket). When a message comes in on one of the connections, send the message and date to ALL connections. It may help to keep an array of threads and/or sockets, so you can simply iterate through.
  5. HTTP Server with "Documents" — due Tuesday, 23 April (150 points)
  6. TBD — due Tuesday, 7 May (100 points)

All programming assignments should have the following comment block at the top of each file:

/* Name of file (e.g.: HelloWorld.cc)
 * Your name
 * CS3060.1301, Programming Assignment #N
 * A brief description of what the file does

Each header file should have an "INCLUDEGUARD" (see Appendix A of Eckel's book)

Administrative Details

Computer Science Department Policy is that "students in 1000- and 2000-level CS courses can have at most four absences, after which they would lose at least one letter grade." The instructor does not believe in formally calling roll at the beginning of every class, but excessive absences will certainly negatively impact the student's grade. Making alternate arrangements to get the material in class (online videos, reading the book, copying notes from a classmate) is not an excuse for excessive absences. Surfing the net, playing games, IMing, Facebooking, etc. or leaving class consistently early will be considered an act of absenteeism.

Military Students: If you are a military student with the potential of being called to military service and /or training during the course of the semester, you need to contact me the first week of classes to determine if it is feasible for you to remain in the class.

Students with Disabilities: Students with disabilities are to provide their letters of certification and accommodation within the first two weeks of class.

Important Dates

  1. 6 February — Census Date: Last day to drop without instructor signature.
  2. 5 April — Last day to drop with instructor signature, without dean's signature.

NOTE: Classes cannot be dropped online after February 6th — you must use the paper drop/add form after this date AND have it signed by your instructor.

N.B.: After the census date, the instructor will not sign a drop/add form unless in his opinion you are passing the course, extenuating circumstances notwithstanding.