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
  • Wed 9-11
  • Zoom meeting for Office hour
CAs
  • Bhagyesh Patel
  • Wed 2-3, link can be found on Piazza/Canvas
  • Huihui Liu
  • OH: Tue 2-4pm, link can be found on Piazza/Canvas
Recitation
  • RE: Fri 1-1:50PM
  • Link can be found in Canvas/Piazza
  • RF: Fri 2-2:50PM
  • Link can be found in Canvas/Piazza

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 Assigned reading/HackerRank questions
Week 1 of Feb 1 Eclipse installation
Appendix A
Week 2 of Feb 8
  • Overriding/overloading/Polymorphism slides
  • Quiz 1, JUnit
  • Casting, exceptions, packages slides
Review Quiz 1
  • Chapter 3: Inheritance and class definition
  • Chapter 2: Program correctness and efficiency
Week 3 of Feb 15
  • Presidence day
  • Big-O notations slides
  • Quiz 2
GradeScope Training
Chapter 2.8: Efficiency of algorithms
Week 4 of Feb 22 Review of Quiz 3
  • Chapter 4: Lists
  • Homework 1 due Feb 27
Week 5 of Mar 1 No recitations
  • Chapter 4: Lists
  • Chapter 5: Stack
Week 6 of Mar 8
  • Quiz 4
  • Mid-semester, no class on Wed
  • Stack 2 slides
Review of Quiz 4
  • Chapter 5: Stack
Week 7 of Mar 15
  • Queue: interface/application slides
  • Recursion slides
  • Review for Midterm
Review for midterm
  • Chapter 6: Queue
  • Chapter 7: Recursion
  • Homework 2 due Mar 17
Week 8 of Mar 22
  • Binary tree/BST (guest lecture by Jay Lim)slides
  • Midterm
  • Huffman tree/BST slides
Review of homework 2
  • Chapter 8: Trees
Week 9 of Mar 29 No recitation
Week 10 of April 5 Review of Quiz 5
  • Homework 3 due April 9
  • Chapter 8: Trees
Week 11 of April 12
  • Self-balancing tree slides
  • Selection/Bubble/Insertion sort slides
  • Review of homework 3
  • Chapter 11: Self-balancing trees
Week 12 of April 19 Review of Quiz 6
  • Chapter 10: Sorting
Week 13 of April 26 Review for the final
  • Chapter 9: Sets and Maps
  • Homework 4 due April 30
Week 14 of May 3
  • Quiz 7
  • Review for endterm
  • Review for final
    Review for Quiz 7
Week 15 of May 10
  • End term
  • Review of homework 4
  • Endterm: Sun - Tue
Final Exam
  • 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