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
-
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.
|
|