Syllabus
Computer Science 221 - 03
Programming in C++ - Data Structures
Fall 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
|
Assignment
|
Due**
|
1
|
Wednesday August 21
|
Course Introduction
Course overview and requirements.
CS 221 web page.
|
Chapter 1 and supplemental
material from instructor.
|
|
2
|
Monday August 26
|
Back to Basics
Review of basic C/C++ programming
Using Visual Studio C++
|
Chapter 2 and supplemental
material from instructor
|
|
3
|
Wednesday August 28
|
Software Engineering
Classical steps in Software Engineering
The Software Life Cycle
The Agile approach to SW development
The Capability Maturity Model Integrated
|
Supplemental material
from instructor
|
|
--
|
Monday September 2
|
Labor Day - No class - University Holiday
|
|
|
4
|
Wednesday September 4
|
C++ Foundation for all ADTs
Pointers
|
Supplemental material
from instructor
|
|
5
|
Monday September 9
|
Programming assignments following Scrum
C++ Foundation for all ADTs
Data Structures and Classes
Begin Prog1, Sprint 1
|
Programming assignment 1 posted
Chapters 2, 3.3 & supplemental
material from instructor.
|
|
6
|
Wednesday September 11
|
C++ Foundation for all ADTs
Finish Data Structures and Classes
Hints on implementing and testing
programming assignment 1
Unified Modeling Language (UML)
Development of UML
Symbols of UML
Using UML to diagram program design
|
|
|
7
|
Monday September 16
|
Software Testing
Approaches to testing
Types of testing
Debugging with the VS Debugger
End Prog1, Sprint 1
Begin Prog1, Sprint 2
|
Chapter 2 & supplemental
material from instructor.
|
|
8
|
Wednesday September 18
|
Abstract Data Types as Collections
Introduction to Abstract Data Types
Strings: a first ADT
Introduction to STL: Vectors as Arrays
|
Chapter 2 & supplemental
material from instructor.
|
|
9
|
Monday September 23
|
Collaborative learning activity
Review for first exam
End Prog1, Sprint 2
|
|
Prog. 1 Code and Sprint Report
|
10
|
Wednesday September 25
|
First Exam
|
|
|
11
|
Monday September 30
|
Discussion of first exam results
Introduction to Linked Data Structures
Linked Lists
ADT: Lists--Sorted and Unsorted
Begin Prog2, Sprint 1
|
Programming assignment 2 posted
Chapters 3, 4 and supplemental
material from instructor.
|
DDD1 Program 1
|
12
|
Wednesday October 2
|
Instructor's demonstration of programming
assignment 1 and how it was tested.
Speciality Lists
Stacks and Queues
Lists in the STL:
list, deque, stack, queue, priority_queue
Hints on implementing and testing
programming assignment 2
|
Chapters 5, 6 and
supplemental material from instructor
|
|
13
|
Monday October 7
|
Binary Trees
Introduction to Trees
Binary Search Trees
Searching a binary tree
Inserting into a binary tree
Hold on to your source code!!!
Deleting from a binary tree
Traversing a binary tree
End Prog2, Sprint 1
Begin Prog2, Sprint 2
Begin Prog3, Sprint 1
|
Programming assignment 3 posted
Chapters 8, 9.2 and
supplemental material from instructor
|
|
14
|
Wednesday October 9
|
Other types of trees
AVL trees, Heaps, 2-3 trees, b-trees, tries
Hints on implementing and testing
programming assignment 3
|
|
|
15
|
Monday October 14
|
Collaborative learning activity
Review for second exam
End Prog2, Sprint 2
|
|
Prog. 2 Code and Sprint Report
|
16
|
Wednesday October 16
|
Second Exam
|
|
|
17
|
Monday October 21
|
Discussion of results of second exam
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
|
Chapter 2.6 and supplemental
material from instructor.
Chapter 7 and supplemental
material from instructor.
|
DDD1 Program 2
|
18
|
Wednesday October 23
|
Instructor's demonstration of programming
assignment 2 and how it was tested.
Sets
Set Basics
Implementing Sets
Sets in the STL
Hash Tables
Hash Table Basics
Collision Resolution
Hash Functions
|
Chapter 9.4 and supplemental
material from instructor.
Chapter 10.3 and supplemental
material from instructor.
|
|
19
|
Monday October 28
|
Graphs
Graph Basics
Implementing Graphs
Graph Algorithms
Begin Prog 4, Sprint 1
|
Programming Assignment 4 posted
Chapter 9.3 and supplemental
material from instructor.
|
|
20
|
Wednesday October 30
|
Collaborative learning activity
Review for third exam
End Prog3, Sprint 2
|
|
Program 3 Code and
Sprint Report
|
21
|
Monday November 4
|
Third Exam
|
|
|
22
|
Wednesday November 6
|
Discussion of results of third exam
Hints on implementing and testing
programming assignment 4
Sorting Algorithms
Bubble Sort
Insertion Sort
Tree Sort
Selection Sort
Heap Sort
Quick Sort
Merge Sort
End Prog4, Sprint 1
Begin Prog4, Sprint 2
|
Chapter 10.1 & 10.4 and supplemental
material from instructor.
|
DDD Program 3
|
23
|
Monday November 11
|
Instructor's demonstration of programming
assignment 3 and how it was tested.
Sorting Algorithms
Shell Sort
Proxmap Sort
Radix Sort
|
Chapter 10.1 & 10.4 and supplemental
material from instructor.
|
|
24
|
Wednesday November 13
|
Topics in Advanced C++ Programming
Function overloading
Namespaces
Building your own Templates
C++ Standard Library
End Prog 4, Sprint 2
|
Chapter 10.1 & 10.4 and supplemental
material from instructor.
|
Program 4 Code and
Sprint Report
|
25
|
Monday November 18
|
Topics in Advanced C++ Programming
Handling exceptions
Run time type identification
Threading
|
Supplemental material from
the instructor.
|
|
26
|
Wednesday November 20
|
Topics in Advanced C++ Programming
C/C++: Header files
C/C++: The C Preprocessor
|
Supplemental material
from instructor
|
DDD Program 4
|
27
|
Monday November 25
|
Instructor's demonstration of programming
assignment 4 and how it was tested.
Catch Up
If we have fallen behind in the schedule
this day is here to catch up. If we are on
track or ahead of schedule other interesting
topics will be covered but not included on
the final exam.
|
Supplemental material
from instructor
|
|
--
|
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
|
|
|
Wednesday, December 11
6:30 - 9:00 p.m.
|
Final Exam
|
Final exam will be
comprehensive
|
|
* 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
-
Responsibilities of the teacher
-
Provide a detailed syllabus. This syllabus
should list office hours, course objectives,
textbooks, references, prerequisites, and
grading policy/method of assessment.
-
Come to class prepared, on time, and make
full use of the class time.
-
Provide timely and adequate feedback on
grades. Return graded material promptly.
-
Conduct final exam at the time designated
in the class schedule.
-
Not assign new work (i.e. not listed on
syllabus) that is due in last two weeks of
classes.
-
Avoid leaving the examination room without
a proctor. Provide paper for exams.
-
Make reasonable use of the assigned textbook.
-
Check students have proper prerequisites.
Instructor does not waive assigned
prerequisites.
-
Report all incidences of academic misconduct (cheating)
to the Department Head and Vice President for Student
Affairs.
-
Responsibilities of the student (see also, Student
Handbook Article II)
-
Come to class with the proper prerequisites,
well prepared, on time, and make full use
of the class time.
-
Provide adequate notice of anticipated
absences and take full responsibility for
finding out about missed work, announcements,
and assignments.
-
Submit assessment material on time and
submit only your own work (see Integrity).
-
Do not allow other students to copy your
work.
-
Read and understand the syllabus and follow
announced policies.
-
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.
-
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..
-
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.
-
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/
-
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.
-
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.
-
Do not communicate with other students. Talk
only to the instructor.
-
Whenever you leave the exam room turn in
your exam.
-
Use only the paper provided by the
instructor for all writing.
-
If assigned a specific seat, remain in that
seat.
-
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.
|
|