Syllabus

Computer Science 221

Programming in C++ - Data Structures

Summer Semester 2019



Instructor: Dr. Rick Coleman, former Senior Software Engineer, SAIC Inc. Now retired.
E-mail: rcoleman@cs.uah.edu
CS 221 Web Page: http://www.cs.uah.edu/~rcoleman
Office: N345, Technology Hall
Office Hours: By appointment

Course Catalog Description:

Continuation of CS 121 with emphasis on advanced features of the C++ programming language, including pointers, recursion, classes, inheritance, and polymorphism. Introduction to fundamental data structures including linked lists, stacks, queues, and binary search trees. Basic sorting and searching algorithms. Practical experience in the design, development, and documentation of significant object-oriented programs. Prerequisites: CS 121, MA 113 (Precalculus Trigonometry). Co-requisite: MA 171 (Calculus A).

Textbook (Recommended but not required):
  • C++ Plus Data Structures, 4th ed., Dale, Nell and Teague David,. Jones and Bartlet Publishers, 2003. (This text is optional and not required because of its expense. If you would like to have a copy for reference in your own library any previous edition would be good, and definitely a lot cheaper.)

Course Objectives:

      When you have completed this course you should:
  • Have an understanding of advanced programming using the C++ language including pointers, data structures, and classes.
  • Be familiar with the principles of Software Engineering including algorithm analysis, software design, and documentation with an emphasis on the importance of software testing.
  • Have an understanding of the fundamental principles of algorithm development and program design, development, and testing with a brief introduction to the Unified Modeling Language (UML).
  • Have an understanding of the abstract data types (ADTs): queues, stacks, linked lists, binary trees, and graphs.
  • Have experience in the implementation of abstract data types in C++ programming assignments.
  • Have the ability to apply knowledge of computing and mathematics appropriate for practical experience in the above topics by means of independent programming assignments.

Programming Assignments:
  • There will be 4 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.
  • You will be required to turn in a report known as a Sprint Report on each programming assignment. Standard forms for this report will be provided when each assignment is posted.
  • Electronic copies of the source code (.cpp and .h files) must be submitted via e-mail by the designated date. Do not turn in any project files with the following extensions .sln, .dsp, .dsw, .ncb, .opt, .plg, .obj, .ilk, .pch, .pdb, .idb, .vcproj, .user, or .exe. Do not turn in a source file containing a main() function. The instructor will compile and run your source code using a special test driver containg a main() function. Source code that will not compile will receive no credit.
  • All programming assignments should be handed in on time, as specified in the course schedule.
  • Each programming assignment is worth 25 points for a total of 100 points (the equivalent of one test).
  • A grace period beyond the due date for each programming assignment has been posted in the course schedule (in the on-line syllabus). Programming assignments may be turned in without penalty up to midnight of that date. Programming assignments will NOT be accepted after that date. No Exceptions.

Final Grade:
Tests(3) 100 pts each 300
Programming assignments(4) 25 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 UAHuntsville 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 and Reading Assignments
This Schedule is Subject to Change
  Date* Topic Text Assignment Due**
1 Wednesday
May 29
Introduction
   1. Course overview and requirements.
   2. UAH Web Page.

Back to Basics
   Review of basic C/C++ programming
   Using Visual Studio C++
Chapter 1  
2 Monday
June 3
Software Engineering
   Classical steps in Software Engineering
   The Software Life Cycle
   Documenting the Software Process
   The Agile approach to Software Development
   The Capability Maturity Model Integrated

Chapter 2 & supplemental
material from instructor.
 
3 Wednesday
June 5
Unified Modeling Language (UML)
   Development of UML
   Symbols of UML
   Using UML to diagram program design

Software Testing
   Approaches to testing
   Types of testing
   Writing tests for programming assignments
   Debugging with the VS Debugger

Chapters 2, 3.3 & supplemental
material from instructor.
 
4 Monday
June 10
C++ Foundation for all ADTs
   Pointers
Chapter/Section 3.3
 
5 Wednesday
June 12
Data Structures and Classes
   1. Introduction to Object Oriented Programming
   2. Structures: The simplest of objects
   3. Classes: Structures on Steroids

Preparing programming assignments

Programming assignment 1 posted.

Begin Prog1, Sprint 1
Supplemental material
from instructor.
 
6 Monday
June 17
Abstract Data Types as Collections
   Introduction to Abstract Data Types
   Strings: a first ADT
   Introduction to STL: Vectors as Arrays

Hints on implementing and testing Program 1.

Collaborative Learning Activity: preparation for Test 1.
   
7 Wednesday
June 19

First Exam


End Prog1, Sprint 1
Begin Prog1, Sprint 2
   
8 Monday
June 24
Introduction to Linked Data Structures

Linked Lists
   1. ADT: Lists--Sorted and Unsorted

Speciality Lists    Stacks and Queues
   Lists in the STL:
      list, deque, stack, queue, priority_queue

Programming assignment 2 posted.

Begin Prog2, Sprint 1
Chapters 8, 9.2  
9 Wednesday
June 26
Hints on implementing and testing
     programming assignment 2


Binary Trees
   Introduction to Trees
   Binary Search Trees
   Searching a binary tree
   Inserting into a binary tree
   Deleting from a binary tree
   Hold on to your source code!!!
   Traversing a binary tree

Programming Assignment 3 posted.

End Prog1, Sprint 2
Begin Prog3, Sprint 1
Chapter 9.2 Program 1 code and sprint report.
10 Monday
July 1
Other types of trees
   AVL trees, Heaps, 2-3 trees, b-trees, tries

Collaborative Learning Activity: preparation for Test 2.


End Prog2, Sprint 1
Begin Prog2, Sprint 2
   
11 Wednesday
July 3

Second Exam

   
12 Monday
July 8
Discussion of results of second exam

Hints on implementing and testing
     programming assignment 3


Analysis of Algorithms
   The yard stick for measuring
      program efficiency.

Recursion
   Programming with Recursion
   Classic examples of Recursion

End Prog3, Sprint 1
Begin Prog3, Sprint 2
Chapters 2.6, 7 DDD Program 1
 
13 Wednesday
July 10
Graphs
   1. Graph Basics
   2. Implementing Graphs
   3. Graph Algorithms

Sets
   1. Set Basics
   2. Implementing Sets
   3. Sets in the STL

End Prog2, Sprint 2
Chapter 9.3 Program 2 and sprint report.
 
14 Monday
July 15
Hash Tables
   1. Hash Table Basics
   2. Collision Resolution
   3. Hash Functions
Programming assignment 4 posted.

Collaborative Learning Activity: preparation for Test 3.

End Prog3, Sprint 2
Begin Prog4, Sprint 1
  Program 3 and sprint report
 
15 Wednesday
July 17

Third Exam

   
16 Monday
July 22
Discussion of results of third exam

Sorting Algorithms
   1. Bubble Sort
   2. Insertion Sort
   3. Tree Sort
   4. Selection Sort
   5. Heap Sort
   6. Quick Sort
   7. Merge Sort
   8. Shell Sort
   9. Proxmap Sort
   10. Radix Sort

Chapter 10.1, 10.4 DDD Program 2
17 Wednesday
July 24
Hints on implementing and testing
   programming assignment 4

Topics in Advanced C++ Programming
   Building your own Templates
   Function overloading
   Namespaces
   Handling exceptions
   Run time type identification
   Threading

End Prog4, Sprint 1
Begin Prog4, Sprint 2
Chapter 10
and supplemental material
from instructor.
DDD Program 3
 
18 Monday
July 29
Last Day of Class

"It's fun to be a computer Geek!"

End Prog4, Sprint 2
Supplemental material
from instructor.
Program 4 and sprint report
-- Wednesday,
July 31
6:30 - 9:00 p.m.
Final Exam Final exam will be
comprehensive
DDD Program 4
No programs accepted after the exam 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.