Data Structures, Fall 2024

Syllabi

Resources

Updates

Acknowledgment

This course site was developed with the generous support of the Brooklyn College Open Educational Resources/Zero Textbook Cost (OER/ZTC) Initiative.

Unless otherwise noted, content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

This course website contains copyrighted materials available only for your personal, noncommercial educational and scholarly use. This site is used in accordance with the fair use provision, Section 107 of the U.S. Copyright Act where allowance is made for “fair use” for purposes such as criticism, comment, news reporting, teaching, scholarship, education and research. Every effort has been made to provide attribution of copyrighted content. If you wish to use any copyrighted material from this site for purposes of your own that go beyond “fair use”, you must obtain expressed permission from the copyright owner. If you are the owner of any copyrighted material that appears on this site and believe the use of any such material does not constitute “fair use”, please contact Moshe Lach to have the content removed, if proven necessary.

This open educational resource was created as part of the CUNY and SUNY 2017-2024 Open Educational Resources Initiatives. Governor Andrew Cuomo and the NY State Legislature awarded CUNY and SUNY $16 million to implement open educational resources to develop, enhance and institutionalize new and ongoing open educational resources across both universities.

Special thanks to the CUNY Office of Academic Affairs, the CUNY Office of Library Services, Brooklyn College Administration, and Professors Frans Albarillo and Miriam Deutch, Coordinators, Brooklyn College Open Educational Resources Initiative. Site design and formatting by Moshe Lach.

Feedback

You may anonymously submit feedback here.

Topic Meetings Links Homework

Unit 1: Java Prerequisites and ADTs

Some prerequisites
  • polymorphism
  • equals and hashCode
  • the Comparable and Comparator interfaces
  • anonymous classes
  • default and static methods in interfaces
  • static factory methods
  • vararg parameters
  • List and ArrayList
  • HW 1 (not graded)
  • HW 2 (on CodeLab; see Blackboard for more information)
ADTs
  • Meeting 3: Thu 9/5 morning and afternoon, repeated Mon 9/9
    • (mostly completing the previous topic, only beginning ADTs)
  • Code
  • Optional reading: Readings 10, 11, 12, and 15 from MIT 6.031
HW 3 (on CodeLab)
Generics
  • generic classes and interfaces
  • generic static methods
  • bounded type parameters
  • wildcards
  • restrictions on generics
The Java Collections Framework
  • primary interfaces
  • iterators
  • unmodifiable collections
  • views
  • abstract collection classes (no time)

Unit 2: Algorithms

Recursion
Searching and sorting
Algorithmic complexity

Unit 3: Data Structures

Dynamic array-based lists
  • Meeting 11b: Tue 10/8 (morning and afternoon), repeated Wed 10/9
Exam 1 (meeting 14)
  • Q&A meetings on Zoom:
  • Section MY9 exam date: Mon 10/21
  • Sections TY9 and TY2 exam date: Tue 10/22
Linked lists
  • HW 5u (ungraded)
  • HW 5g (graded, on CodeLab)
Stacks, queues, and deques
  • HW 6u (ungraded)
  • HW 6g (graded) on CodeLab
Hash tables
Trees HW 8u (ungraded)
Exam 2 (meeting 24)
BSTs and sorted sets and maps
Heaps

Unit 4: Functional-style Programming

Lambda expressions
  • functional interfaces
  • Comparator creation methods
  • using lambdas with the JCF
Streams
Final exam
  • Q&A meetings on Zoom: Thursday 12/12 at 8 pm and Sunday 12/15 at 11 am
  • Section MY9 exam: Mon 12/16 8-10 am in Ingersoll 2127
  • Section TY9 exam: Thu 12/19 8-10 am in Ingersoll Extension 329
  • Section TY2 exam: Thu 12/19 1-3 pm in Ingersoll Extension 329