CSC 2421 Data Structures and Program Design
Instructor: Dr. Min Choi
Office: Lawrence St. Center LW812
Phone: (303)315-1404
Office Hour: M 2:30-3:30PM W 2-3:30PM
Teaching Assistant: Hawkar Oagaz (hawkar.oagaz at ucdenver.edu)
TA Office Hour: Thu 3-4PM.
Catalog Description
Topics include a first look at an algorithm, data
structures, abstract data types, and basic techniques such as sorting,
searching, and recursion. Programming exercises are assigned through the
semester.
Prerequisites: CSCI 2312
Expected Knowledge/skills at the beginning of this
course
- Basic understanding of Object Oriented Programming
in C++
- File I/O and stream process
- Dynamic classes and value semantics
- Polymorphism and virtual functions
- Exception handling
Expected Knowledge/skills at the end of this course
- Solid understanding in specifying, designing and
implementing common data structures
- Container classes
- Linked list
- Standard Template Library
- Stack and queue
- Trees
- Hashing
- Sorting
The
material presented in this course can be used to assess the following
multiple program outcomes, as specified by the measurable outcomes criteria:
(a) an ability
to apply knowledge of mathematics, science, and engineering
(b) an ability
to analyze a problem, and identify and define the computing requirements
appropriate to its solution
(c) an ability
to design and conduct software and/or hardware experiments, as well as to
analyze and interpret data
(f) an ability
to identify, formulate, and solve computer science and engineering problems
(l) an ability
to use the techniques, skills, and modern tools necessary for computer
science and engineering practice
Course Objectives:
- Obtaining a solid foundation in specifying, designing, implementing,
and using widely used data structures
- Learning fundamentals in object oriented software development
- Learning basic algorithms
- Learning how to choose and apply appropriate data structures
Topics:
- Abstract Data Type
- Container classes
- Recusion
- List, linked list
- Templates
- Standard template library
- Stack and queue
- Tree structures
- Graph
- Searching
- Sorting
Textbook:
Recommended books:
-
The C++ Programming Language Third Edition,
Bjarne Stroustrup, Addison Wesley ISBN:0-20188954-4
-
Effective C++ CD by Scott Meyers, Addison
Wesley ISBN: 0-201-31015-5
Course Outline:The following is the tentative schedule for this course and it is subject to change. That being said, I will try my best to keep to it. Any changes will be reflected on this course's Canvas page.
Week
|
Topic
|
Reading
|
Assignments
|
week 1 |
Introduction to Data Structures
Abstract Data Type
ADT and C++ Classes
C++ programming and computing environments
|
Chapter 1
|
Pre-req Exam due |
week 2 |
Algorithm analysis and Efficiency
Containers
C++ fundamentals
Functions, Constructors,
Namespaces
Operator Overloading
|
Chapter 10
|
HW1 |
week 3 |
Recursion
|
Chapter 2 |
HW2 |
week 4 |
Dynamic Array / Vector Implementations
Standard Template Library Vector, List
Standard Template Library Iterators |
Chapter 3
Chapter 8
Chapter 9
C7.1 - C7.2 |
HW3 |
week 5 |
Linked List |
Chapter 11
Chapter 4 |
HW4 |
week 6 |
Double Linked List
|
|
HW5 |
week 7 |
Stacks |
Chapter 6
Chapter 7 |
|
week 8 |
Queue
Practical Uses of Stacks, Queues |
Chapter 13
Chapter 14 |
HW6 |
week 9 |
Trees / Binary Search Trees
|
Chapter 15 |
HW7 |
week 10 |
Final Project Review
Tree Implementation |
Chapter 16 |
|
week 11 |
Heaps
STL Priority Queue and Heap |
Chapter 17 |
HW8 |
week 12 |
Hashing
|
Chapter 18 |
HW9 |
week 13 |
Balanced Search Trees
AVL – Trees / Red Black Trees
STL Map and Multimap class
|
Chapter 18 |
HW10 |
week 14 |
Graphs
|
Chapter 20 |
|
week 15 |
Putting it all together for Finals
|
|
|
week 16 |
Finals |
|
|
Communication with the Instructor
The easiest
way to reach me is always Piazza or email. However, I am happy to meet with you face-to-face (zoom).
This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. But if you prefer to send an email to me, that's fine as well. If you have any problems or feedback for the developers, email team@piazza.com.
Find our class page at: https://piazza.com/ucdenver/spring2021/csci2421e01/home
Please note, address email to min.choi@ucdenver.edu with the header CSCI2421.
By sending it to this address with the header, my mail filters will place
your emails in a designated spot so I can ensure the fastest response! Do
not forget to identify yourself with your full name and course number. As a general policy, I will try my best to respond to all emails within 24
hours. Typically, I can respond to emails within a few hour.
Because this is an online course, it is up to each student to be sure to
address questions, comments and concerns to me in a timely manner. Likewise,
I will work to quickly answer your questions and ensure you have the
information you need to be successful in this course!
All students are responsible for keeping all contact information up to date
with the University. University policy is that email is the preferred form
of contact. If you do not update your email address, you will be missing
important information from the College.
Attendance/Work Completion Policy
Because this is an online class with no required
meetings, you are free to complete the work on your own schedule.
However,
every assignment work is due by the due date and time. You should expect to spend around 8 hours per week on this course. This
includes the time you will need to complete the readings, as well as any
discussion work that week. Do not expect to succeed in this course if you do
not allocate sufficient time in a week for this class.
Late work is accepted entirely at the discretion of the instructor on special circumstances given all
the supporting documents. Typically any work accepted late will be graded down 10% per
24 hours within 7 days.
Completing assignments on time is critical to your success in the course. In the case that you will not be able to complete work the week it will be
due, please contact the instructor to see if other arrangements are
possible.
Grading Policy:
Grading is intended to assess both the effort and the performance of the
student in the class. A student's final grade in this course will reflect
the quality written communication in expressing an understanding of course
concepts.
Because this is an online course and most assignment will be C++
programming, the quality of your code and written document is important. You
will be assessed both on the content and the quality of your code and
documents including comments in the source code. In general, you will not be
evaluated on the length of your writing. So, excessively more frequent
contributions to discussion lists or longer papers will not improve a grade
if the ideas expressed are not clear and properly written at college level.
Course grades will be based on about 10 homework
assignments, and a final
project
- Homework 60%
- Final 35%
- Participation 5%
Class participation in the threaded discussion is important for an
interactive online course. Good articles, such as an inspiring question or a
good answer to questions will get extra credits.
The total accumulated score in 100 scale
based on the above percentages will be used for letter grades as follow
90~100 A
80~89.9 B
70~79.9 C
60~69.9 D
0 ~ 59.9 F
I will give pluses or minuses on the borderline cases. The letter grade guideline
can be adjusted slightly based on the curve.
Technical Requirements
Students are responsible for
maintaining or accessing a computer system capable of participating in all
aspects of this course. This includes, but is not limited to, running the
eCollege software, Flash and Web browsing.
A Windows PC, Macintosh or equivalent is required to access all of the
course material.
While a broadband connection to the Internet is not required for this course
it is highly recommended that you access the course with a DSL or cable
modem.
If for any reason you are having technical difficulties that are limiting or
preventing your full participation in the class, please notify the
instructor immediately! I will work with you to ensure that your online
learning experience is not hampered by technical issues.
Etiquette and Conduct
An online class requires a
significant amount of writing through emails, assignments and group
discussions. You should remember that your written comments to others,
whether in private emails or public discussion groups, should reflect the
same sort of courtesy you would use in spoken communication. This includes
strict avoidance of sexist, racist or other derogatory language. Also, keep
in mind that in written communication it is very difficult at times to
determine tone. A playful jab verbally can be read as a harsh criticism in
an email.
You are responsible for the content of your writing. Please be aware that
you have the responsibility to keep your communication civil, friendly and
professional.
Programming language and computing
environments:
Program source codes and/or examples in lectures will
be given in C/C++. For homework and programming assignments only C/C++
should be used.
Computing facilities are available at LW 8th floor PC
and Mac Lab. There
are many PCs equipped with MS and GNU
compilers and debuggers. The official platform for this course is csegrid.ucdenver.pvt, a Unix(Linux) with GNU C++ compiler and
libraries. All homework assignments will be tested and graded on this
platform.
Detailed information is available at
Programming Guidelines.
Academic integrity:
Homework and programming assignments, except when
explicitly specified otherwise, should be done alone. It is reasonable to
discuss general approaches to problem solutions or algorithm design with
other students but the bulk of the work must be done alone. Working out
details, sharing in the write-up or sharing or copying code, regardless of
the amount of copied contents, will be treated as a violation of the
academic integrity rules.
Although cooperative learning among yourselves can be
helpful, you are expected to perform and present your own work.
Copying someone else's assignment or cheating on exams
will not be tolerated and will be handled according to University policies
if found to occur. You are responsible for observing the University's
Student Code of Conduct regarding these matters.
Please refer to CEDC Honor Code
|