2421 Home
Syllabus
Lectures
Homework
Final Project
Programming
Links

 

 

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:

  • Data Abstraction & Problem Solving (Walls and Mirrors) 7th Edition, by Carrano and Henry, ISBN 978-0-13-446397-1

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