Data Structures Using Java

Welcome to the main section of our course wiki. Use this as a starting point to access the weekly course schedule, lectures, labs, resources, etc. etc. etc.

  • Professor: Peter Lemieszewski
  • Office: Unfortunately, I do not have an office :( but I will have office hours.
  • Office Hours location: I will generally be hanging around the vicinity of SP309
  • Office Hours: Friday, time TBD... by appointment, and via Zoom
  • Email: pelemieszewski /
  • When - class sessions: Tue/Thu 4:35PM-5:50PM
  • When - lab sessions: Fridays 3:10PM-5:10PM
  • Where: SP 309

An algorithm is the specification of a method to solve a given problem. A data structure is a specific way of organizing data so that it can be used efficiently by an algorithm. This course approaches data structures and algorithms from a practical perspective, using Object-Oriented Programming (OOP), and particularly Java, as a framework to learn and experiment with the concepts being discussed.

Some advice for students. If you have not taken a programming course using Java before, please do not be complacent about the course materials. I recommend that you devote extra time at the start of the course to experimenting and running sample programs, code snippets, etc. Understanding Java programming details in the classroom is not the same as putting the programming details to use in a runnable program. Using Java, including our IDE, is rather different than what you may be used to in cmpu-101. If you have taken a programming course using Java before, please do not be complacent about the course materials. As we develop data structures to add to our //programmer's toolbox//, the complexity of the algorithms can quickly become difficult to master.

Topics covered include:

  • Object-Oriented Programming (OOP)
    • Encapsulation
    • Inheritance
    • Polymorphism
    • The Java programming language
      • OOP in Java
      • Operators
      • Expressions
      • Control flow
      • Testing and debugging
      • Java documentation (Javadoc)
      • Exceptions
      • The collections framework
      • Input/output
      • Graphical User Interfaces (GUI)
  • Abstract data types (ADT)
    • Lists
    • Queues
    • Stacks
    • Maps
    • Trees
  • Data structures
    • Arrays
    • Linked lists
    • Array lists
    • Hash sets
    • Hash maps
    • Tree sets
    • Tree maps
  • Algorithms
    • Searching
    • Sorting
    • String parsing using Finite State Machines (FSMs)
    • Arithmetic expression evaluation
  • CMPU-101

We will be using the Eck book as our primary- and required - text. If you are unfamiliar with using an IDE, the BlueJ book is a good resource. And, if you prefer to use a printed text book (does anyone use a printed textbook anymore?) then Java Precisely is recommended. Check the sidebar for additional resources as the semester progresses.

  • Introduction to Programming Using Java, Version 8.1 by David J. Eck. Online at
  • Objects First with Java - A Practical Introduction Using BlueJ, Sixth Edition by David J. Barnes and Michael Kölling. Optional.
  • Java Preciesly, Second Edition by Peter Sestoft.
  • Java API. Online at
  • Official Java Tutorial. Online at
    • Labs: 15%
    • Homework projects: 35%
    • Midterm: 25%
    • Final exam: 25%

    Class attendance is required. I will take attendance regularly. If you are unable to attend a class or lab session, please let me know; a simple email will suffice. Even if you happen to miss a class/lab session, you are still responsible for all of the information given in class, no matter the form in which it is given.

    Consult this wiki and classmates to find out about any administrative/academic/other information you may have missed.

    Labs will require the use of a computer. Students may elect to use the computers provided by the College or their own if they so prefer.

    Even when not required, students may elect to use computers or other electronic devices for class-related purposes such as note taking.

    The use of electronic devices for non-class related purposes is prohibited. Also, devices must be in silent mode at all times so as to not disturb the class.

    Homework projects shall be used to consolidate and expand upon concepts introduced in class. They will consist of Java programming assignments.

    You can expect a total of 4 projects but there may be more than 4 projects. Expect that each project will be of increasing size and complexity. I may choose to assign an additional (and short) final project. The contribution of each homework assignment to the final grade will be proportional to its size and complexity. Right now, I expect that of the 35 "points" dedicated to homework, homework #1 will contribute 11%, homework #2: 29%, homework #3: 51%, and homework #4: 9%. This can change and I will announce any changes here. Update : here are the point totals: HW1: 10% HW2: 20% HW3: 35% HW4: 35%. The 35 points are distributed as: 3.5/7/12.25/12.25

    All labs, homework projects, and exams should be completed by each student by themselves.

    Please do not cheat. Copying solutions is strictly forbidden.

    Certainly, general discussions of approaches and techniques are allowed.

    • The Quantitative Reasoning Center ( helps students improve their analytical skills pertaining to quantitative subjects.
    • The Writing Center ( helps students improve the clarity and cogency of their writing.

    Academic accommodations are available for students registered with the Office for Accessibility and Educational Opportunity. Students in need of ADA/504 accommodations should schedule an appointment with the professor early in the semester to arrange for said accommodations.

    Vassar College is committed to providing a safe and respectful learning environment for all students. An environment free of all forms of discrimination and harassment, including sexual assault, domestic violence, dating violence, and stalking. Vassar College has staff members trained to support students in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, helping with legal protective orders, and more:

    • Counseling Service (, 845-437-5700)
    • Health Service (, 845-437-5800)
    • Charlotte Strauss-Swanson, SAVP (Sexual Assault and Violence Prevention) director (, 845-437-7863)
    • SART (Sexual Assault Response Team) advocate, available 24/7 by calling the CRC at 845-437-7333
    • The SAVP website and the Title IX section of the EOAA website ( have more information, as well as links to both on- and off-campus resources.

    I would like to thank Professor Rui Meireles and Professor Hannah Gommerstadt. They have developed this course and teach it quite often. In addition, they have graciously shared course materials with me.