Cpt S 122: Data Structures
Fall 2012
Free ACM Tutoring Session Every Saturday, 12:00 - 3:00 pm, in Sloan 353; Free Pizza!!!Free CEA Tutoring: Find Hours Here, Dana 134 - 136 Times: MWF 12:10pm - 1:00pm
Location: TODD 216
Instructor: Nirmalya Roy
Instructor's Office Location and Hours: EME 127, W & F 2:00pm - 3:00pm, or by appointment
Instructor's Email: nroy at eecs dot wsu dot edu
Course Website: http:/eecs.wsu.edu/~nroy/courses/cpts122/
Teaching Assistant: Chris Cain
Office: Sloan 353
Office Hours: Friday 10:00 - 12:00 pm
Email: chris.cain@email.wsu.edu
Teaching Assistant: Shervin Hajiamini
Office: Sloan 343
Office Hours: Tuesday 1:00 - 3:00 pm
Email: shervin.hajiamini@wsu.edu
Teaching Assistant: Matt Hintzke
Office: Sloan 353
Office Hours: Thursday 11:00 - 1:00 pm
Email: matt.hintzke@wsu.edu
Teaching Assistant: Rachel King
Office: Sloan 353
Office Hours: Tuesday 11:00 - 12:00 pm, Thursday 11:00 -12:00 pm
Email: rachel.g.king@email.wsu.edu
Teaching Assistant: Jey Salem
Office: EME 136
Office Hours: Monday 1:30-2:30 pm, Wednesday 1:30 - 2:30 pm
Email: jsalemna@eecs.wsu.edu
Teaching Assistant: Evan Olds
Office: Sloan 339
Office Hours: Thursday 12:00 - 2:00 pm
Email: evan.olds@email.wsu.edu
Course Information – Data Structures, CptS 122 [4 credits]
Course Times & Location: M, W, F 12:10 - 1:00 pm; TODD 216
Lab Location: Sloan 353W (check the WSU building description for more information about the location)
Lab Times:
- Section 01: TU 12:00 – 2:50 pm; TA: Evan Olds
- Section 02: TU 9:10 – 12:00 pm; TA: Matt Hintzke
- Section 03: TU 2:50 - 5:40 pm; TA: Chris Cain
- Section 04: TU 5:40 – 8:30 pm; TA: Rachel King
- Section 05: W 9:10 - 12:00 pm; TA: Jey Salem
- Section 06: TH 5:40 – 8:30 pm; TA: Shervin Hajiamini
Website: CptS 122 - Data Structures - http:/eecs.wsu.edu/~nroy/courses/cpts122/
Course Descriptions:
CptS 122 is a second course ("CS 2") in computer science for majors. In
this course, we use the C/C++ programming languages to explore the
fundamental concepts, constructs, and techniques of modern computer
programming, including data structures, software engineering, and
classes and objects. The primary aim of this course is to refine your
problem solving and programming skills so that you may apply efficient
data structures to real engineering problems. Some of these concepts
include, but are not limited to, the following: Algorithmic
design; Program design and implementation; Algorithm analysis; Data
structure design and implementation; Class design and implementation
etc.
In
this course we will emphasize data structure, software engineering best practices, and
appropriate program design and development. Please see the tentative
topic schedule listed at the bottom of this page. The underlying
applications for this class will include applications ranging from
games and encryption problems to simple compilers.
Course Objectives: At the end of this course, you should be able to:
- Apply and implement data structures;
- Apply and implement several sorting algorithms;
- Analyze algorithmic complexity;
- Design, implement, and test a C/C++ program applying modern tools and technique; and
- Solve problems using the various data structures and algorithms and write programs for their solutions.
Course Prerequisites: Cpt S 121 (Program Design and Development) or an equivalent course.
Course Materials:Required Textbook:
- P.J. Deitel & H.M. Deitel, C: How to Program (7th ed.), Prentice Hall, 2012. ISBN: 9780132990448
Reference Textbook:
- Accelerated C++: Practical Programming by Example, 2000 by Andrew Koenig and Barbara E. Moo
Required Hardware:
A laptop adhering to EECS requirements. Please refer to http://school.eecs.wsu.edu/node/890
Required Software:
Microsoft Visual Studio 2008 (for the programming assignments); Microsoft Visual Studio is designed for Windows machines only. You can download the software for free through the academic alliance that WSU has with Microsoft. You may receive the software for
download through zzusis. Note that Visual Studio runs under Windows
only. If you have a Mac you will need Boot Camp or other software to run Windows and Visual Studio.
C Language Reference: ANSI C Quick Reference
C++ Language Reference: C++ Quick Reference
C Coding Standard: C Standard
C++ Coding Standard: C++ Standard
Live Codes:
We will use live code exercises in class at the end of most of the
lessons to understand the underpinning programming and data structures
concepts, but without investing much time in programming idiosyncrasies.
Course Requirements and Grading:
Quizzes
(the weight of individual quizzes will be based on the number provided; ranging from 0.8-1.2% of your overall
grade)
|
5% |
8 Programming Assignments (the weight of individual assignments will be
based on the number provided and the involvement of each one; ranging
from 4-5% of your overall grade) |
35% |
2 Midterm Exams (10% per midterm) and Final Exam (20%) |
40% |
Labs (there are 13 labs for this course, each one is worth ~1.5% of your overall grade) | 20% |
Quizzes: Quizzes will be given on most Wednesdays to ensure that material presented in lecture is understood. Please refer to the course schedule for quiz dates. All quizzes are written to assess basic understanding of material. Programming Assignments: You will be given between 7 and 8 programming assignments to complete. Each one of these has been well thought-out and will guide you through solving a problem. I really hope that you view these assignments as a guide for learning the material and achieving the objectives presented in lecture. Also, note that all C/C++ code written in assignments must adhere to the recommended C Style and Coding Standards or recommend C++ Coding Standards; your TA will let you know if you are not adhering to these standards. Please upload assignments as attached .zip files to the corresponding "drop box" in ANGEL. Recall the site is https://lms.wsu.edu/. Please refer to the schedule for assignments and dates. All programming assignments must be submitted by midnight of the due date.Exams: There
will be two midterm exams and a final exam for this course. These are
closed-notes, closed-books exams. You must take the exams at the
official time and place. The exam coverage is cumulative, i.e.
materials from the beginning of the course may be tested in
either midterm or final exam. You may use calculators but not
computers. By enrolling in this course, you are agreeing to the
homework and project due dates and exam schedules above. Forming or
joining a study group is highly recommended to prepare for an
exam. The first midterm exam will be held during the sixth week of
class (Friday, September 28) and
the other will be held during the twelfth week of class (Monday,
November 5). All midterm exams will be held during the class (50
minutes). The final exam will be held on Wednesday, December 12, 1:00
pm - 4:00 pm in our normally schedule classroom. You will NOT be allowed to use “cheat” sheets in this course. You need to be more accountable for retaining the information taught in the course.Labs: You will be given 13 labs to complete. Each lab will give you hands-on experience with using the C/C++ language to solve multiple problems. These weekly lab assignments also give you the opportunity to put into practice the techniques and concepts covered in the lectures under the supervision of a trained and knowledgeable teaching assistant. You are encouraged to share ideas with your peers in lab! Take advantage of learning from each other! You will receive full credit for a given lab if (a)
you show up and actively participate in the entire lab by making a
sincere effort to complete all of the problems; and (b) you make a sincere effort to assist other students with the lab in the event that you finish before them. Hence, you are awarded credit in lab for participation and effort. You may make up some labs if you have an excuse that is acceptable as determined by the instructor and/or TA. If a lab happens to fall on a holiday, then you are expected to complete the
lab on your own or attend another lab section for that week. You are
responsible for ensuring you receive appropriate credit from your TA for these special circumstances.Participation: You
are expected to attend and participate in lectures and laboratories
regularly. Attendance may positively affect your grade at the end of the semester.
Contesting a Grade:
If you believe that a mistake has been made with grading an assignment
or exam, please speak with the instructor or TA within 2 days of the
assignment or exam being returned. Do not wait until the end of the
semester to discuss any grade changes. You need to constantly be aware
of how you are performing in the class. Thus, there will not be any
surprises at the end of the semester when grades are to be formally
submitted. You should be able to view your grades via ANGEL. These will
be updated bi-weekly. NOTE: the grades in ANGEL may just be raw scores
and not be weighted according to the ones described above. Thus, be
sure that you keep track of these weights so that you are not surprised
by a change in your overall grade at the end of the semester.
Tentative Course Schedule:
(Subject to change as the semester progresses)
Week |
Date |
Topic |
Reading |
Notes | Live Codes | Assignments | Due Dates and Solutions |
1 |
8/20 |
Introduction |
Course Syllabus |
PPT, PDF | | No Lab this Week! | |
|
8/22 |
Review Functions |
D.D 5.1 to 5.5 |
PPT, PDF | Review C | | |
|
8/24 |
Review Functions |
D.D 5.6 to 5.9; 5.12 |
| | Programming Assignment1 (PA1) | |
2 |
8/27 |
Recursion |
D.D 5.14 to 5.16 |
PPT, PDF | | Lab 1 | |
|
8/29 |
Pointers |
D.D 7.2 to 7.5 |
PPT, PDF | Pointers | | |
|
8/31 |
Pointers |
D.D 7.7 to 7.10 & 7.12 |
| | | |
3 |
9/03 |
No Class (Labor Day) |
|
| | Lab 2 Lab2Codes | |
|
9/05 |
Code Review (Pointers) |
|
| | PA2, Quiz 1 | PA1 Quiz1 Solution |
|
9/07 |
Characters and Strings |
D.D 8.2 to 8.10 |
PPT, PDF | | | |
4 |
9/10 |
Linked Lists |
DD 12.1 to 12.4 |
PPT, PDF | | Lab3 | |
|
9/12 |
Linked Lists |
|
| | | |
|
9/14 |
Stacks |
DD 12.5 |
PPT, PDF | | PA3 | PA2 |
5 |
9/17 |
Stacks/Queues |
|
PPT, PDF | | Lab 4 | |
|
9/19 |
Queues |
DD 12.6 |
| | Quiz 2 | Quiz2 Solution |
|
9/21 |
Trees |
D.D 12.7 |
PPT, PDF | | | PA3 |
6 |
9/24 |
Trees |
|
| | Lab 5, PA4 | |
|
9/26 |
Review |
Exam1 Review |
PPT, PDF | | | |
|
9/28 |
Midterm Exam 1 |
|
| | Partial Midterm1 | |
7 |
10/1 |
Classes & Objects |
D.D 15.1 to 15.7 |
PPT, PDF | | Lab 6 | |
|
10/3 |
Classes & Objects |
D.D 15.8 to 15.13 |
PPT, PDF | | PA5 | PA4 |
|
10/5 |
Classes & Objects |
D.D 16.1 to 16.7 |
| | | |
8 |
10/8 |
Classes & Objects |
|
| | Lab 7 | |
|
10/10 |
Classes: A Deeper Look, Part I |
D.D 17.1 to 17.10 |
PPT, PDF | | | |
|
10/12 |
Classes: A Deeper Look, Part II |
D.D 18.1 to 18.6 |
PPT, PDF | | PA6 | PA5 |
9 |
10/15 |
Inheritance
|
D.D 20.1 to 20.7 |
PPT, PDF | | Lab 8 | |
|
10/17 |
Inheritance/Operator Overloading |
|
| | Quiz 3 | Quiz3 Solution |
|
10/19 |
Operator Overloading |
D.D 19.1 to 19.13 |
PPT, PDF | | | |
10 |
10/22 |
Operator Overloading /Polymorphism |
|
| | Lab 9 | Lab9 QA |
|
10/24 |
Polymorphism |
D.D 21.1 to 21.9 |
PPT, PDF | | | PA6 |
|
10/26 |
Polymorphism |
|
| | PA7 | |
11 |
10/29 |
Exception Handling |
|
PPT, PDF | | Lab 10 | |
|
10/31 |
Templates |
|
PPT, PDF | | Quiz 4 | Quiz4 Solution |
|
11/2 |
Review |
Exam2 Review |
PPT, PDF | | | |
12 |
11/5 |
Midterm Exam 2 |
|
| | Lab 11 Partial Midterm2 | |
|
11/7 |
Templatized Linked List |
|
PPT, PDF | | | |
|
11/9 |
Templatized Linked List |
|
| | | |
13 |
11/12 |
No Class (Veterans' Day) |
|
| | Lab 12 | |
|
11/14 |
BigInt Implementation
|
|
| | | |
|
11/16 |
Templatized Stack |
|
PPT, PDF | | Quiz 5, PA8 | PA7 due on 16th Nov. Quiz5 Solution |
14 |
11/19 |
No Class (Thanksgiving) |
|
| | No Lab due to Thanksgiving | |
|
11/21 |
No Class |
|
| | | |
|
11/23 |
No Class |
|
| | | |
15 |
11/26 |
Templatized Tree |
|
PPT, PDF | | Lab 13 | |
|
11/28 |
Templatized Tree/Queue |
|
PPT, PDF | | | |
|
11/30 |
Sorting/Algorithm Analysis |
|
PPT, PDF | | | |
16 |
12/3 |
Standard Template Library (STL) |
|
PPT, PDF | | No Lab! | PA8 |
|
12/5 |
Abstract Data Type (ADT) with STL |
|
PPT, PDF | | Quiz 6 | Quiz6 Solution |
|
12/7 |
Review |
Final Review |
PPT, PDF | | | |
17 | 12/10 | No Class | | | | | |
|
12/12 |
Final Exam on Wednesday |
1 pm to 3 pm in classroom |
| | | |
Final Exam Schedule: December 12 (Wednesday) 1:00 pm to 3:00 pm in Classroom (TODD 216)
Student Course Evaluations Link: https://skylight.wsu.edu/student
Online Links to C++ Materials:
Wikiversity:
Introduction to C++
C++ Language Tutorial
Acknowledgements: Prof. Andrew S. O’Fallon and Prof. John B. Schneider