Behnam Dezfouli’s Home Page

Santa Clara University

COEN 70 / COEN 70L   |   Fall 2016

Formal Specification and Advanced Data Structures

Department of Computer Engineering, Santa Clara University, California

Class meeting time: 12:10PM - 1:50PM Tuesday & Thursday | Alameida Hall 103



Dr. Behnam Dezfouli

Email: bdezfouli [AT] scu [DOT] edu

Office: Bannan Engineering, Level 3, Room# 323C

Office Hours: Tuesdays: 3:00PM - 5:00PM | Thursdays: by appointment

Phone (Office): 408.551.1634 (x1634)



Teaching Assistant:

Jesse Harder

Email: jhharder [AT] scu [DOT] edu

Office Hours: Monday 12:00PM – 2:00PM   #608B


Main Book:

Data Structures and other Objects using C++, by Michael Main, Walter Savitch, 4th Edition


Supplementary Book:

Data Structures and Algorithm Analysis in C++, by Mark A. Weiss, 4th Edition


• The lectures slides are provided by the instructor (refer to Camino)


Prerequisites: A grade of C- or better in either COEN 12 or CSCI 61 and in either COEN 19 or MATH 51. Co-requisite: COEN 70L

Changes to Syllabus: Any additions or modifications will be posted to Camino.



Student Evaluation: 


COEN 70L: 

• 10 points: Attendance

• 90 points: Projects

o 20 points: Commenting and style

o 70 points: Correctness

You can discuss with other groups during the lab hours for debugging assistance. However, all changes to your code must be made by you. You are not allowed to share your solutions with other groups. You are allowed to share code with your group members. If you are aware of students violating this policy, you are encouraged to inform the TA and the professor of the course.


Lab grade does not directly affect the course grade. However, the material covered in the lab is meant to reinforce the material presented in class.



COEN 70: 

• 20 points: Assignments (see details below)

• 40 points: Midterm Exam (Date: 11/03/2016 - During the class hours [no exception])

• 40 points: Final Exam (Date: 12/6/2016, Tuesday - 1:30PM - 4:30PM  Alameda Hall 103)

• 10 extra credit points: Based on class activity (answering questions, giving presentation) (see details below)

Total: 110 points


Assignments: There will be three assignments:

•    Assignment 1: 6 points

•    Assignment 2: 7 points

•    Assignment 3: 7 points

Note: Assignments are to be done individually. Copying someone else's work or sharing solutions is considered as cheating.

No late submission is accepted. It is your responsibility to check each assignment’s due in Camino.


Extra Credit Points: At the end of each class session, you can talk to the professor to claim your extra credit points. For each class session, at most 0.25 points can be claimed if you have actively participated in class discussions. A presentation in the class can result in up to 5 extra credit points, depending on the topic, preparation of slides, quality of presentation, etc. Discuss with the instructor for more information.


Research Opportunity (Optional): If you are interested to work on a research project, discuss with the instructor to find out about possible opportunities. This is considered as a part of your course grade.



• Midterm: The midterm will be a closed-book exam covering all material up to that point in the course.

• Final: The final exam will be a closed-book exam, covering material from the whole quarter, with emphasis on the second half of the course.

Make-up exams: Make-up exams will be offered only if you have valid reasons, provided you have acceptable documentation for missing an exam. Not knowing the correct date, time or location of an exam are not valid reasons for missing an exam.

Re-grading: If you think that your assignment has been mis-graded and deserves a regrading: see the class TA first, and then the instructor, if you are unhappy with the TA's response.


Grades will be based on absolute scores, and there will be no curve.

If the highest achieved final grade is less than ‘A’, then the final grades will be shifted so that the highest grade will be ‘A’.




The outline of this course is as follows:



•    The Phases of Software Development

o    Specification, Design, and Implementation

o    Time Analysis

o    Testing and Debugging

•    Abstract Data Types and C++ Classes

o    Classes and Members

o    Constructors

o    Using a Namespace, Header File, and Implementation File

o    Classes and Parameters

o    Operator Overloading

o    The Standard Template Library and the Pair Class

•    Container Classes

o    The Bag Class

o    Interactive Test Programs

o    The STL Multiset Class and its Iterator

•    Pointers and Dynamic Arrays

o    Pointers and Dynamic Memory

o    Pointers and Arrays as Parameters

o    The Bag Class with a Dynamic Array

o    Prescription for a Dynamic Class

o    The STL String Class

•    Linked Lists

o    A Fundamental Node Class for Linked Lists

o    A Linked-List Toolkit

o    The Bag Class with a Linked List

o    Dynamic Arrays versus Linked Lists vs. Doubly Linked Lists

o    STL Vectors versus STL Lists vs. STL Deques

•    Software Development with Templates, Iterators, and The STL

o    Template Functions

o    Template Classes

o    The STL’s Algorithms and Use of Iterators

o    The Node Template Class

o    An Iterator for Linked Lists

o    Linked-List Version of the Bag Template Class with an Iterator

•    Stacks

o    The STL Stack Class

o    Stack Applications

o    Implementations of the Stack Class

o    More Complex Stack Applications

•    Queues

o    The STL Queue

o    Queue Applications

o    Implementations of the Queue Class

o    Implementing the STL Deque Class

•    Trees

o    Introduction to Trees

o    Tree Representations

o    Binary Tree Nodes

o    Tree Traversals

o    Binary Search Trees

•    Balanced Trees

o    Heaps

o    The STL Priority Queue and Heap Algorithms

o    AVL Tree

o    Red-Black Tree

o    B-Trees

o    Trees, Logs, and Time Analysis

o    The STL Map and Multimap Classes

•    Derived Classes and Inheritance

o    Derived Classes

o    Simulation of an Ecosystem

o    Virtual Member Functions and a Game Class


 Students shall study: 

•    The main text book (including “Self-Test Exercises” and the important projects at the end of each chapter)

•    The slides provided by the instructor (Note: The slides include extra materials compared to the main text book)

•    Assignments

•    The lab projects (mostly selected from the end of each book chapter)


Academic Integrity Pledge 

The Academic Integrity pledge is an expression of the University’s commitment to fostering an understanding of -- and commitment to -- a culture of integrity at Santa Clara University. The Academic Integrity pledge, which applies to all students, states:

I am committed to being a person of integrity. I pledge, as a member of the Santa Clara University community, to abide by and uphold the standards of academic integrity contained in the Student Conduct Code

Students are expected to uphold the principles of this pledge for all work in this class.


A student who is guilty of a dishonest act in an examination, paper, or other work required for a course, or who assists others in such an act, may, at the discretion of the instructor, receive a grade of “F” for the course. In addition, a student found guilty of a dishonest act may be subject to sanctions, up to and including dismissal from the University, as a result of the student judicial process as described in the Student Handbook. A student who violates copyright laws, including those covering the copying of software programs, or who knowingly alters official academic records from this or any other institution is subject to similar disciplinary action.


Disabilities Resources   

If you have a disability for which accommodations may be required in this class, please contact Disabilities Resources, Benson 216, as soon as possible to discuss your needs and register for accommodations with the University. If you have already arranged accommodations through Disabilities Resources, please discuss them with me during my office hours. Students who have medical needs related to pregnancy may also be eligible for accommodations.

While I am happy to assist you, I am unable to provide accommodations until I have received verification from Disabilities Resources. The Disabilities Resources office will work with students and faculty to arrange proctored exams for students whose accommodations include double time for exams and/or assisted technology.  (Students with approved accommodations of time-and-a-half should talk with me as soon as possible).  Disabilities Resources must be contacted in advance to schedule proctored examinations or to arrange other accommodations. The Disabilities Resources office would be grateful for advance notice of at least two weeks. For more information you may contact Disabilities Resources at 408-554-4109.


Accommodations for Pregnancy and Parenting 

In alignment with Title IX of the Education Amendments of 1972, and with the California Education Code, Section 66281.7, Santa Clara University provides reasonable accommodations to students who are pregnant, have recently experienced childbirth, and/or have medically related needs. Pregnant and parenting students can often arrange accommodations by working directly with their instructors, supervisors, or departments. Alternatively, a pregnant or parenting student experiencing related medical conditions may request accommodations through Disability Resources.


Discrimination and Sexual Misconduct (Title IX) 

Santa Clara University upholds a zero-tolerance policy for discrimination, harassment and sexual misconduct. If you (or someone you know) have experienced discrimination or harassment, including sexual assault, domestic/dating violence, or stalking, I encourage you to tell someone promptly. For more information, please consult the University’s Gender-Based Discrimination and Sexual Misconduct Policy at or contact the University's EEO and Title IX Coordinator, Belinda Guthrie, at 408-554-3043,  Reports may be submitted online through or anonymously through Ethicspoint

Copyright 2016 - Behnam Dezfouli