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:

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:

Course Prerequisites: Cpt S 121 (Program Design and Development) or an equivalent course.


Course Materials:

Required Textbook:

Reference Textbook:

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 1PA1
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

PA3PA2

5

9/17

Stacks/Queues

PPT, PDFLab 4

9/19

Queues

DD 12.6 Quiz 2Quiz2 Solution

9/21

Trees

D.D 12.7 PPT, PDFPA3

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, PDFLab 6

10/3

Classes & Objects

D.D 15.8 to 15.13 PPT, PDFPA5PA4

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, PDFPA6PA5

9

10/15

Inheritance

D.D 20.1 to 20.7 PPT, PDFLab 8

10/17

Inheritance/Operator Overloading



Quiz 3Quiz3 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, PDFPA6

10/26

Polymorphism

PA7

11

10/29

Exception Handling

PPT, PDFLab 10

10/31

Templates

PPT, PDFQuiz 4Quiz4 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, PDFQuiz 5, PA8PA7 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, PDFLab 13

11/28

Templatized Tree/Queue

PPT, PDF

11/30

Sorting/Algorithm Analysis

PPT, PDF

16

12/3

Standard Template Library (STL) PPT, PDFNo Lab!PA8

12/5

Abstract Data Type (ADT) with STL PPT, PDFQuiz 6Quiz6 Solution

12/7

Review

Final Review PPT, PDF
1712/10No 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