Syllabus

Computer Science 221

Programming in C++ - Data Structures

Fall Semester 2013



Instructor: Matthew D. Beard, Software Engineer, Lockheed Martin Space Systems.
E-mail: mdb0013@cs.uah.edu
CS 221 Web Page: http://www.cs.uah.edu/~mdb0013
Office: N334, 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):
Course Objectives:
Programming Assignments:
Final Grade:
Tests (3) 100 pts each 300
Programming assignments (5) 30 pts each 150
Final Exam 200 pts 200
  TOTAL 650


The grading scale will be no stricter than:

At/Above 585 pts. for a 4.0;
At/Above 520 pts. for a 3.0;
At/Above 455 pts. for a 2.0;
At/Above 430 pts. (>66%) for a 1.0;
<=66% for a 0.0;


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.




Topical Outline and Reading Assignments
This Schedule is Subject to Change
  Date* Topic Assignment Due**
1 Wednesday
August 21
Course Introduction
   Course overview and requirements.
   CS 221 web page.
Chapter 1 and supplemental
material from instructor.
HW0
Due Friday, Aug. 23  
2 Monday
August 26
Back to Basics
   Review of basic C/C++ programming
   Using Visual Studio C++
   Preparing programming assignments,

Chapter 2 and supplemental
material from instructor
 
3 Wednesday
August 28
Software Engineering
   Classical steps in Software Engineering
   Documenting the software process
Supplemental material
from instructor
 
  Monday
September 2
No Class - Labor Day - University Holiday
 
 
4 Wednesday
September 4
Software Engineering
   The Software Life Cycle
   The Capability Maturity Model Integrated
Unified Modeling Language (UML)
Supplemental material
from instructor
 
5 Monday
September 9
Software Testing
   Approaches to testing
   Types of testing
   Writing tests for programming assignments
   Debugging with the VS Debugger
Supplemental material
from instructor
 
6 Wednesday
September 11
C++ Foundation for all ADTs
   Pointers
Programming assignment 1 posted
Chapters 2, 3.3 & supplemental
material from instructor.
 
7 Monday
September 16
C++ Foundation for all ADTs
   Data Structures and Classes

Chapter 2 & supplemental
material from instructor.
 
8 Wednesday
September 18
C++ Foundation for all ADTs
   Finish Classes

Hints on implementing and testing
     programming assignment 1

Chapter 2 & supplemental
material from instructor.
 
9 Monday
September 23
Abstract Data Types as Collections
   Introduction to Abstract Data Types
Chapter 2 & supplemental
material from instructor.
Prog 1 Docs
10 Wednesday
September 25
Abstract Data Types as Collections
   Strings: a first ADT
   Introduction to STL: Vectors as Arrays
Chapter 2 & supplemental
material from instructor.
 
11 Monday
September 30
First Exam
   
12 Wednesday
October 2
Introduction to Linked Data Structures
Exam 1 Review
Chapters 3, 4 and
supplemental material from instructor
Program 1
13 Monday
October 7
Linked Lists
   ADT: Lists--Sorted and Unsorted
Programming assignment 2 posted
Chapters 5, 6 and
supplemental material from instructor
 
14 Wednesday
October 9
Speciality Lists    Stacks and Queues
   Lists in the STL:
      list, deque, stack, queue, priority_queue

Chapters 8 and
supplemental material from instructor
 
15 Monday
October 14
Binary Trees
   Introduction to Trees
   Binary Search Trees
Chapter 9.2 and
supplemental material from instructor
 
16 Wednesday
October 16
Other types of trees
   AVL trees, Heaps, 2-3 trees, b-trees, tries
   Hints on implementing and testing
    programming assignment 2

Chapter 9.2 and
supplemental material from instructor
Prog 2 Docs
Program 1 DDD1
17 Monday
October 21
Second Exam

   
18 Wednesday
October 23
Analysis of Algorithms

   Hints on implementing and testing
    programming assignment 2

Recursion
   Programming with Recursion

Chapter 2.6, 7 and
supplemental material from instructor
 
19 Monday
October 28
Graphs
   Graph Basics
   Implementing Graphs
   Graph Algorithms

Programming assignment 3 posted
Chapter 9.3 and supplemental
material from instructor.
 
20 Wednesday
October 30
Sets
   Set Basics
   Implementing Sets
   Sets in the STL
Chapter 9.4 and supplemental
material from instructor.
Program 2
21 Monday
November 4
Hash Tables
   Hash Table Basics
   Collision Resolution
   Hash Functions
Chapter 10.3 and supplemental
material from instructor.
 
22 Wednesday
November 6
Third Exam
  Program 2 DDD1
23 Monday
November 11
Sorting Algorithms
   Bubble Sort
   Insertion Sort
   Tree Sort
   Selection Sort
   Heap Sort
   Quick Sort
   Merge Sort

Programming assignment 4 posted
Chapter 10.1, 10.4 and supplemental
material from instructor.
Program 3 Docs
24 Wednesday
November 13
Sorting Algorithms
   Shell Sort
   Proxmap Sort
   Radix Sort

Hints on implementing and testing
   programming assignment 4

Chapter 10.1, 10.4 and supplemental
material from instructor.
 
25 Monday
November 18
Topics in Advanced C++ Programming
   Building your own Templates
   Function overloading
   Namespaces
Supplemental material from instructor. Program 3
26 Wednesday
November 20
Topics in Advanced C++ Programming
   Handling exceptions
   Run time type identification
   Threading
Supplemental material
from instructor
Prog 4 Docs
27 Monday
November 25
Topics in Advanced C++ Programming
   C/C++: Header files
   C/C++: The C Preprocessor
Supplemental material
from instructor
Program 3 DDD1
  Wednesday
November 27
No Class - Thanksgiving Holiday
   
28 Monday
December 2
Last Day of Class
   "It's fun to be a computer Geek!"
Supplemental material
from instructor
Program 4
  Friday, December 6
11:30 a.m. - 2:00 p.m.
Final Exam
Final exam will be comprehensive Program 4 DDD1
* 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.
    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 contact Professor Phil Richards, Chair of the Computer Science Department. His office is in Technology Hall N-300, info@cs.uah.edu, telephone 824-6088. If you are still unsatisfied, you should discuss the matter with Dr. Dan Rochowiak, Associate Dean of the College of Science, drochowi@cs.uah.edu. Dr. Rochowiak's office is CS 206 Materials Science Building.

  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 Development Services in UC 113 (Ph. 824-6203) 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.