graph

EECS 2011, Section E
Fall 2018


Fundamentals of Data Structures

     Lecture Schedule:   T R,  9:30 - 11:00,  CB 121
     Instructor:                Natalija Vlajic
     E-mail:                       vlajic @ cse.yorku.ca
     Office Hours:            T R,  12:00 - 13:00,  LAS 2047

     TAs:                             Pooria Madani (madani @ cse.yorku.ca)

Lassonde_logo



    news

  • Jan 03:  Assignment 3, Final Exam and Overall Final Grades can now be accessed through epost.
  • Dec 19:  Solution to Q3 of Assignment 3 can be found here.
  • Dec 13:  Due to a number of received requests, the submission deadline for Assignment 3 has been changed to Monday, Dec 17, noon! This change is final, and no further extensions will be granted!
  • Dec 09:  The final examination will be held on Thursday, Dec 20, 9:00am (ACW 206). The examination is closed-book and closed-notes. Basic calculators and one-sided cheat-sheet of formulas only! will be allowed. 30% of the questions will be related to the material covered before and 70% to the material covered after the midterm. A sample of an earlier final exam is provided here.
  • Dec 04:  Assignment 2 grades can now be accessed through epost. The assignments can be picked up tomorrow directly from the TA (Mr. P. Madani) during his office hours - Wed, 16:00 - 18:00, LAS 3017.
  • Nov 27:  Assignment 3 is available. Due date: Friday, Dec 14. Your assignment solutions (for Q3) are to be dropped off in the EECS 2011E drop-off box located in the Lassonde lobby. Include with the handed-in materials a print-out of your code for the two programming question (Q1 and Q2). In addition, you must submit via CSE@York's submit utility the soft-copy of your code for Q1 and Q2. To submit your code, you need to: 1) Put all your code files, i.e. java classes, for these two questions into a directory named A3. It is this (entire) directory that you will be submitting. 2) From any PRISM machine, execute the following: % submit 2011E Assignment3 A3. If you need more information on the submit command, run man submit on a PRISM box.
  • Nov 27:  Solution to Q3 of Assignment 2 can be found here.
  • Nov 22:  Teaching/course evaluations will take place on Thursday, Nov 29. Please bring in your devices!
  • Nov 05Assignment 2 is available. Due date: Tuesday, Nov 20. Your assignment solutions (for Q3) are to be dropped off in the EECS 2011E drop-off box located in the Lassonde lobby. Include with the handed-in materials a print-out of your code for the two programming question (Q1 and Q2). In addition, you must submit via CSE@York's submit utility the soft-copy of your code for Q1 and Q2. To submit your code, you need to: 1) Put all your code files, i.e. java classes, for these two questions into a directory named A2. It is this (entire) directory that you will be submitting. 2) From any PRISM machine, execute the following: % submit 2011E Assignment2 A2. If you need more information on the submit command, run man submit on a PRISM box.
  • Nov 01:  Assignment 1 grades can now be accessed through epost. Assignment 1 solutions are also available, as well as a few suggestions from the TA about future assignment submissions.
  • Oct 29:  Midterm grades can now be accessed through epost. Midterm questions and midterm solutions are also available.
  • Oct 16Assignment 1 solutions are available now.
  • Oct 12The midterm examination will be held this coming Thursday (Oct 18), in class. The examination is closed-book and closed-notes, and it will be based on all of the lecture material + exercise questions covered in class up to (and including) the lecture of Oct 16. You are allowed to use a basic calculator. Please arrive 5 min before the official beginning of the class. A sample of a previous midterm is provided here (excluding questions: Q1.10 and Q.4). Solutions for the given midterm can be accessed here.
  • Oct 04Assignment 1 further update! Due date changed to Monday, Oct 15, noon! (after reading week) This is a sharp deadline, and no further extensions will be granted.
  • Oct 02Assignment 1 update! In Q5, you are supposed to provide both - a brief description as well as a Java (or pseudocode) outline of your algorithm.
  • Oct 01Assignment 1 is available now. Due date: Friday, Oct 12, noon. (A hard copy of the assignment should be dropped off in the EECS 2011 Section E drop-off box located in the Lassonde lobby). 
  • Sep 17TA office hours are: Wed, 16:00 - 18:00, LAS 3017, starting Sep 19.
  • Sep 08:  Lecture 1 slides are posted now!
  • Sep 06:  Classes start.




Course Information:
Textbook and Recommended Reading Material
Prerequisite
Course Description
Grading Scheme
Course Schedule

Course Policies:
Late Assignments and Missed Midterm
Academic Honesty



Course Schedule (Topics, Notes, Required Reading, Assignments)

Week
Date
Topic / Notes
Required Reading
Assignments / Important Dates
1
R, Sep 6
Introduction - part I
-


T, Sep 11
Introduction - part II -

2
R, Sep 13
Introduction - part III
Java Primer
textbook, Ch. 1


T, Sep 18
Algorithm Analysis - part I textbook, Sections 4.1 - 4.3

3
R, Sep 20
Algorithm Analysis - part II -||-


T, Sep 25
Algorithm Analysis - part III
Extended Algorithm Analysis - part I
textbook, Sections 5.1 - 5.3
4
R, Sep 27
Additional Exercise
Linear & Binary Search
-||-


T, Oct 2
Binary Search Demo Sites
ADTs and Arrays
textbook, Sections 2.1, 3.1
Assignment 1 (due date: Oct 15, noon! )
5
R, Oct 4
Linked Lists textbook, Sections 3.2, 3.4

Reading Week

T, Oct 16
Stacks textbook, Sections 6.1

6
R, Oct 18
Midterm Exam



T, Oct 23
Queues
Java Generics
textbook, Sections 6.2
7
R, Oct 25
Deques
Array Lists - part I
textbook, Section 6.3
textbook, Sections 7.1, 7.2


T, Oct 30
Midterm Solutions
Array Lists - part II
-||-
8
R, Nov 1
Positional Lists
Sorting
Trees - part I
textbook, Section 7.3
textbook, Sections 8.1 - 8.3


T, Nov 6
Trees - part II
-||- Assignment 2 (due date: Nov 20, noon!)
9
R, Nov 8
Trees - part III (application)
Binary Trees - part I
-||-
textbook, Sections 8.4
Nov 9 - last date to drop course

T, Nov 13
Binary Trees - part II
Binary Trees - part III
Binary Search Trees - part I
-||-
textbook, Sections 10.1, 11.1

10
R, Nov 15
Binary Search Trees - part II -||-

T, Nov 20
Binary Search Trees - part III
AVL Trees - part I
-||-
textbook, Section 11.2

11
R, Nov 22
AVL Trees - part II
Priority Queues
 
Heaps - part I
-||-
textbook, Section 9.1, 9.2, 9.3


T, Nov 27
Heaps - part II
Hash Tables - part I
-||-
textbook, Section 10.2
Assignment 3 (due date: Dec 14, noon!)
12
R, Nov 29
Hash Tables - part II
course evaluations!
textbook, Section 10.2

T, Dec 4
Hash Tables - part III
-----------------------------------------------------------
optional - material not included on the final:
Graphs - part I
Graphs - part II


Thursday, Dec 20, 2018 (9:00 am, ACW 206)




Textbook
    "Data Structures and Algorithms in Java", M. T. Goodrich, R. Tamassia, M. H. Goldwasser, Wiley, 2014, 6th Edition.

Recommended Reading Material
    "Data Structures: Abstraction and Design Using Java", E. B. Koffman, P. A. Wolfgang, Wiley, 2015, 3rd Edition.
    "Object-Oriented Data Structures using Java", N. Dale, D. T. Joice, Ch Weems, Jones & Bartlett Learning, 2018, 4th Edition.
    "Data Structures and Algorithms Made Easy", N. Karamanchi, CareerMonk, 2017, 5th Edition.
    "Java: The Complete Reference", H. Schildt, McGraw Hill, 2014, 9the Edition.
    "Java Illuminated: An Active Learning Approach", J. Anderson, H. Franceschi, Jones & Bartlett Learning, 2016, 4th Edition.
    "Java Programming", J. Farrell, Cengage Learning, 2014, 7th Edition.




Prerequisite

General prerequisites; LE/EECS1030 3.00 or LE/EECS2030 3.00; LE/EECS1028 3.00 or SC/MATH1028 3.00 or LE/EECS1019 3.00 or SC/MATH1019 3.00




Course Description

This course discusses the fundamental data structures commonly used in the design of algorithms. At the end of this course, students will know the classical data structures, and master the use of abstraction, specification and program construction using modules. Furthermore, students will be able to apply these skills effectively in the design and implementation of algorithms.
Topics covered may include the following:
•  Review of primitive data types and abstract data type — arrays, stacks, queues and lists
•  Searching and sorting; a mixture of review and new algorithms
•  Priority queues
•  Trees: threaded, balanced (AVL-, 2-3-, and/or B-trees), tries
•  Graphs: representations; transitive closure; graph traversals; spanning trees; minimum path; flow problems




Grading Scheme

15%  Assignment (3 Assignments - 5% each)
40%  Midterm Exam
45%  Final Exam




Late Assignments and Missed Midterm

Late assignments will not be accepted, unless a prior arrangement is made with the instructor.
Makeups of missed midterm exams are only possible in extremely exceptional situations (such as verifiable medical emergencies) or by arrangement well prior to the exam, provided there is an extremely compelling reason.




Academic Honesty

"The Department takes the matter of academic honesty very seriously. Academic honesty is essentially giving credit where credit is due. And not misrepresenting what you have done and what work you have produced. When a piece of work is submitted by a student it is expected that all unquoted and uncited ideas and text are original to the student. Uncited and unquoted text, diagrams, etc., which are not original to the student, and which the student presents as their own work is considered academically dishonest."
For more see:  Department of Computer Science Academic Honesty Guidelines