Syllabus

Computer Science 307

Object Oriented Programming in C++

Fall Semester 2019


Instructor: Dr. Richard L. Coleman, former Senior Software Engineer, SAIC Inc. Now retired.
E-mail: rcoleman@cs.uah.edu
CS 307 Web Page: http://www.cs.uah.edu/~rcoleman
Office: N345, Technology Hall
Office Hours: See posted announcement on office door.

Course Catalog Description:

Emphasis upon object-oriented concepts and design in developing student programs in C++. Comparison with other object-oriented languages. Inheritance. Prerequisite: CS 221.

Textbooks (Recommended but not required):
  • Design Patterns, Elements of Reusable Object-Oriented Software Gamma, Erich, Helm, Richard, Johnson, Ralph, Vlissides, John, Addison-Wesley, 1995

  • Beginning Visual C++ 2012 Horton, Ivor, Wiley Publishing, 2012 or the latest version of Horton's book.
    Unfortunately this book is now out of print but it is a great reference if you can find an old copy

Course Objectives:

      When you have completed this course you should:
  • Have an in-depth understanding of the principles of Software Engineering with a focus on Object Oriented Programming.
  • Have an understanding of Object Oriented Design with an emphasis on Design Patterns.
  • Have an understaiding of C++ programming techniques and syntax with an emphasis on object oriented programming.
  • Have hands-on practical experience in the above topics by means of independent programming assignments.
  • Have hands-on practical experience in building Graphical User Interface applications with a focus on Object Oriented Design
Course Subject Matter:
    The course subject matter is divided into three distinct sections:
  • Part 1: Object Oriented Programming Basics, OOP Design, and advanced topics in ANSI Standard C++.
  • Part 2: The Standard C++ Library, The Standard Template Library, and Design Patterns.
  • Part 3: The Graphical User Interface in OOP.

Programming Assignments:
  • There will be 2 major programming assignments each designed to provide experience in the topics being covered in class. Details of these assignments will be posted on the web site and discussed in class. A third programming assignment will be given for extra credit.
  • You will be required to turn in some program planning written work prior to the date that the programs are due. Work turned in MUST meet the following requirements:

    • The written documentation for each programming assignment must be turned in via e-mail by the designated date in the syllabus.
    • Electronic copies of the entire Visual Studio programming assignment Solution folder must be submitted compressed into a zip file and sent to the instructor via e-mail by the designated date. Project zip files must include the entire solution directory and all its' sub-directories. The project must be compatible with Microsoft Visual C++ 2010 or 2012 version. VS 2013 or later IS NOT ACCEPTABLE. Before submitting it would be a good idea to copy the zip file to a different location on your hard drive, and unzip it. Then try to open the project in MS Visual Studio, compile, and run it. This will ensure that everything was included in the zip file. If the zip file is too big to be e-mailed you may place it on the K drive in K:\LABS\cs307\rcoleman and then send an e-mail to inform the instructor to retrieve it.
    • For details on the written documentation for each programming assignment see the Programming Assignments link on this web page.

  • All programming assignments should be handed in on time, as specified in the course schedule.
  • Each programming assignment is worth 50 points for a total of 100 points. This is the equivalent of one test, which should emphasize the importance of the programming assignments.
  • A grace period beyond the due date for each programming assignment has been posted in the course schedule (with the on-line syllabus). Programming assignments may be turned in without penalty up to that date. Programming assignments will NOT be accepted after that date. No exceptions.

Final Grade:
Tests(3) 100 pts each 300
Programming assignments(2+)
P3 can get up to 15 points extra credit
50 pts each 100
Final Exam 200 pts 200
  TOTAL 600
Note on WX grade:
The administration of UAH has established a grade of WX or faculty initiated student withdrawal. Basically, this allows the instructor to withdraw a student from class without any request from the student. It's primary purpose is to allow a faculty member to remove a student from class who is not attending class or putting forth any effort to complete the class work. This grade will not be used to avoid a grade of F for the course.


UAlert Emergency Notification System:
UAHuntsville has implemented the UAlert emergency notification system. UAlert allows you to receive time-sensitive emergency messages in the form of e-mail, voice mail, and text messages.

Everyone who has a UAH e-mail address will receive emergency alerts to their campus e-mail address. In order to also receive text and voice message alerts, you are asked to provide up-to-date phone contact information. Participation in UAlert text and voice messaging is optional, but enrollment is strongly encouraged. You can’t be reached through UAlert unless you participate. The information you supply is considered confidential and will not be shared or used for purposes other than emergency notification.

To review your UAlert account, add or update phone and alternate e-mail addresses, and set the priority for your contact methods, please visit the UAlert web site: http://ualert.uah.edu.




Topical Outline

This Schedule is Subject to Change
In the Due column DDD = Drop Dead Date, the final
date a programming assignment will be accepted.
Expires midnight of that date.


  Date* Topic Assignment Due
1 Thursday,
August 22
Introduction and Course Outline,
   
2 Tuesday,
August 27
The "Objects" of OOP
   
3 Thursday,
August 29
Thinking of Objects - CRC Exercise    
4 Tuesday,
September 3
OO Software Engineering with the
     Unified Process Life Cycle Model
   
5 Thursday,
September 5
Instructor will be out of town.

An assignment will be posted on the Announcements page.
   
6 Tuesday,
September 10
OO Development with Agile
Brief overview of program 1
Programming Assignment 1 posted
 
7 Thursday,
September 12
Drawing SW pictures with UML.
Using StarUML and ArgoUML
Capability Maturity Model Integrated
   
8 Tuesday,
September 17
First team meeting on Program 1
This meeting will focus on defining
the requirements and objects for program 1.

   
9 Thursday,
September 19
Object Oriented Requirements Analysis
Writing good software. Every time!
Object Oriented Design
  Prog. 1 Preliminary Class Diagram
10 Tuesday,
September 24
Programming Bits and Pieces
A review of some C++ programming techniques
useful for the first programming assignment.
   
11 Thursday,
September 26
Finish Programming Bits and Pieces
Collaborative Learning Activity.
Review for first test.
  DDD Prog. 1 Class Diagram
Prog. 1 Class Outline
12 Tuesday,
October 1

First Exam

   
  Thursday,
October 3
Object Oriented Testing

Second team meeting on Program 1
This meeting will focus on the
design of program 1. The discussion will
focus on classes and algorithms.

  Prog 1 Functionality Outline
DDD Prog 1 Class Outline
13 Tuesday,
October 8
Design Patterns:
      Using DPs to design better software
        Strategy, Observer, Decorator
        Factory Method, Abstract Factory, Singleton

Programming Assignment 2 posted
 
-- Thursday,
October 10
No Class - Fall Break.

   
14 Tuesday,
October 15
Design Patterns
        Command, Adapter, Facade, Template Method
        Iterator, Composite, State
        Proxy, Bridge, Builder,
  Program 1
DDD Prog 1 Functionality Outline
16 Thursday,
October 17
Design Patterns
        Chain of Responsibility, Flyweight

        Interpreter, Mediator, Memento
        Prototype, Visitor

   
17 Tuesday,
October 22
Team Meeting on Program 2:
   Adding design patterns to Program 2
  Prog 2 Preliminary Class Diagram
DDD Prog 1
18 Thursday,
October 24
Collaborative Learning Activity.
Review for second test.
   
19 Tuesday,
October 29

Second Exam

   
20 Thursday,
October 31
Principles of GUI Development
GUI Projects 1 (Message box),
   and 2 (Simple Window)
  Prog 2 Class Outline
DDD Prog 2 PCD
21 Tuesday,
November 5
GUI Project 3 (MFC Dialog)
Suggestions for implementing Program 3
Programming Assignment 3 posted
     Program 3 is extra credit
 
22 Thursday,
November 7
GUI Project 4 (WinForms)
  Prog 2 Functionality Outline
DDD Prog 2 Class Outline
23 Tuesday,
November 12
GUI Project 5 (Part 1)
   
24 Thursday,
November 14
GUI Project 5 (Part 2)
   
25 Tuesday,
November 19
GUI Project 5 (Part 3)
  DDD Prog 2 Functionality Outline
26 Thursday,
November 21
GUI Project 5 (Part 4)
  Program 2
27 Tuesday,
November 26

Third Exam

   Third test is open-note, open-book, in lab.
   
  Thursday,
November 28
No Class - Thanksgiving Holiday    
28 Tuesday,
December 3
Last Day of Class
Finish GUI Project 5 - Adding load and save
Review for Final
  Program 3
DDD Program 2
Last day to turn in GUI exercises
Must be turned in prior to class
  Tuesday,
December 10
3:00 - 5:30 p.m.

Final Exam

  DDD Program 3
Must be turned in BEFORE the final starts.
* The dates on this topical outline are approximate and subject to change and probably already have if you are reading this.

** Any time programming assignment or document due dates fall on the date of an examination, these may be turned in at the next class period without penalty.

1DDD = Drop Dead Date, i.e. last day to turn in programming assignment. A programming assignment will NOT be accepted after its' DDD expires. No assignments will be accepted after the DDD except under extenuating circumstances and then, only if you have checked with the instructor beforehand.
Note: "My hard drive crashed", "I lost my thumb drive and all my source code", "I had to reformat my hard drive", etc. will NOT be considered extenuating circumstances.

OFFICIAL UAH COMPUTER SCIENCE DEPARTMENT POLICIES AND PROCEDURES
  1. Responsibilities of the teacher
    1. Provide a detailed syllabus. This syllabus should list office hours, course objectives, textbooks, references, prerequisites, and grading policy/method of assessment.
    2. Come to class prepared, on time, and make full use of the class time.
    3. Provide timely and adequate feedback on grades. Return graded material promptly.
    4. Conduct final exam at the time designated in the class schedule.
    5. Not assign new work (i.e. not listed on syllabus) that is due in last two weeks of classes.
    6. Avoid leaving the examination room without a proctor. Provide paper for exams.
    7. Make reasonable use of the assigned textbook.
    8. Check students have proper prerequisites. Instructor does not waive assigned prerequisites.
    9. Report all incidences of academic misconduct (cheating) to the Department Head and Vice President for Student Affairs.

  2. Responsibilities of the student (see also, Student Handbook Article II)
    1. Come to class with the proper prerequisites, well prepared, on time, and make full use of the class time.
    2. Provide adequate notice of anticipated absences and take full responsibility for finding out about missed work, announcements, and assignments.
    3. Submit assessment material on time and submit only your own work (see Integrity).
    4. Do not allow other students to copy your work.
    5. Read and understand the syllabus and follow announced policies.

  3. Integrity
    We expect CS instructors and students to conduct themselves in a professional manner. Students are subject to all the provisions in the UAH Code of Student Conduct, which is available free from the Office of Admissions and Records. Information on plagiarism and other forms of misconduct is presented in the Student Handbook Article III. Departments are obliged to report all student misconduct to the Office of Student Affairs.

  4. Complaint Procedure
    If you have difficulties or complaints related to this course, your first action should be to discuss them with your instructor. If such a discussion would be uncomfortable for you or fails to resolve your difficulties, you should ask for a meeting with the Chair of the Computer Science Department in Technology Hall N-300, info@cs.uah.edu, telephone 256-824-6088. If you still are unsatisfied, you should discuss the matter with Dr. Emanuel Waddell, Associate Dean of the College of Science.  The Associate Dean's office is MSB C207, telephone number 256-824-6844 and email address adeancos@uah.edu..

  5. Students with disabilities
    Your instructor would like to hear from anyone who has a disability that may require a modification of seating, testing, or other class procedures. Please see instructor after class or during office hours to discuss appropriate modifications. You should also contact Student Disability Services in in WH 317 (Ph. 824-1997) or online at http://www.uah.edu/health-and-wellness/disability-support/requesting-services for further assistance.

  6. Student computer account
    Students enrolled in any CS course are entitled to an account on the departmental computer network. Use of such an account is subject to departmental and university policies. To apply for an account, and see the current policies, go to the departmental web site at http://www.cs.uah.edu/account/

  7. Examination policy
    In response to past student complaints about problems during examinations, the Computer Science Department has developed the following guidelines for in-class examinations in all courses.
    1. Come to the exam prepared to complete it without a break. If you think you will need a break, please inform the proctor before the exam if possible.
    2. Do not communicate with other students. Talk only to the instructor.
    3. Whenever you leave the exam room turn in your exam.
    4. Use only the paper provided by the instructor for all writing.
    5. If assigned a specific seat, remain in that seat.
    6. Unless specifically permitted by the instructor, use no books or other reference materials. Do not bring calculators, computers, pocket-organizers, cell phones, pagers, or other electronic devices to the exam.