CS 23001 CS II: Data Structures and Abstraction
Spring 2020
Instructor: Xiang Lian
Office
Location: Mathematics and Computer Science
Building, Room 264
Office
Phone Number: (330) 672-9063
Web: http://www.cs.kent.edu/~xlian/index.html
Email: xlian@kent.edu
Course:
CS II: Data Structures and
Abstraction
CRN: 12444, 12445, 12446, 12447
Prerequisites: Minimum C grade in CS 13001 (Computer Science I:
Programming & Problem Solving) or CS 13012 (CS IB)
Corequisite: CS 23022 (Discrete Structures for Computer Science) (need
to have taken or be taking the same term)
Time:
2:15pm - 3:30pm, MW
Classroom
Location: Smith Hall (SMH), 110
Course
Webpage: http://www.cs.kent.edu/~xlian/2020Spring_CS23001.html
Instructor's
Office Hours: 10:30am - 1:30pm, MW; or by
appointment
Graduate
Assistants / Lab Instructors:
Debobroto Das Robin (Email: drobin@kent.edu)
Corey Bryant (Email: cbryan20@kent.edu): Office: MSB 152; Office hour: Tuesday 11am-12pm
Ahmed Al-Baghdadi (Email: aalbaghd@kent.edu): Office: MSB 253; Office hour: Tuesday and Thursday
11am-12pm
Section
No. |
CRN |
Time |
Location |
GAs |
001 |
12444 |
T,
12:05pm - 02:00pm |
MSB 162 |
Robin
(Lead), Ahmed |
002 |
12445 |
R,
12:05pm - 02:00pm |
MSB 162 |
Ahmed
(Lead) |
003 |
12446 |
T,
04:25pm - 06:20pm |
MSB 162 |
Robin
(Lead), Corey |
004 |
12447 |
F,
12:05pm - 02:00pm |
MSB 162 |
Corey
(Lead) |
Lab
Website: https://svn.cs.kent.edu/courses/cs23001_lab/svn/index.html
Tutoring
Website: https://www.kent.edu/cs/undergraduate-cs-tutoring
The official
registration deadline for this course is 01/19/2020. University policy requires all
students to be officially registered in each class they are attending. Students
who are not officially registered for a course by published deadlines should
not be attending classes and will not receive credit or a grade for the course.
Each student must confirm enrollment by checking his/her class schedule (using
Student Tools in FlashLine)
prior to the deadline indicated. Registration errors must be corrected prior to
the deadline.
http://www.kent.edu/registrar/calendars-deadlines
For registration deadlines, enter the requested information
for a Detailed Class Search from the Schedule of Classes Search found at:
https://keys.kent.edu:44220/ePROD/bwlkffcs.P_AdvUnsecureCrseSearch?term_in=201680
After locating your course/section, click on the
Registration Deadlines link on the far right side of the listing.
Last
day to withdraw: 03/22/2020
Textbook and Reference Books (optional, not required)
v Data Structures and Other Objects Using C++, Main and Savitch, Addison Wesley
v C++ Plus Data Structures, Dale, Free online access via KSU
library/Safari
v The C++ Programming Language, Stroustrup, B., Addison Wesley
v Practical Debugging in C++, Ford
& Teorey, Prentice Hall
Resources
v There
are a number of C++ books on line (free) through the KSU Library http://kentlink.kent.edu. On Safari, the most similar text book to Main and
Savich is "C++ Plus Data Strutures" by Dale.
v A nice site for visualizations of data structures and
algorithms VISUALGO
v Make
o A
couple examples of multiple files makefiles are in the shared folder in svn.
o Makefile tutorial (under
advanced)
o GNU Make manual
o GNU coding standards
o A
YouTube tutorial on makefiles.
v SVN:
o A
YouTube tutorial on using subversion.
v C++ file IO:
o A
couple useful examples are in the shared folder in svn.
o Google
"c++ file io" will get a number of tutorials and YouTube videos.
v Online
Resources for C++:
o STL
documentation: www.cplusplus.com/reference/stl/.
o https://www.tutorialspoint.com/cplusplus/cpp_useful_resources.htm
v The
Definitive C++ Book Guide and List on Stackoverflow.
This has a number of good books for best practices and advanced topics.
v Tutorial: https://www.lynda.com/ (Sign in with the organization portal)
v Software:
https://apps.kent.edu/SoftwareCatalog
Catalog Description
Computer science concepts and
problem solving focusing on data structure and abstraction. Object-oriented
concepts and programming including encapsulation, information hiding, object
design, generics, polymorphism and an introduction to inheritance. Dynamic
memory structures including dynamic arrays, pointers, linked-lists and the use
of recursion for problem solving. Abstract data types including stacks, queues,
lists, trees and graphs.
Advanced computer programming
design, and development with a primary focus on data structures and abstraction
using an object oriented programming language.
Course Objectives
v Continue developing a disciplined approach to problem
solving methods and algorithm development.
v Provide a clear understanding of the concepts of abstract
data types.
v To teach a number of the basic algorithms and data
structures used in computer science.
v To teach the concepts of object oriented programming.
v To provide a foundation for further studies in Computer
Science.
v On completion of this course, students must have a basic
understanding of the concepts of abstract data types and object oriented
programming methods. Data structures such as lists, stacks, queues, strings,
and trees must be understood. The student will have working knowledge of the
concepts of classes and objects, operator overloading, constructors,
destructors, and generics. The concepts of dynamic data structures and
recursion must be well understood.
Learning Objectives
Students will be able to apply and
compare the basic abstract data structures used in computer science. These
include strings, sets, stacks, queues, lists, and binary trees. Students will
understand and demonstrate their ability to construct abstract data types and
solve problems using an object oriented programming language. This will include
demonstrated understanding of recursion, dynamic memory management, generics,
and operator overloading.
Course Content
Abstract Data Types (ADTs) and
Object Oriented Concepts:
v Definition of ADTs
v Encapsulation and information hiding
v Classes, methods, constructors, and
destructors
v Information hiding: Public, private,
(and protected)
v Operator overloading and
polymorphism
v Generics (templates)
v Inheritance, polymorphism, and
virtual functions (dynamic variable binding)
Dynamic Memory Structures:
v Allocation and de-allocation of
memory (new, delete)
v Dynamic Arrays
v Pointers, Linked Lists (insertion,
deletion, etc.)
Abstract Data Structures &
Algorithms:
v Array, multi-dimensional arrays
records, files, strings
v Lists, stacks, and queues, sets,
bags, vectors
v Containers and iterators
v Infix, prefix, and postfix notations
and conversion algorithms
v Binary trees, binary search trees
v Recursion: Design and implementation
of recursive functions
v Hashing and priority queues
v Brief introduction to graphs &
associated algorithms
Additional Topics:
v Multi-file programs, make
v Testing and debugging techniques
v Exception handling
Tentative Schedule
Week |
Topic |
Notes1 |
Week 1 (Jan. 13) |
Introduction |
|
Week 1 (Jan. 15) |
Abstract Data Types (ADT) and the Class Construct [slides] |
|
Week 2 (Jan. 20) |
-- |
Martin Luther King Jr
Day; No classes |
Week 2 (Jan. 22) |
Classes, Objects, Constructors,
and Operator Overloading [slides] |
|
Week 3 (Jan. 27) |
Compiling, Software Testing,
Identifier Naming [slides] |
Project 1 -
Milestone 1, Due on |
Week 3 (Jan. 29) |
Constructors, Operator
Overloading, I/O, Set ADT |
|
Week 4 (Feb. 3) |
String ADT (1) [slides] |
Project 1 - Milestone 2, Due on Monday, Feb. 3, 9am |
Week 4 (Feb. 5) |
String ADT (2) |
|
Week 5 (Feb. 10) |
Introduce Pointers & Dynamic
Memory [slides] |
Project 1 - Milestone 3, Due on Monday, Feb. 10, 9am |
Week 5 (Feb. 12) |
Pointers, Dynamic Memory, and
Dynamically Allocated Arrays [slides] |
|
Week 6 (Feb. 17) |
Copy constructor, destructor,
assignment, swap Generics - Templates in C++ [slides] Midterm Exam Week
(Lab Sessions) |
Project 2 - Milestone 1, Due on
Monday, Feb. 17, 9am |
Week 6 (Feb. 19) |
Stacks,
prefix, postfix, infix (1) [slides] |
|
Week 7 (Feb. 24) |
Stacks,
prefix, postfix, infix (2) [slides] |
Project 2 - Milestone 2, Due on
Monday, Feb. 24, 9am |
Week 7 (Feb. 26) |
Recursion [slides] |
|
Week 8 (Mar. 2) |
Queues [slides] |
Project 2 - Milestone 3, Due on
Monday, Mar. 2, 9am |
Week 8 (Mar. 4) |
Linked Lists, Stack [slides] |
|
Week 9 (Mar. 9) |
Queue & Linked Lists [slides] |
Project 2 - Milestone 4, Due on
Monday, Mar. 9, 9am |
Week 9 (Mar. 11) |
|
|
Week 10 (Mar. 16) |
Project 3 - Milestone 1, Due on |
|
Week 10 (Mar. 18) |
Containers/Iterators [code (v2)] |
Last Day to Withdraw: 03/22/2020 |
Week 11 (Mar. 23) |
-- |
Mar. 23 - Mar. 29, 2020, Spring Recess; No
Classes |
Week 11 (Mar. 25) |
||
Week 12 (Mar. 30) |
|
|
Week 12 (Apr. 1) |
Binary Trees (1) [slides] [code (v2): btree.h, btree_test.cpp] |
|
Week 13 (Apr. 6) |
Project 3 - Milestone 2, Due on |
|
Week 13 (Apr. 8) |
Backtracking and Recursion [slides] [code: color_map.h,
color_map.cpp, color_map_main.cpp;
data: map.txt] |
|
Week 14 (Apr. 13) |
Inheritance & Dynamic Type
Resolutions [slides] [code: shape.h, shape.cpp] |
Project 3 - Milestone 3, Due on |
Week 14 (Apr. 15) |
Inheritance & Design Patterns
[code: format.h, word_processor.h,
format_main.cpp;
data: quote.txt] |
|
Week 15 (Apr. 20) |
Exceptions [slides] [code: Error.h,
stackerr.h, Stack.h,
error_main.cpp] |
Course Evaluation Project 4 - Milestone 1, Due on |
Week 15 (Apr. 22) |
R-value references [slides] [code: string_rvalue.h] |
|
Week 16 (Apr. 27) |
STL [slides] |
Project 4 - Milestone 2, Due on |
Week 16 (Apr. 29) |
|
|
Week 17 (Apr. 30 - May 7) |
Final Exam (12:45pm
- 3:00pm, Thursday, Apr. 30) |
Project 4 - Milestone 3, Due on |
Academic
calendar: https://www.kent.edu/academic-calendar
Final exam
schedule: https://www.kent.edu/registrar/spring-final-exam-schedule
NOTE: Presentation dates and
deadlines are tentative. Exact dates will be announced in class!!!
Lecture and Lab attendance is a critical component of the
course and is reflected in the final grade. The class participation grade will
be determined in part by attendance along with in class quizzes or assignments.
Additionally, credit will be given participating in online discussion in
piazza. These assignments will be completed during the class period and handed
in during the class. No makeups for in-class assignments will be given. The lab
participation grade will also be derived from attendance and completing
assignments during lab. Grades will be available via your Flashline account on
Blackboard.
25% - Midterm
Exam
35% - Final
Exam
25% - Projects
(4 projects, a part due each week)
5% - Lecture
participation (attendance/inclass and online discussion)
10% - Laboratory
(lab attendance and lab assignments)
Final
Grading Scale:
Scale: |
0% |
60% |
67% |
70% |
73% |
77% |
80% |
83% |
87% |
90% |
93% |
Grade: |
F |
D |
D+ |
C- |
C |
C+ |
B- |
B |
B+ |
A- |
A |
GPA: |
0.00 |
1.00 |
1.30 |
1.70 |
2.00 |
2.30 |
2.70 |
3.00 |
3.30 |
3.70 |
4.00 |
Lab
There is a laboratory associated
with lecture. The lab is to complement lecture and support the application of
materials learned. There will be a lab instructor; attendance and participation
is required. The lab will consist in part of short lectures by the lab
instructor and hands on exercises that will assist in the learning process. For
each lab meeting there will be a score given and is based on attendance and
successful completion of lab exercises.
Lab
Website: https://svn.cs.kent.edu/courses/cs23001_lab/svn/index.html
Lab
Policy: https://svn.cs.kent.edu/courses/cs23001_lab/svn/Info/lab_policy.html
Notes:
Terminal: PuTTy (Windows) or Xcode (Mac)
Host name: wasp.cs.kent.edu or hornet.cs.kent.edu
Projects
There will be four substantial projects given over the
term. These can be completed partially during the lab time, however, the bulk
of the work will be completed outside of lab/lecture time. The requirement for
these assignments will be posted on the course web page. The projects will be
broken down into three to four parts (milestones). Each part will have its own
due date and count as a percentage of the total project grade. Due dates for
each part of the project will be posted on the course website.
After the
deadline of each milestone, you have the right to ask for re-grading your
updated code. You need to send this request to lab instructors on Piazza (via private
post) within one week after the deadline. For each milestone, you only have one
chance for re-grading.
The general topics of the programs will be:
v Abstract
Data Types & Classes
v Dynamic
Memory and Containers
v Linked
lists and templates
v Dynamic
Data Structures (Complex Pointers)
Course Q&A System
piazza
- https://piazza.com/kent/spring2020/cs23001/home
Please ask and answer questions about the labs and
assignments (click on Q & A). ALL course communication should be done using
piazza. You must login to use this. If you did NOT get an invitation by email,
send the instructor a note by email and you will get an invitation.
CS 23001 Course Subversion
Repository
Instructions for the course SVN
repository [here]
General Program Requirements
Instructions for program requirements, assignment
grading and submission [here] - read before
handing in the first assignment.
Attendance in the lecture is
mandatory. Students are expected to attend lectures, study the text, and
contribute to discussions. You need to write your name on attendance sheets
throughout the course, so please attend every lecture.
Students are expected to attend all
scheduled classes and may be dropped from the course for excessive absences.
Legitimate reasons for an "excused" absence include, but are not
limited to, illness and injury, disability-related concerns, military service,
death in the immediate family, religious observance, academic field trips, and
participation in an approved concert or athletic event, and direct
participation in university disciplinary hearings.
Even though any absence can
potentially interfere with the planned development of a course, and the student
bears the responsibility for fulfilling all course requirements in a timely and
responsible manner, instructors will, without prejudice, provide students
returning to class after a legitimate absence with appropriate assistance and
counsel about completing missed assignments and class material. Neither
academic departments nor individual faculty members are required to waive
essential or fundamental academic requirements of a course to accommodate
student absences. However, each circumstance will be reviewed on a case-by-case
basis.
For more details, please refer to
University policy 3-01.2: http://www.kent.edu/policyreg/administrative-policy-regarding-class-attendance-and-class-absence.
No make-up exams,
in-class assignments or quizzes will be given except for university sanctioned excused
absences. If you miss an exam/assignment/quiz (for a good reason), it is your
responsibility to contact me before that date, or soon after the exam/assignment/quiz
as possible.
The University expects a student to
maintain a high standard of individual honor in his/her scholastic work. Unless
otherwise required, each student is expected to complete his or her assignment
individually and independently (even in the team, workload should be
distributed to team members to accomplish individually). Although it is
encouraged to study together, the work handed in for grading by each student is
expected to be his or her own. Any form of academic dishonesty will be strictly
forbidden and will be punished to the maximum extent. Copying an assignment
from another student (team) in this class or obtaining a solution from some
other source will lead to an automatic failure for this course and to a
disciplinary action. Allowing another student to copy one's work will be
treated as an act of academic dishonesty, leading to the same penalty as
copying.
University policy 3-01.8 deals with
the problem of academic dishonesty, cheating, and plagiarism. None of these
will be tolerated in this class. The sanctions provided in this policy will be
used to deal with any violations. If you have any questions, please read the
policy at http://www.kent.edu/policyreg/administrative-policy-regarding-student-cheating-and-plagiarism and/or ask.
University policy 3-01.3 requires
that students with disabilities be provided reasonable accommodations to ensure
their equal access to course content. If you have a documented disability and
require accommodations, please contact the instructor at the beginning of the
semester to make arrangements for necessary classroom adjustments. Please note,
you must first verify your eligibility for these through Student Accessibility Services (contact 330-672-3391 or visit www.kent.edu/sas for more information on registration procedures).
This course may be used to satisfy
the University Diversity requirement. Diversity courses provide opportunities
for students to learn about such matters as the history, culture, values and
notable achievements of people other than those of their own national origin,
ethnicity, religion, sexual orientation, age, gender, physical and mental
ability, and social class. Diversity courses also provide opportunities to
examine problems and issues that may arise from differences, and opportunities
to learn how to deal constructively with them.
This course may be used to satisfy
the Writing Intensive Course (WIC) requirement. The purpose of a
writing-intensive course is to assist students in becoming effective writers
within their major discipline. A WIC requires a substantial amount of writing,
provides opportunities for guided revision, and focuses on writing forms and
standards used in the professional life of the discipline.
This course may be used to fulfill
the university's Experiential Learning Requirement (ELR) which provides
students with the opportunity to initiate lifelong learning through the
development and application of academic knowledge and skills in new or
different settings. Experiential learning can occur through civic engagement,
creative and artistic activities, practical experiences, research, and study
abroad/away.
The
instructor reserves the right to alter this syllabus as necessary.