Following Stevens' guidelines on the coronavirus emergency (COVID-19), all course materials will be offered online, starting Mar 11.

Instructor Susan (Xueqing) Liu (xueqing.liu AT stevens DOT edu)
Meeting
Susan's Office Hour
CAs
Recitations

Class Description

This course is an introductory-level course for preparing undergraduate students at Stevens with the fundamental knowledge on data structures. Data structures are ways to organize information in the computer memory, making it more efficient to store, update and retrieve information. Upon finishing the course work, students are expected to achieve a good understanding on data structure, object-oriented programming, algorithm efficiency, etc; they should be capable of implementing basic data structures including lists, stacks, queues, binary trees, as well as fundamental algorithms including sorting, Hashing, and self-balancing trees. We will use the Java programming language throughout the course. The students are expected to be practice a significant amount of coding, in both computer and paper. This course has a prerequisite course CS 115 (Introduction to CS) and a co-requisite course CS 135 (Discrete Structures).

Learning Goals: Upon successful completion of this course, students should be able to:

  • (Abstract Data Types): Understand the role of abstract data types in data structures, being able to use UML to represent ADTs;
  • (Complexity): Derive Big-O notations for diverse non-recursive algorithms and use it to estimate the computational complexity of algorithms;
  • (Collections): Understand the how to use the Collection class, including Lists, Stacks and Queues;
  • (Trees): Implement Binary Search Trees, Max/Min Heaps, Priority Queues in Java, and understand the basic concepts of self-balancing trees;
  • (Sets and Maps): Understand how to use sets and maps;
  • (Sorting): Implement the algorithms of basic sorting algorithms in Java;
  • (JUnit): Use JUnit to test projects;

Textbook: Objects, abstraction, data structures and design using Java. Elliot B. Koffman and Paul A.T. Wolfgang.

Schedule

Note: some slides require password, you can find the password from the home page in Canvas

Date Slides/Readings Code Recitation Homework/Exams
Week of Jan 21 Eclipse installation:
  • RE: Joshua, RF: Bhagyesh
  • Bhagyesh's slides
Quiz 1
Week of Jan 27
  • Inheritance/ADT slides
  • Overriding/overloading/Polymorphism slides
  • Casting slides
  • Reading: Chapter 3
Java OOP:
Week of Feb 3
Algorithmic efficiency:
  • RE: Joshua (quiz 2 feedback)
  • RF: Revathy (quiz 1 feedback)
  • Jnit, Java
Week of Feb 10
  • Big-O notations (cont.) slides
  • Lists slides
  • Reading: Chapter 2 and 4
More on two sum, list:
  • RE: Joshua
  • RF: Revathy
  • Homework 1 due
  • Homework 2 out
  • Quiz 3
Week of Feb 17 Ordered-linked lists:
  • RE: Joshua
  • RF: Bhagyesh (quiz 3 feedback)
Week of Feb 24
  • Stack: interface/application slides
  • Stack: implementation using linked lists slides
  • Reading: Chapter 5
Quiz 4 retake (on laptop):
  • RE: Joshua
  • RF: Bhagyesh
Week of Mar 2 Review for midterm:
Week of Mar 9
  • Midterm part 1
  • Midterm part 2
  • Recursion slides
Feedback for Midterm Part 2:
  • RE: Joshua
  • RF: Susan
  • Midterm part 2: Mar 9
  • Midterm part 1: Mar 11 (Canvas / Quizzes / Midterm Part 1)
Week of Mar 23 Optimality of Huffman Tree:
  • RE: Joshua
  • RF: Revathy
  • Homework 4 out
Week of Mar 30 Quiz 5:
  • Homework 3 due
  • Quiz 5
Week of April 6
  • Homework 5 out
Week of April 13 Merge sort:
  • Quiz 6
Week of April 20 Bloom filter:
  • Homework 4 due
Week of April 27
  • Quiz 7 (Monday)
  • Unfinished topics (Hashing/BFS) slides
  • Review for endterm/final
    Review for final
  • Quiz 7
Week of May 4
  • Endterm (takehome, Sunday - Tue)
  • Review for final (Wed)
  • Endterm: Sun - Tue
Week of May 11
  • Final exam (May 16 2 hour or so within 1:00-5:00)
  • Homework 5 due

Final Grade Calculator

Homework30%
In-class quizzes10%
Midterm20%
Endterm 20%
Final 20%

Policies

Late Policy: submit within 24 hours of deadline - 90%, within 48 hours - 70%, over 48 hours - 0 point, 0 if code not compile

Academic Integrity: Students must follow the instructions from the (Stevens Honor system). This course will have a zero-tolerance policy regarding plagiarism. You should complete all the assignments and quizzes on your own. You can help your classmates with questions such as how to use the programming language, what the library classes or methods do, what the errors mean, and how to interpret the assignment instructions. You are encouraged to come to both the instructor and the CAs' office hours regarding any questions you have, or email your questions to both the instructors or the CAs. However, you may not give or receive help from others (except the CA) with the actual implementation or answers for any of the assignments or tests. Do not show or share your code with others, and do not view or copy source code from others. For the same reason, you are not allowed to copy and paste a code snippet you found online in the assignments. All electronic work submitted for this course will be archived and subjected to automatic plagiarism detection. Whenever in doubt, please seek clarifications from the instructor. Students who violate the academic intergrity principle of Stevens will be immediately reported to the department and the school (which could leave a permanent mark on the transcript).

If you need special accommodations because of a disability, please contact the instructor through emails.

Thanks to Prof. Gang Wang for the website template